Défi
Étant donné un entier non négatif, indiquez s'il est possible que deux dates (du calendrier grégorien) différant exactement de ce nombre d'années se partagent un jour de la semaine. Une année est supposée être une année bissextile soit si elle est divisible par 4 mais pas par 100, ou si elle est divisible par 400.
La sortie peut être:
- falsey / véridique (dans les deux sens)
- deux valeurs distinctes
- une valeur distincte et une autre chose
- par code retour programme
- par succès / erreur
- par tout autre moyen raisonnable - demandez simplement si vous pensez que cela peut être controversé
Mais pas par deux ensembles de valeurs non distincts, sauf pour falsey / truey (car cela permettrait un no-op!)
Détail
Il s'agit de savoir si l'entrée est membre de la séquence OEIS A230995 .
Membres:
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, ...
Non-membres:
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, ...
C'est le code-golf, donc la réponse la plus courte dans chaque langue l'emporte!
Réponses:
MATL , 17 octets
Le programme s'arrête si l'entrée appartient à la séquence, ou s'exécute indéfiniment (boucle infinie) sinon.
Soit
n
l'entrée. Le code exécute une boucle qui teste les années1
et1+n
; puis2
et2+n
; ... jusqu'à ce qu'un jour correspondant de la semaine soit trouvé. Si aucune correspondance n'existe, la boucle s'exécute indéfiniment.La fonction d'adhésion pour
n
est périodique avec période400
. Par conséquent, tout au plus400
itérations sont nécessaires sin
appartient à la séquence. Cela nécessite moins de 20 secondes dans Try It Online. Comme preuve de cette limite supérieure, voici un programme modifié qui limite le nombre d'itérations à 400 (en ajoutant@401<*
à la fin). Notez également que cette limite est lâche et que quelques secondes suffisent généralement.Essayez-le en ligne!
Explication
Ancienne version, 24 octets
La sortie est
0
si l'entrée appartient à la séquence, ou1
autrement.Essayez-le en ligne!
Explication
la source
Python 2 , 58 octets
Essayez-le en ligne!
Une formule directe.
la source
5*u/4%7-3
au lieu de(u-8)*5/4%7
.1/(...)
au lieu deprint ...
.Gelée ,
2018 octetsSorties 1 pour les membres, 0 pour les non-membres.
Essayez-le en ligne!
Comment ça fonctionne
la source
Python 2 , 83 octets
Essayez-le en ligne!
Port direct de ma réponse Haskell .
la source
Haskell , 76 octets
-35 octets grâce à Jonathan Allan. -2 octets grâce à Lynn.
Essayez-le en ligne!
Utilisation de l'algorithme du programme OEIS PARI.
la source
5*(n#4)
peut être5*n#4
aussi!Pyth , 32 octets
Essayez-le ici!(Cliquez sur "Passer à la suite de tests" pour vérifier plus de cas de test à la fois)
Comment?
Utilise un truc sympa que je viens d'ajouter au fil "Conseils pour jouer au golf en Pyth".
la source
Python 3 ,
110107 octetsEssayez-le en ligne!
-3 octets grâce à M. Xcoder.
la source