Кто-то подарил моей жене декоративный календарь, состоящий из четырех кубиков. Здесь она показывает сегодняшнюю дату (на момент публикации этой задачи) на передней панели:
Когда я впервые увидел это, я посмотрел на него под неправильным углом (прямо сверху) и не мог понять, почему он дал эту информацию:
[["February", "January"], [3], [7], ["Monday", "Tuesday"]]
Ваша задача - повторить мою ошибку на любую дату в 2019 году.
Вызов
Напишите программу или функцию, которая берет любую дату с 2019 года и выводит то, что появляется в верхней части всех кубов, когда эта дата отображается лицевой стороной к календарю.
Вот все шесть граней для всех кубов. Для отображения 6
вы просто переверните 9
вверх дном. 0
Вертикально симметричны, так что 0
вниз по - прежнему 0
. Для некоторых дат может быть более одного правильного ответа (например, у любого 11-го числа любого месяца будет более одного способа использования кубов и тому 0
подобное), поэтому вы можете вывести любой правильный ответ.
правила
- Стандартные лазейки запрещены.
- Формат ввода / вывода гибкий.
- Вывод должен быть в порядке по кубу, но не внутри куба. Порядок должен быть сначала кубом месяца, затем двумя числовыми кубами, а затем кубом дня недели. Но когда куб имеет два элемента сверху, эти два элемента могут быть в любом порядке.
- Вы можете заменить
January
наDecember
0-11 или 1-12, если хотите. - Вы можете заменить дни недели с 0-6 или 1-7 , если вы хотите, и вы можете начать неделю на любом
Sunday
илиMonday
(но вы не можете начать неделю с другого дня - это PPGC, а не какой-то другой). сумасшедшего города.) - Это код-колф . Побеждает меньшее количество байтов для каждого языка.
- Пояснения приветствуются.
Контрольные примеры
(Tue) 2019-01-29 [[ "July", "August" ], [3], [7], [ "Thursday", "Wednesday" ]]
[[ "August", "July" ], [3], [7], [ "Wednesday", "Thursday" ]]
etc. since the order within each cube doesn't matter.
(Thu) 2019-07-11 [[ "May", "June" ], [3], [8], [ "Saturday", "Friday" ]]
[[ "May", "June" ], [8], [3], [ "Saturday", "Friday" ]]
since the two 1 cubes could be either way.
(Sun) 2019-10-27 [[ "January", "February" ], [3], [6], [ "Friday", "Saturday" ]]
(Wed) 2019-05-01 [[ "March", "April" ], [8], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [6], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [9], [3], [ "Monday", "Tuesday" ]]
since the 0 cube could have either the 8 side or the 6 side facing up, and the 6 could also be considered a 9.
(Sat) 2019-08-24 [[ "February", "January" ], [8], [5], [ "Sunday" ]]
27
в2019-10-27
должен идти36
, нет32
.Ответы:
C (glibc) ,
327319286 байт(Для ясности добавлены некоторые разрывы строк)
f
занимает месяц (1–12) и день (1–31). Печать на стандартный вывод. Попробуйте онлайн!Тестовые случаи:
Ungolfed
Цифровые кубики
Вот возможности для цифр:
Следующее отображение кажется лучшим выбором для игры в гольф:
Коды
strftime
предназначен для вызова сstruct tm
входом. Вместо этого я заявляюint S[9]
и используюS[4]
какtm_mon
иS[6]
какtm_wday
. Это работает, если библиотека C использует тот же список членов структуры, что и стандарт ISO.s[99]
используется для хранения различных строк изstrftime
, но созданиеint
массива экономит несколько байтов при индексации.источник
JavaScript (ES6), 142 байта
Принимает входные данные какм о н т ч индексируется 1, dу0 первая цифра даты и dу1 это вторая цифра.
(year, month, day0, day1)
гдеВозвращает,0 на воскресенье. Если день второй недели пуст, он устанавливается на- 1 ,
(month0, month1, day0, day1, weekDay0, weekDay1)
когда дни недели 0 индексируются сПопробуйте онлайн!
источник