Рассмотрим мост длиной B , состоящий из плиток, помеченных цифрами соединенных положительных целых чисел. Например, если бы B было 41, то это выглядело бы так:
----------------------------------------- 12345678910111213141516171819202122232425
Теперь представьте поезд длиной Т, пересекающий мост. Крайняя левая точка поезда начинается в положении X (с индексом 1). Чтобы лучше понять проблему, давайте составим схему мероприятия, где B = 41, T = 10, X = 10 . Поезд нарисован с использованием знаков равенства ( =
) и линий:
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425
Поезд может продвигаться на каждом этапе по сумме уникальных плиток, на которых он находится. Например, плитки, на которых стоит поезд, это:, [1, 0, 1, 1, 1, 2, 1, 3, 1, 4]
уникальные (дедуплицированные) плитки:, [1, 0, 2, 3, 4]
и их сумма равна 10
. Следовательно, поезд может двигаться вперед по 10
плиткам. Мы должны нарисовать его снова и повторять процесс, пока крайняя левая точка поезда не пройдет последнюю плитку:
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Сумма уникальных плиток: 1 + 5 + 6 + 7 + 8 + 9 = 36. Поезд продвигается на 36 плиток ... __________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Поезд явно пересек мост, поэтому мы должны остановиться.
Поскольку людям внутри скучно, они считают плитки, которые поезд продвигал каждый раз. В этом конкретном случае 10
и 36
. Подводя итог, поезд двинулся еще 46
до того, как пересек мост.
задача
С учетом трех натуральных чисел, B (длина моста), T (длина поезда) и X (начальная позиция, индексированная 1 ), ваша задача состоит в том, чтобы определить, сколько плиток поезд переместился, пока не пересек мост, следуя правилам. над.
- Вы можете предположить, что:
- В выше , чем Т .
- Х ниже , чем B .
- Т составляет не менее 2 .
- Поезд в конце концов пересекает мост.
- Все наши стандартные правила применяются.
- Это Код-гольфтак что самый короткий код в байтах побеждает!
Контрольные примеры
Вход ([B, T, X]) -> Выход [41, 10, 10] -> 46 [40, 10, 10] -> 46 [30, 4, 16] -> 24 [50, 6, 11] -> 50
Еще один работающий пример для последнего контрольного примера:
Мост длиной 50, поездом 6 и стартовой позицией - 11. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Уникальные плитки: [0, 1, 2]. Сумма: 3. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Уникальные плитки: [1, 2, 3, 4]. Сумма: 10. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Уникальные плитки: [1, 7, 8, 9]. Сумма: 25 ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Уникальные плитки: [9, 3]. Сумма: 12 ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Поезд существует мост. Общая сумма: 3 + 10 + 25 + 12 = 50.
(200, 2, 169)
, поезд застревает на00
в…9899100101102…
.Ответы:
Шелуха , 20 байт
Попробуйте онлайн!
Принимает три аргумента в порядке T , B , X .
объяснение
источник
Python 2 ,
1101051041031009796 байт[~-x:x+~-t]
к[~-x:][:t]
....range(1,-~b)))[:b]
к...range(b)))[1:-~b]
.[1:-~b][~-x:]
к[:-~b][x:]
.[:-~b][x:]
к[x:-~b]
.while
кexec
заявлению.Попробуйте онлайн!
источник
[~-x:x+~-t]
может быть заменен[x-1:][:t]
exec"x+=sum(set(map(int,''.join(map(str,range(b)))[x:-~b][:t])));"*b
работает на 96. (Поезд никогда не будет делать больше, чемb
шаги, чтобы покинуть мост, и вся эта операция будетx+=0
Haskell,
106102 байтаПопробуйте онлайн!
источник
R , 123 байта
Просто реализует описанный алгоритм.
R довольно ужасно на струнах.
Попробуйте онлайн!
источник
Желе ,
2221 байтПолная программа, принимающая три аргумента (порядок B , X , T), которая печатает результат.
Попробуйте онлайн!
Как?
источник
JavaScript (ES6), 117 байт
Пара рекурсивных функций:
f()
подводит итоги движения поездаg()
создает строку чисел.Менее гольф:
Показать фрагмент кода
источник
PHP> = 7.1, 153 байта
Попробуйте онлайн!
Чтобы сделать его совместимым с более низкими версиями PHP, измените
[,$p,$q,$r]=
наlist(,$p,$q,$r)=
(+4 байта).источник