Herausforderung
Bei einer nicht negativen Ganzzahl wird ausgegeben, ob es möglich ist, dass zwei Daten (des Gregorianischen Kalenders) genau so viele Jahre voneinander abweichen, um einen Wochentag zu teilen. Ein Jahr wird als Schaltjahr angenommen, wenn es durch 4, nicht aber durch 100 teilbar ist oder wenn es durch 400 teilbar ist.
Die Ausgabe kann sein:
- Falsch / Wahrhaftig (in beiden Richtungen)
- zwei beliebige unterschiedliche Werte
- Ein eindeutiger Wert und einer, der alles andere ist
- per Programm-Return-Code
- durch Erfolg / Fehler
- Fragen Sie einfach, ob Sie den Verdacht haben, dass dies kontrovers ist
Aber nicht durch zwei nicht getrennte Wertesätze, außer Falschheit / Wahrhaftigkeit (da dies ein No-Op erlauben würde!)
Detail
Dies ist, ob die Eingabe ein Mitglied der OEIS-Sequenz A230995 ist .
Mitglieder:
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, ...
Nichtmitglieder:
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, ...
Das ist Code-Golf, also gewinnt die kürzeste Antwort in jeder Sprache!
Antworten:
MATL , 17 Bytes
Das Programm wird angehalten, wenn die Eingabe zur Sequenz gehört, oder wird auf unbestimmte Zeit ausgeführt (Endlosschleife).
Sei
n
der Input. Der Code führt eine Schleife aus, die Jahre testet1
und1+n
; dann2
und2+n
; ... bis ein passender Wochentag gefunden wurde. Wenn keine Übereinstimmung besteht, wird die Schleife auf unbestimmte Zeit ausgeführt.Die Zugehörigkeitsfunktion für
n
ist periodisch mit Punkt400
. Daher sind höchstens400
Iterationen erforderlich, wennn
sie zur Sequenz gehören. In Try It Online sind dafür weniger als 20 Sekunden erforderlich. Als Beweis für diese Obergrenze ist hier ein modifiziertes Programm , das die Anzahl der Iterationen auf 400 begrenzt (durch Hinzufügen@401<*
am Ende). Beachten Sie auch, dass diese Bindung locker ist und in der Regel einige Sekunden ausreichen.Probieren Sie es online!
Erläuterung
Alte Version, 24 Bytes
Die Ausgabe erfolgt,
0
wenn die Eingabe zur Sequenz gehört oder auf1
andere Weise.Probieren Sie es online!
Erläuterung
quelle
Python 2 , 58 Bytes
Probieren Sie es online!
Eine direkte Formel.
quelle
5*u/4%7-3
statt sparen(u-8)*5/4%7
.1/(...)
anstelle von verwendenprint ...
.Jelly ,
20 bis18 BytesAusgänge 1 für Mitglieder, 0 für Nichtmitglieder.
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 , 83 Bytes
Probieren Sie es online!
Direkter Port meiner Haskell-Antwort .
quelle
Haskell , 76 Bytes
-35 Bytes dank Jonathan Allan. -2 Bytes dank Lynn.
Probieren Sie es online!
Verwendung des Algorithmus des OEIS PARI-Programms.
quelle
5*(n#4)
kann5*n#4
auch sein!Pyth , 32 Bytes
Probieren Sie es hier aus! (Klicken Sie auf "Zur Test Suite wechseln", um weitere Testfälle gleichzeitig zu überprüfen.)
Wie?
Benutzt einen coolen Trick, den ich gerade zum Thema "Tipps zum Golfen in Pyth" hinzugefügt habe.
quelle
Python 3 ,
110107 BytesProbieren Sie es online!
-3 Bytes dank Herrn Xcoder.
quelle