Вызов
Учитывая неотрицательное целое число, выведите, возможно ли для двух дат (по григорианскому календарю) отличаться ровно на столько лет, чтобы делить день недели. Предполагается, что год является високосным, если он делится на 4, а не на 100, или если он делится на 400.
Выход может быть:
- фальси / правдивый (в любой ориентации)
- любые два разных значения
- одно отличное значение, а другое - что-то еще
- по коду возврата программы
- по успеху / ошибке
- любым другим разумным способом - просто спросите, если вы подозреваете, что это может быть спорным
Но не двумя непонятными наборами значений, за исключением фальси / истины (поскольку это позволило бы запретить операции!)
подробность
Это то, является ли вход членом последовательности OEIS A230995 .
Пользователи:
0, 5, 6, 7, 11, 12, 17, 18, 22, 23, 28, 29, 33, 34, 35, 39, 40, 45, 46, 50, 51, 56, 57, 61, 62, 63, 67, 68, 73, 74, 78, 79, 84, 85, 89, 90, 91, 95, 96, 101, 102, 106, 107, 108, 112, 113, 114, 117, 118, 119, 123, 124, 125, 129, 130, 131, 134, 135, 136, 140, 141, 142, 145, 146, 147, 151, 152, 153, 157, 158, 159, 162, 163, 164, 168, 169, 170, 173, 174, 175, 179, 180, 181, 185, 186, 187, 190, 191, 192, 196, 197, 198, 202, 203, 204, 208, 209, 210, 213, 214, 215, 219, 220, 221, 225, 226, 227, 230, 231, 232, 236, 237, 238, 241, 242, 243, 247, 248, 249, 253, 254, 255, 258, 259, 260, 264, 265, 266, 269, 270, 271, 275, 276, 277, 281, 282, 283, 286, 287, 288, 292, 293, 294, 298, 299, 304, 305, 309, 310, 311, 315, 316, 321, 322, 326, 327, 332, 333, 337, 338, 339, 343, 344, 349, 350, 354, 355, 360, 361, 365, 366, 367, 371, 372, 377, 378, 382, 383, 388, 389, 393, 394, 395
plus
400, 405, 406, 407, 411, ...
Нечлены:
1, 2, 3, 4, 8, 9, 10, 13, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 30, 31, 32, 36, 37, 38, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 58, 59, 60, 64, 65, 66, 69, 70, 71, 72, 75, 76, 77, 80, 81, 82, 83, 86, 87, 88, 92, 93, 94, 97, 98, 99, 100, 103, 104, 105, 109, 110, 111, 115, 116, 120, 121, 122, 126, 127, 128, 132, 133, 137, 138, 139, 143, 144, 148, 149, 150, 154, 155, 156, 160, 161, 165, 166, 167, 171, 172, 176, 177, 178, 182, 183, 184, 188, 189, 193, 194, 195, 199, 200, 201, 205, 206, 207, 211, 212, 216, 217, 218, 222, 223, 224, 228, 229, 233, 234, 235, 239, 240, 244, 245, 246, 250, 251, 252, 256, 257, 261, 262, 263, 267, 268, 272, 273, 274, 278, 279, 280, 284, 285, 289, 290, 291, 295, 296, 297, 300, 301, 302, 303, 306, 307, 308, 312, 313, 314, 317, 318, 319, 320, 323, 324, 325, 328, 329, 330, 331, 334, 335, 336, 340, 341, 342, 345, 346, 347, 348, 351, 352, 353, 356, 357, 358, 359, 362, 363, 364, 368, 369, 370, 373, 374, 375, 376, 379, 380, 381, 384, 385, 386, 387, 390, 391, 392, 396, 397, 398, 399
plus
401, 402, 403, 404, 408, ...
Это код-гольф, поэтому выигрывает самый короткий ответ на каждом языке!
Ответы:
MATL , 17 байт
Программа останавливается, если вход принадлежит последовательности, или выполняется бесконечно (бесконечный цикл) в противном случае.
Позвольте
n
быть входом. Код выполняет цикл, который проверяет годы1
и1+n
; тогда2
и2+n
; ... пока не найден подходящий день недели. Если совпадений не существует, цикл выполняется бесконечно.Функция членства для
n
является периодической с периодом400
. Следовательно,400
требуется максимум итераций, если ониn
принадлежат последовательности. Это займет не более 20 секунд в Try It Online. В качестве доказательства этой верхней границы приведем модифицированную программу, которая ограничивает число итераций до 400 (добавляя@401<*
в конце). Также обратите внимание, что эта граница свободна, и обычно достаточно нескольких секунд.Попробуйте онлайн!
объяснение
Старая версия, 24 байта
Выход -
0
если вход принадлежит последовательности, или1
иначе.Попробуйте онлайн!
объяснение
источник
Python 2 , 58 байт
Попробуйте онлайн!
Прямая формула.
источник
5*u/4%7-3
вместо(u-8)*5/4%7
.1/(...)
вместоprint ...
.Желе ,
20-18 байтВыходы 1 для участников, 0 для не членов.
Попробуйте онлайн!
Как это устроено
источник
Python 2 , 83 байта
Попробуйте онлайн!
Прямой порт моего ответа на Haskell .
источник
Haskell , 76 байт
-35 байтов благодаря Джонатану Аллану. -2 байта благодаря Линн.
Попробуйте онлайн!
Использование алгоритма программы OEIS PARI.
источник
5*(n#4)
может быть5*n#4
также!Pyth , 32 байта
Попробуй это здесь! (Нажмите «Переключиться на набор тестов», чтобы проверить больше тестовых случаев одновременно)
Как?
Использует крутой трюк, который я только что добавил в ветку "Советы по игре в гольф в Pyth".
источник
Python 3 ,
110107 байтПопробуйте онлайн!
-3 байта благодаря мистеру Xcoder.
источник