Wprowadzenie
Chcę zbudować drabinę. W tym celu wyrzuciłem ze złomowiska dwie długie deski z dziurami i chcę w nich umieścić stopnie. Jednak dziury nie są równomiernie rozmieszczone, więc kroki będą trochę niepewne i trudno mi oszacować ilość potrzebnej mi wędki. Twoim zadaniem jest wykonanie dla mnie obliczeń.
Wkład
Twój wkład to dwa wektory bitowe, podane jako tablice liczb całkowitych, które reprezentują dwie tablice. A 0
reprezentuje segment jednego audu ( arbitralna jednostka odległości ) bez otworu, a a 1
reprezentuje segment jednego auda z pojedynczym otworem. Tablice mogą mieć różne długości i zawierać inną liczbę 1
s, ale nie będą puste.
Zbuduję moją drabinę w następujący sposób. Najpierw umieszczam dwie plansze dokładnie jeden dźwięk oddzielnie i wyrównuję ich lewe końce. Dla każdego indeksu i
mierzę odległość między i
th otworem pierwszej deski z i
th otworem drugiej deski, wycinam kawałek pręta i mocuję go między dwoma otworami. Zatrzymuję się, gdy skończą mi się dziury w jednej z plansz.
Wydajność
Twój wynik to łączna ilość pręta potrzebna do wykonania kroków, mierzona w audytach. Dane wyjściowe powinny być poprawne do co najmniej sześciu cyfr znaczących.
Przykład
Rozważ dane wejściowe [0,1,1,0,1,1,1,1,0,0]
i [1,0,0,1,1,1,0,0,1]
. Powstała drabina wygląda następująco:
Całkowita długość pręta w tej drabinie to 7.06449510224598
auds.
Zasady
Możesz napisać funkcję lub pełny program. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
[0] [0] -> 0.0
[0] [1,0] -> 0.0
[1,0,0] [1,1,1,1,1] -> 1.0
[0,1,0,1] [1,0,0,1] -> 2.414213562373095
[0,1,1,0,1,1,1,1,0,0] [1,0,0,1,1,1,0,0,1] -> 7.06449510224598
[1,1,1,1,1] [0,0,1,1,0,1,0,0,1] -> 12.733433128760744
[0,0,0,1,0,1,1,0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,0] [0,0,1,1,0,1,1,1,0,0,0,0,0,1,1,0,1,1,0,0,0,1] -> 20.38177416534678