Desafio
Dado um número inteiro não negativo, mostre se é possível por duas datas (do calendário gregoriano) diferindo exatamente por muitos anos para compartilhar um dia da semana. Um ano é considerado um ano bissexto, se é divisível por 4, mas não por 100, ou se é divisível por 400.
A saída pode ser:
- falsey / truthy (em qualquer orientação)
- quaisquer dois valores distintos
- um valor distinto e um sendo qualquer outra coisa
- pelo código de retorno do programa
- por sucesso / erro
- por qualquer outro meio razoável - pergunte se você suspeita que possa ser controverso
Mas não por dois conjuntos de valores não distintos, exceto falsey / truthy (pois isso permitiria um não-op!)
Detalhe
É se a entrada é um membro da sequência A230995 do OEIS .
Membros:
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, ...
Não membros:
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, ...
Isso é código-golfe, e a resposta mais curta em cada idioma vence!
Respostas:
MATL , 17 bytes
O programa pára se a entrada pertence à sequência ou é executado indefinidamente (loop infinito).
Let
n
Ser a entrada. O código executa um loop que testa anos1
e1+n
; então2
e2+n
; ... até que um dia correspondente da semana seja encontrado. Se não houver correspondência, o loop será executado indefinidamente.A função de associação para
n
é periódica com período400
. Portanto, na maioria das400
iterações são necessárias sen
pertencer à sequência. Isso requer menos de 20 segundos no Try It Online. Como prova desse limite superior, aqui está um programa modificado que limita o número de iterações a 400 (adicionando@401<*
no final). Observe também que esse limite está solto e geralmente alguns segundos são suficientes.Experimente online!
Explicação
Versão antiga, 24 bytes
Saída é
0
se a entrada pertencer à sequência ou1
não.Experimente online!
Explicação
fonte
Python 2 , 58 bytes
Experimente online!
Uma fórmula direta.
fonte
5*u/4%7-3
vez de(u-8)*5/4%7
.1/(...)
vez deprint ...
.Geléia ,
2018 bytesSaídas 1 para membros, 0 para não membros.
Experimente online!
Como funciona
fonte
Python 2 , 83 bytes
Experimente online!
Porta direta da minha resposta Haskell .
fonte
Haskell , 76 bytes
-35 bytes graças a Jonathan Allan. -2 bytes graças a Lynn.
Experimente online!
Usando o algoritmo do programa OEIS PARI.
fonte
5*(n#4)
pode ser5*n#4
também!Pitão , 32 bytes
Experimente aqui! (Clique em "Alternar para o conjunto de testes" para verificar mais casos de teste de uma só vez)
Quão?
Usa um truque legal que acabei de adicionar ao tópico "Dicas para jogar golfe em Pyth".
fonte
Python 3 ,
110107 bytesExperimente online!
-3 bytes graças ao Sr. Xcoder.
fonte