Вступ
Я хочу побудувати сходи. Для цього я зібрав із звалища дві довгі дошки з отворами в них, і я хочу помістити сходинки в ці отвори. Однак отвори розміщені не рівномірно, тому кроки будуть трохи химерними, і мені важко оцінити кількість стержня, який мені потрібен. Ваша робота - робити розрахунки для мене.
Вхідні дані
Ваш вхід - це два бітові вектори, подані у вигляді масивів цілих чисел, які представляють дві дошки. A 0
являє собою відрізок одного ауді ( довільна одиниця відстані ) без отвору, а a 1
являє собою відрізок одного ауді з одним отвором. Масиви можуть бути різної довжини і містити різну кількість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