Простой шагомер можно смоделировать с помощью маятника с двумя переключателями на противоположных сторонах - один при x = 0 и один при x = l . Когда маятник соприкасается с дальним переключателем, можно предположить, что амбулатор сделал полшага. Когда он соприкасается с ближним переключателем, шаг завершен.
Учитывая список целых чисел, представляющих положения маятника, определите количество полных шагов, записанных на шагометре.
вход
Целое число l > 0, длина дорожки.
Список целых чисел, представляющих положения маятника шагомера в каждый момент времени.
Выход
Количество полных шагов измеряется. Шаг делается, когда маятник контактирует с дальним переключателем (x> = l) и затем с ближним переключателем (x <= 0).
Контрольные примеры
8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]
1
Маятник немедленно вступает в контакт с дальним выключателем при x = 8 при t = 0. Затем он касается ближнего переключателя при t = 2 и t = 4, выполняя один шаг. После этого он снова касается дальнего переключателя при x = 9 при t = 8, но никогда больше не касается ближнего переключателя.
1, [1, 5, -1, -4, -1, 1, -2, 8, 0, -4]
3
15, [10, -7, -13, 19, 0, 22, 8, 9, -6, 21, -14, 12, -5, -12, 5, -3, 5, -15, 0, 2, 11, -11, 12, 5, 16, 14, 27, -5, 13, 0, -7, -2, 11, -8, 27, 15, -10, -10, 4, 21, 29, 21, 2, 5, -7, 15, -7, -14, 13, 27]
7
7, [5, 4, 0]
0
7, [5, 8, 6, 1, 2]
0
источник
7, [5, 4, 0]
? Это 0 или 1? То есть - вы предполагаете, что свинг всегда "во всю длину"? Или7, [5, 8, 6, 1, 2]
? Это 0 или 1?8, [0 8 0 8]
должен дать1
, а не2
. Я прав?Ответы:
CJam,
2724 байтаФормат ввода - это список положений маятника, за которыми
l
следует одна строка.Проверьте это здесь.
объяснение
источник
MATL , 22 байта
Используется текущая версия (14.0.0) языка / компилятора.
Входные данные имеют тот же порядок и формат, что и при вызове, разделенные новой строкой.
Попробуйте онлайн!
объяснение
источник
Javascript ES6 57 байт
Спасибо @NotThatCharles за -4
источник
/10/
?Perl, 28 байт
Включает +1 для
-p
Запустите с вводом как одну длинную строку целых чисел, разделенных пробелом в STDIN, первое число - это длина:
steps.pl
:Использует оператор триггера perl и подсчитывает, сколько раз он возвращается в false
источник
Pyth, 18 байт
Тестирование
Объяснение:
источник
Руби, 42
r
начинается какfalse
. Мы переключаемсяr
на каждом конце трека и добавляем его к нашему счету. Затем вдвое уменьшите счет (округление вниз), чтобы получить количество шагов.источник
Сетчатка, 34
Попробуйте онлайн! или попробуйте с десятичным вводом .
Принимает ввод в унарных, отрицательные унарные числа обрабатываются как
-111...
и ноль - пустая строка. Подсчитывает количество раз, когда появляется первое число, за которым следует ноль. Использует атомарную группу, чтобы гарантировать, что совпадения минимальны (к сожалению, атомарные группы не захватываются, поэтому их нужно поместить в другую группу ...).источник
Python 3, 82
Сохранено 2 байта благодаря DSM.
Еще не супер гольф.
Тестовые случаи:
источник
Clojure, 64 байта
Сопоставляет значения, меньшие или равные от нуля до
0
, превышающие или равные по длине1
и другие, с пустой строкой""
. Затем он соединяется со строкой, и вхождения"10"
подсчитываются.источник
APL (Dyalog Unicode) , 17 байтов SBCS
Также известный как «насколько я могу злоупотреблять йота-андербар?»
Попробуйте онлайн!
источник