Введение
Я хочу построить лестницу. Для этого я вычистил из свалки две длинные доски с отверстиями в них, и я хочу поместить ступени в эти отверстия. Тем не менее, отверстия расположены неравномерно, поэтому шаги будут немного шаткими, и мне сложно оценить количество необходимого для них стержня. Твоя работа - делать расчеты за меня.
вход
Ваш ввод состоит из двух битовых векторов, представленных в виде массивов целых чисел, которые представляют две платы. A 0
представляет сегмент одного aud ( произвольная единица расстояния ) без отверстия, а a 1
представляет сегмент одного aud с одним отверстием. Массивы могут быть разной длины и содержать разное число 1
s, но они не будут пустыми.
Я построю свою лестницу следующим образом. Сначала я размещаю две доски ровно на одной стороне и выравниваю их левые концы. Для каждого индекса i
я измеряю расстояние между i
отверстием первой доски и i
отверстием второй доски, режу кусок стержня и прикрепляю его между двумя отверстиями. Я останавливаюсь, когда у меня кончаются дыры в одной из досок.
Выход
Ваш вывод - это общее количество стержня, которое мне понадобится для шагов, измеренное в ауд. Вывод должен быть не менее шести значащих цифр.
пример
Рассмотрим входы [0,1,1,0,1,1,1,1,0,0]
и [1,0,0,1,1,1,0,0,1]
. Результирующая лестница выглядит так:
Общая длина стержня в этой лестнице составляет 7.06449510224598
ауд.
правила
Вы можете написать либо функцию, либо полную программу. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Тестовые случаи
[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