Вы прикованы к стулу. Под вами огромный вулкан. 12-часовые часы рядом с вами зловеще тикают, и вы видите, что у них есть провода, ведущие от задней части к цепи, которая уронит вас в центр земли. К часам приклеена записка:
У каждой часовой стрелки есть электрод. Когда обе стрелки часов находятся в одинаковом положении, сила течет, и вы умираете. То есть, если вы не можете сказать мне точное время, когда это произойдет, с точностью до минуты.
У вас есть компьютер, который знает все языки программирования. Вам нужно создать самый короткий (этоКод-гольфи стандартные лазейки запрещены) запрограммировать можно и сказать злому ученому, сколько времени будет. Ваша программа должна принимать данные (любым способом), состоящие из часа и минуты. Он должен вернуть следующий час и минуту (любым способом), что это происходит.
Согласно странице OEIS , одиннадцать времен перекрытия:
00:00:00 plus 0/11 s, 01:05:27 plus 3/11 s,
02:10:54 plus 6/11 s, 03:16:21 plus 9/11 s,
04:21:49 plus 1/11 s, 05:27:16 plus 4/11 s,
06:32:43 plus 7/11 s, 07:38:10 plus 10/11 s,
08:43:38 plus 2/11 s, 09:49:05 plus 5/11 s,
10:54:32 plus 8/11 s.
В следующий раз будет 12:00:00. Секунды и их дробные части не нужны для этого вызова. Просто округлиться до ближайшей минуты.
Тестовые случаи:
0:00 (Or 12:00) > 1:05
1:00 > 1:05
11:56 > 12:00 (Or 0:00)
6:45 > 7:38
5:00 > 5:27
6:30 > 6:33 (round up)
Программа может быть функцией или полной программой. Мне все равно, если вы выбираете 0:00
или 12:00
, и оба приемлемы. Удачи!
Ответы:
JavaScript (Node.js) ,
5447 байт (с округлением до ближайшего)-7 байт. Спасибо @ user202729
Попробуйте онлайн!
JavaScript (Node.js) ,
403344 байта (округляется до 0)-3 байта благодаря @Arnauld
-4 байта благодаря @Kevin Cruijssen
объяснение
Примечание: я уверен, что это может быть игра в гольф кем-то с большим знанием математики. Я едва знаю, как сложить и умножить
Попробуйте онлайн!
источник
05:00
должен выводить,05:27
но выводит05:25
вместо этого, и06:45
должен выводить,07:38
но выводит07:35
вместо этого. Вот, возможно, полезная последовательность oeis: A17818111:56
кажется, что вы выводите00:05
вместо00:00
(или12:00
).a=(a+=b>=a*5)%12
можно немного сократить, но я не слишком хорош в этомMath.round(x)
просто0|x+.5
?J , 31 байт
Попробуйте онлайн!
Способ округлить число в J, чтобы добавить
0.5
и взять слово (<.
). Занимает слишком много байтов ...объяснение
12 60&#.
(смешанное базовое преобразование) преобразует из массива [часы, минуты] в минуты, прошедшие с 0:00.Обратите внимание, что начиная с 0:00 каждые 12/11 часов (то есть 720/11 минут), две стрелки перекрываются один раз.
Поэтому, учитывая значение минуты, просто округлите его до ближайшего кратного 720/11 (отличается от самого себя). Это может быть достигнуто с
*
помощью 11/720 (J имеет рациональное число буквальное11r720
), взять слово<.
,>:
увеличить, а затем умножить его на 720/11.Обратите внимание, что «умножить на 11/720» и «умножить на 720/11» представляют собой 2 обратных действия, а также «преобразовать из [часа, минуты] в число пройденных минут» и наоборот. К счастью, J имеет встроенный
&.
функцию (under), которая отменяет некоторые действия после применения преобразования.После этого просто выполните округление:
0.5
+
тогда<.
.источник
R , 68 байт
Попробуйте онлайн!
Использование уравнения:
где
index
0 для первой позиции перекрытия (00:00), 1 для 2-й и так далее ...источник
(a[...]...c(60,1))
6:30 > 6:33
.R , 88 байт
Попробуйте онлайн!
Увеличьте время на одну минуту. Проверяет угол. Если не достаточно близко, петли, пока решение не найдено.
источник
Python 3 ,
8078 байтЭто моя первая подача, так что конструктивная критика приветствуется :)
-2 байта благодаря @Jo King
Попробуйте онлайн! (78)
Попробуйте онлайн! (80)источник
Java 8,
8982 байтаИсправлена. Посмотрим, смогу ли я сыграть в гольф позже (возможно, перенеся другой ответ) ..
Попробуйте онлайн.
Объяснение:
ДЕЛАТЬ
источник
f.apply(56).apply(10)
доходность11 59
6:30 > 6:33
.Apl (Dyalog Unicode) , 28 байт
Попробуйте онлайн!
объяснение
((⍳11),⍪0,+\∊5/⊂5 6)
представляет собой матрицу времен, в которой стрелки перекрываются (печатаются в конце ссылки tio),(⍸⌷1⊖⊣)⎕
находят интервал, в котором ввод находится в матрице, и индексы, расположенные под ним, оборачиваются вокруг.источник
C # (.NET Core) , 70 байт
Попробуйте онлайн!
Я думаю, что он проходит все тестовые случаи. Хотя случай с h = 11 выглядит некрасиво
Объяснение:
источник
6:30 > 6:33
.JavaScript, 41 байт
Показать фрагмент кода
источник
Желе , 25 байт
Попробуйте онлайн!
Монадическая ссылка, которая принимает время в виде списка из двух целых чисел и возвращает список из двух целых чисел, соответствующий следующему разу касания стрелок.
источник
Perl 6 , 43 байта
Попробуйте онлайн!
Аноним Любая лямбда, которая принимает два целых числа, представляющих часы и минуты, и возвращает часы и минуты в обратном порядке. Прямо сейчас это не согласуется, когда вы вводите выровненное время, выводит ли оно следующее выровненное время или остается на том же. Я жду, когда OP ответит на этот вопрос, но сейчас я отношусь к нему как к неопределенному.
объяснение
источник