Introdução
Eu quero construir uma escada. Para isso, peguei no ferro-velho duas tábuas compridas com buracos e quero colocar os degraus nesses buracos. No entanto, os furos não são colocados uniformemente, portanto os passos serão um pouco instáveis e acho difícil estimar a quantidade de haste necessária para eles. Seu trabalho é fazer os cálculos para mim.
Entrada
Sua entrada são vetores de dois bits, dados como matrizes de números inteiros, que representam as duas placas. A 0
representa um segmento de um aud ( unidade arbitrária de distância ) sem um orifício e a 1
representa um segmento de um aud com um único orifício. As matrizes podem ter diferentes comprimentos e conter um número diferente de 1
s, mas não estarão vazias.
Vou construir minha escada da seguinte maneira. Primeiro, coloco as duas pranchas exatamente a um aud e alinhe as extremidades esquerdas. Para cada índice i
, medo a distância entre o i
orifício da primeira prancha e o i
orifício da segunda prancha, corte um pedaço de haste e prenda-o entre os dois orifícios. Paro assim que ficar sem furos em uma das tábuas.
Saída
Sua saída é a quantidade total de haste necessária para as etapas, medidas em auditorias. A saída deve estar correta para pelo menos seis dígitos significativos.
Exemplo
Considere as entradas [0,1,1,0,1,1,1,1,0,0]
e [1,0,0,1,1,1,0,0,1]
. A escada resultante fica assim:
O comprimento total da haste nesta escada é 7.06449510224598
auds.
Regras
Você pode escrever uma função ou um programa completo. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
[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