Как долго осталось?
Недавно я делал пиццу, используя 5-минутный таймер на моем телефоне. Когда кто-то вошел и спросил меня, как долго осталось, я сначала был озадачен тем, как ответить на вопрос. Видите ли, если бы таймер в текущий момент был в 3:47, то к тому времени, когда я зачитал вслух «Три минуты сорок семь секунд», время изменилось бы. Поэтому мне нужно найти время, таймер будет достичь только , как я дочитать его.
Это ваша задача: автоматизировать этот процесс. Если задано время в любом подходящем формате (с разделителем ":" или в качестве аргумента минуты и секунды), выведите самое раннее время из этого текущего момента, которое будет считываться равным количеством времени, которое потребовалось бы таймеру для получения к. Мы предполагаем, что каждый слог считывается за 1 секунду.
Дальнейшие правила
- Вы должны считать «минуты» и «секунды» как два слога каждый, а также «и» между ними.
- На приготовление пиццы никогда не уйдет больше 59:59.
- «11 минут и 0 секунд» - это не 10 слогов: вы должны упростить до «11 минут» (то есть 5 слогов). То же самое касается минут: «0 минут и 7 секунд» также считается только 4 слогами.
- Ваша программа может выдавать выходные данные в любом формате: массив
[minutes, seconds]
или даже как<minutes> minutes and <seconds> seconds
(обычный текст выписан). - Применяются стандартные лазейки.
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Контрольные примеры
Все входы как (minutes, seconds)
(4, 47) = (4, 38) (Four MiNutes And ThirTy Eight SeConds - 9 syllables/seconds)
(1, 1) = (0, 56) (FifTy-Six SeConds - 5 syllables/seconds)
(59, 57) = (59, 46) (FifTy Nine Minutes And Forty Six SeConds - 11 syllables/seconds)
(0, 10) = null/error/0 (no positive answer)
Счетчик слогов
Для справки, вот количество слогов в каждом числе до 59.
0,0 (does not need to be counted)
1,1
2,1
3,1
4,1
5,1
6,1
7,2
8,1
9,1
10,1
11,3
12,1
13,2
14,2
15,2
16,2
17,3
18,2
19,2
20,2
21,3
22,3
23,3
24,3
25,3
26,3
27,4
28,3
29,3
30,2
31,3
32,3
33,3
34,3
35,3
36,3
37,4
38,3
39,3
40,2
41,3
42,3
43,3
44,3
45,3
46,3
47,4
48,3
49,3
50,2
51,3
52,3
53,3
54,3
55,3
56,3
57,4
58,3
59,3
источник
Ответы:
JavaScript (ES6),
112 106105 байтБолее короткая версия, основанная на предложении @EmbodimentofIgnorance еще
6 байтов, сохраненных @DaniilTutubalin.
(minutes)(seconds)
[minutes, seconds]
Попробуйте онлайн!
JavaScript (ES6),
126119 байт(minutes)(seconds)
[minutes, seconds]
Попробуйте онлайн!
комментарии
источник
30774612>>2*n%(n>12?20:26)&3
часть, в которой я был смущен.g=x=>x&&(x%10==7)+(x==11?6:x<13?4:x<21|x%10<1?5:6)
может работать (не проверено, так как интернет не работает и использует мой телефон)g()
вернув противоположный результат и выполнив операцию XOR~d
.Python 3 ,
287285 байтПопробуйте онлайн!
Это не очень умное решение - это в основном striaghtforward. Принимает
m: s иm как отдельные входы(не нужно дополнять)и выходные данные (m, s). Выдает ошибку, если нет правильного вывода.Программа в значительной степени опирается на неявное приведение логических значений к 0 и 1. Первая строка принимает ввод. Вторая строка определяет лямбда-функцию y, которая задает слоги в числе - она принимает базу из 3 слогов, затем добавляет 1, если она заканчивается на 7, вычитает 1, если она заканчивается на 0, и вычитает 1, если она находится в 10 и 2, если это в одной цифре. Двенадцать и одиннадцать настраиваются вручную в конце. Третья строка - лямбда для слогов во всем выражении. Наконец, четвертая строка дает время после t секунд. Пятая строка - это выход - она строит массив всех времен, которые решают проблему, и выводит первую.
РЕДАКТИРОВАТЬ 1: Благодаря Мэтью Андерсон в комментариях, 2 байта были сбриты, принимая входные данные отдельно.
источник
m=int(input()) s=int(input())
вы можете сохранить 2 байта.C # (интерактивный компилятор Visual C #) , 141 байт
Попробуйте онлайн!
источник
Желе , 46 байт
Попробуйте онлайн!
Монадическая ссылка, принимающая в качестве аргумента время
[minutes, seconds]
и возвращающая подходящее время, чтобы сказать как[minutes, seconds]
или[seconds]
меньше минуты.источник
CJam , 102 байта
Попробуйте онлайн!
Просто скучная старая двоичная справочная таблица с магическими числами, здесь нечего смотреть.
источник