introduzione
Voglio costruire una scala. Per questo, ho scavato dalla discarica due lunghe assi con buchi e voglio mettere i gradini in questi buchi. Tuttavia, i fori non sono posizionati in modo uniforme, quindi i passaggi saranno un po 'traballanti e trovo difficile stimare la quantità di canna di cui ho bisogno per loro. Il tuo compito è fare i calcoli per me.
Ingresso
L'input è costituito da vettori a due bit, dati come matrici di numeri interi, che rappresentano le due schede. A 0
rappresenta un segmento di un aud ( unità arbitraria di distanza ) senza un buco e a 1
rappresenta un segmento di un aud con un singolo buco. Le matrici possono avere lunghezze diverse e contenere un numero diverso di 1
s, ma non saranno vuote.
Costruirò la mia scala come segue. Innanzitutto, posiziono le due schede esattamente a un aud di distanza e allinea le loro estremità sinistre. Per ogni indice i
, misuro la distanza tra il i
foro della prima tavola con il i
foro della seconda tavola, taglio un pezzo di asta e lo attacco tra i due fori. Mi fermo quando finisco i buchi in una delle assi.
Produzione
Il tuo output è la quantità totale di canna di cui avrò bisogno per i passi, misurata in auds. L'output deve essere corretto per almeno sei cifre significative.
Esempio
Considera gli input [0,1,1,0,1,1,1,1,0,0]
e [1,0,0,1,1,1,0,0,1]
. La scala risultante si presenta così:
La lunghezza totale dell'asta in questa scala è 7.06449510224598
auds.
Regole
È possibile scrivere una funzione o un programma completo. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
[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