Я голоден. Давайте что-нибудь в микроволновке. Учитывая числовой ввод от 1 до 4 цифр, выведите количество секунд, в течение которых микроволновая печь должна работать.
Детали
Хитрость заключается в том, чтобы выяснить, вводит ли пользователь секунды или комбинацию секунд и минут. Единицы и десятки мест должны быть интерпретированы как секунды, а сотни и тысячи мест должны быть минутами. Например, значение 1234
должно интерпретироваться как 12 минут 34 секунды и 9876
должно составлять 98 минут 76 секунд. Печатание 130
и 90
оба должны привести к времени приготовления 90 секунд.
Вот несколько других входов и выходов:
- 1 = 1
- 11 = 11
- 111 = 71
- 1111 = 671
- 9 = 9
- 99 = 99
- 999 = 639
- 9999 = 6039
правила
Это код-гольф , поэтому выигрывает самая короткая программа в байтах. Стандартные лазейки не допускаются. Победившая запись должна возвращать правильный ответ, если задано любое целое число от 1 до 9999.
9876
?190
?Ответы:
Python 2 , 19 байт
Попробуйте онлайн!
источник
Japt , 6 байт
Проверьте это онлайн!
ìL
преобразует в base-100 иì60
преобразует обратно в base 60, в результате чегоfloor(n/100)*60 + n%100
. Также работает с часами (10000 -> 3600
количество секунд в часе).источник
C, C ++, Java, C #, D: 36 байт
D: 35 байт
C: 28 байт
Впервые у меня есть такой короткий ответ!
У D может быть специальная оптимизация из-за системы шаблонов игры в гольф:
C имеет специальную оптимизацию с неявным int:
Код для тестирования
В C (должны включать
stdio.h
):TIO Link
В C ++ (должны включать
iostream
):Попробуйте онлайн!
В Java :
Попробуйте онлайн!
В C #
В D (приходится импортировать
std.stdio
) (точно, я понятия не имею, как использовать массивы в D):TIO Link
источник
foreach
в D, я просто забыл, как его использовать, к сожалению)Pyth -
98 байтПреобразует ввод в основание 100, затем интерпретирует его как число 60 основ.
Тестовый пакет .
источник
TI-Basic (серия 83), 8 байт
Требуется версия ОС 1.15 или выше.
источник
постоянный ток , 10 байт
Попробуйте онлайн!
Пояснение: в постоянном токе при нажатии чт. в стеке идет сверху
источник
Bash bc + sed,
3028 байт-2 байта благодаря @seshoumara .
Попробуйте онлайн!
Принимает ввод от стандартного ввода. Пошел к более творческому подходу: вставляет
*60+
перед последними 1 или 2 цифрами и добавляет0
к началу, чтобы учесть вводы только с 1 или 2 цифрами. Результат затем передаетсяbc
.источник
-r
и используете\?
, вы можете потерять 2 байта.C (gcc) , 50 байтов
Попробуйте онлайн!
источник
f(t){return t%100+t/100*60;}
. Функциям разрешено принимать входные данные в качестве аргументов и выводить их через возвращаемые значения.f(i,x){x=i/100*60+i%100;}
f(i,x){x=i-i/100*40;}
Perl 5, 15 + 1 (-p) байт
Попробуйте онлайн
источник
Java 8, 13 байт
Потрясающая формула Python 2 от @ovs .
Попробуй это здесь.
источник
JavaScript, 21 байт
Попробуйте онлайн!
источник
J , 12 байт
Это решение Python 2 от ovs, выраженное в J. Оно состоит из хука и разветвления:
Попробуйте онлайн!
источник
60#.0 100#:]
.Пакетный, 23 байта
источник
Haskell , 18 байт
Попробуйте онлайн!
Анота порт.
Pointfree решение, 21 байт
источник
Лабиринт , 19 байт
Попробуйте онлайн!
объяснение
Затем IP попадает в тупик и начинает двигаться назад. Когда он достигает,
/
он пытается делить на ноль, что завершает программу.источник
Желе , 5 байт
Как монадическая ссылка (спасибо за хедз-ап, Кэрд!):
Попробуйте онлайн!
... или как полная программа:
Это можно легко перенести на 05AB1E, поэтому:
05AB1E , 5 байтов
Попробуйте онлайн!
Просто преобразует входное целое число в основание 100, а затем преобразует результат из основания 60 в целое число. Следовательно, это эквивалентно Input% 100 + 60 * putInput / 100⌋
источник
Excel VBA, 29 байт
Функция анонимного непосредственного окна VBE, которая берет входные данные из диапазона
[A1]
и выводит в непосредственное окно VBE.источник
APL (Dyalog) ,
1110 байтовПопробуйте онлайн!
Как?
0 100⊤
- кодировать в базе 100, останавливаясь на втором LSB, эффективно создаваяn ÷ 100, n % 100
.60⊥
- декодировать в базе 60источник
PARI / GP , 16 байт
Непосредственная:
К сожалению, этот хороший метод просто слишком длинный для использования:
источник
Напористый ,
109 байтКевин переиграл меня на моем родном языке ... (используя подход из ответа Овса )
Попробуйте онлайн!
10 байт
Попробуйте онлайн!
11 байт
Для еще одного байта мы можем использовать
Input % 100 + 60 * ⌊Input / 100⌋
подход:Попробуйте онлайн!
источник
2dH/40*-#
. Никогда не программировал в Pushy раньше, но это похоже на довольно крутой язык. :)05AB1E , 9 байтов
Попробуйте онлайн!
Объяснение:
Возможно, есть какой-то трюк с базовыми преобразованиями, который может быть достигнут в 05AB1E, но я не смог его найти.
источник
Баш, 20 байт
Попробуйте онлайн
источник
Сетчатка , 11 байт
Попробуйте онлайн!
Ввод и вывод в одинарный . Для удобства набор тестов преобразуется из и в десятичное число.
Выполнение базового преобразования такого типа длиной до двух цифр удивительно просто в унарном формате. Мы просто сопоставляем пробеги 100
1
с и заменяем их на 601
с. Все, что осталось, будет соответствовать последним двум цифрам в десятичном представлении и останется неизменным.источник
Алиса , 19 байт
Попробуйте онлайн!
объяснение
Жаль, что я удалил divmod из языка, я думаю ...
Это обычная структура для линейных программ с десятичным вводом / выводом, работающих исключительно в кардинальном (арифметическом) режиме.
источник
Млечный Путь , 10 байт
использование:
./mw code.mwg -i 9999
Объяснение:
источник
R , 21 байт
Попробуйте онлайн!
источник
scan
так как большинство ответов просто предполагают, что переменная уже определена.Common Lisp, 34 байта
Попробуйте онлайн!
Еще один порт формулы @ovs .
источник
REXX, 25 байт
(Просто еще один перевод @ovs)
источник
05AB1E , 7 байтов
Попробуйте онлайн!
объяснение
источник
Символический Питон , 66 байт
Попробуйте онлайн!
объяснение
источник