Desafío
Dado un número entero no negativo, indique si es posible que dos fechas (del calendario gregoriano) difieran exactamente en esa cantidad de años para compartir un día de la semana. Se supone que un año es bisiesto si es divisible por 4 pero no por 100, o si es divisible por 400.
La salida puede ser:
- Falsey / Verdad (en cualquier orientación)
- cualesquiera dos valores distintos
- un valor distinto y otro siendo cualquier otra cosa
- por código de retorno del programa
- por éxito / error
- por cualquier otro medio razonable: solo pregunte si sospecha que puede ser controvertido
Pero no por dos conjuntos de valores no distintos, a excepción de falsey / truthy (¡ya que esto permitiría un no-op!)
Detalle
Esto es si la entrada es un miembro de la secuencia OEIS A230995 .
Miembros:
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, ...
No miembros:
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, ...
Este es el código de golf, por lo que gana la respuesta más corta en cada idioma.
Respuestas:
MATL , 17 bytes
El programa se detiene si la entrada pertenece a la secuencia o, de lo contrario, se ejecuta indefinidamente (bucle infinito).
Deje
n
ser la entrada. El código ejecuta un ciclo que prueba años1
y1+n
; entonces2
y2+n
; ... hasta que se encuentre un día coincidente de la semana. Si no existe una coincidencia, el ciclo se ejecuta indefinidamente.La función de membresía
n
es periódica con período400
. Por lo tanto, en la mayoría de las400
iteraciones son necesarias sin
pertenece a la secuencia. Esto requiere menos de 20 segundos en Pruébelo en línea. Como prueba de este límite superior, aquí hay un programa modificado que limita el número de iteraciones a 400 (agregando@401<*
al final). Tenga en cuenta también que este límite está suelto y, por lo general, unos segundos son suficientes.Pruébalo en línea!
Explicación
Versión anterior, 24 bytes
La salida es
0
si la entrada pertenece a la secuencia, o de1
otra manera.Pruébalo en línea!
Explicación
fuente
Python 2 , 58 bytes
Pruébalo en línea!
Una fórmula directa.
fuente
5*u/4%7-3
lugar de(u-8)*5/4%7
.1/(...)
lugar deprint ...
.Jalea ,
2018 bytesSalidas 1 para miembros, 0 para no miembros.
Pruébalo en línea!
Cómo funciona
fuente
Python 2 , 83 bytes
Pruébalo en línea!
Puerto directo de mi respuesta de Haskell .
fuente
Haskell , 76 bytes
-35 bytes gracias a Jonathan Allan. -2 bytes gracias a Lynn.
Pruébalo en línea!
Usando el algoritmo del programa OEIS PARI.
fuente
5*(n#4)
puede ser5*n#4
también!Pyth , 32 bytes
Pruébalo aquí! (Haga clic en "Cambiar a Test Suite" para verificar más casos de prueba a la vez)
¿Cómo?
Utiliza un truco genial que acabo de agregar al hilo "Consejos para jugar golf en Pyth".
fuente
Python 3 ,
110107 bytesPruébalo en línea!
-3 bytes gracias al Sr. Xcoder.
fuente