Я заметил, что одометр моей машины был на 101101, когда я пришел на работу сегодня. Это классное число, потому что оно двоичное (и палиндром, но это не важно). Теперь я хочу знать, когда в следующий раз у меня будет бинарное показание одометра. Я не могу прочитать одометр, когда я за рулем, потому что это было бы опасно, поэтому он должен быть двоичным, когда я доберусь до работы или вернусь домой.
По дороге в мой офис и из него идет очень плохое движение, поэтому мне приходится каждый день выбирать разные маршруты.
Для целей этого испытания день - это путешествие в оба конца, и я начинаю с работы на работе.
Вам нужно будет взять начальные показания одометра и последовательность из 10 элементов, представляющих количество миль в одну сторону. Эту последовательность следует повторять до тех пор, пока вы не доберетесь до двоичного показания одометра. Затем вы должны вывести количество дней, необходимое для того, чтобы мы достигли двоичного значения.
И пробег для маршрута и показания одометра будут положительными целыми числами. Количество дней будет либо, x
либо x.5
, поэтому ваш вывод количества дней должен поддерживать число с плавающей запятой в течение половины дня. Если число дней является целым числом, вам не нужно выводить .0
. Одометр всегда в конечном итоге достигнет бинарного состояния.
Любая форма ввода / вывода является приемлемой, и стандартные лазейки запрещены.
Тестовые случаи:
101101, [27, 27, 27, 27, 27, 27, 27, 27, 27, 27] == 165.0
1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100] == 22.5
2, [2, 3, 1, 2, 7, 6, 10, 92, 3, 7] == 2.0
Ответы:
Желе,
221716 байтПопробуйте онлайн!
Как это устроено
источник
Javascript,
6863616052 байта5 байтов от спасибо @ETHproductions .
2311 !! Спасибо, @NotthatCharles .Проверьте здесь.
источник
(i+=a[++m%10])
работать?r
илиm
что-то еще (они должны по умолчанию равны нулю, т. Е. 0)m=0
инициализатор и увеличив его после modulo (m++%10
) ... в этот момент вы можете простоr
полностью отбросить . Весь метод тогда в низких 50-хMATL ,
292625 байтФормат ввода
РЕДАКТИРОВАТЬ (10 июня 2016 г.): следующая ссылка заменяется
v
на&v
( 26 байт ) для адаптации к изменениям языкаПопробуйте онлайн!
источник
Луа, 108 байт
Впервые с помощью цикла repeat..until в Codegolf!
Ungolfed
После первого цикла
o
будет иметь десятичную часть, потому чтоtonumber
я должен был удалить его ... И добавить его для первого случая, поэтому я объединяю его с"."
.источник
Ява, 112
мильбайтовисточник
05AB1E , 31 байт
Код:
Почему-то код не перестает работать (и я не могу понять, почему). Видимо, я забыл, что вместо 2 происходит три цикла, поэтому он все равно попадет в бесконечный цикл ...Попробуйте онлайн!
источник
PowerShell,
8473675957 байтПринимает ввод
$a
и$b
, ожидая,$b
будет явным массивом миль (например,.\binary-car.ps1 1 @(13,25,3,4,10,8,92,3,3,100)
). Затем мы входим вdo
/until
цикл. Каждую итерацию мы увеличиваем$a
с пробегом в$b
позиции,$i++ % 10
чтобы непрерывно проходить через массив. Это начнется с нуля, так как для первого цикла$i
не инициализируется, и поэтому оценивается как$null
, что соответствует0
в этом контексте, и это только после этой оценки++
происходит.Затем
until
заявление проверяет наш номер только0
и1
сначала-replace
ИНГ все1
ничего, отливка , что еще как целое число с+
, а затем принимать булево-не с!
. Если он оценивается как true, мы закончим цикл, выведем$i / 2
и завершим программу.Пояснение к условному циклу - в PowerShell любое ненулевое целое число равно
$true
и любая непустая строка также$true
. Например,231145
(целое число) изменится на"2345"
(строку) после-replace
, который будет2345
приводить к целому числу (целое число), значение!
которого равно$false
. Однако101101
(целое число) изменится на"00"
(строку), которая будет приведена как0
(целое число), значение!
которого равно$true
. Если мы не имеем+
, то"00"
воля!
к ,$false
так как это не пустая строка.Правка - Сохранение 11 байтов путем замены равенства по длине на строго нулевое значение
Правка 2 - Сохранение еще 6 байтов, понимая, что
$b.count
всегда будет10
...Правка 3 - Сохранение еще 8 байтов с использованием do / till вместо для
Правка 4 - Если объект
-replace
d является целочисленным значением, кавычки не нужны, сохраняя еще 2 байтаисточник
Руби, 58
Ничего особенного. Просто цикл ...
источник
->s,a,i=0{a.cycle{|e|i+=0.5;break i if/[2-9]/!~'%d'%s+=e}}[1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100]]
или ...f=->s,a,i=0{a.cycle{|e|i+=0.5;break i if/[2-9]/!~'%d'%s+=e}}; f[1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100]]
Mathematica, 92 байта
Ага. Ввод одометра и список раз. Вывод числа дней.
источник
PHP,
10298Безголовая версия
Уведомления PHP могут быть удалены за дополнительную плату в 4 символа
$d = 0;
в версии для гольфа.пример
источник
if
, удаление 0 из0.5
и удаление|
между 1 и 0 в вашем регулярном выражении экономит 4 байта.function f($i,$s){while(1)foreach($s as$v){$d+=.5;$i+=$v;if(preg_match('/^[01]+$/',$i))return$d;}}
Pyth,
363230 байтПопробуй это здесь!
объяснение
источник
С Sharp, 180.
Уважаемый господин C # это долго.
источник