Zusammenfassung: Testen Sie, ob eine Eingabesequenz von ganzen Zahlen "zulässig" ist, was bedeutet, dass sie nicht alle Restklassen für einen beliebigen Modul abdeckt.
Was ist eine "zulässige" Reihenfolge?
Bei einer ganzen Zahl m ≥ 2 sind die Restklassen modulo m nur die m möglichen arithmetischen Verläufe der gemeinsamen Differenz m. Wenn beispielsweise m = 4 ist, sind die 4 Restklassen Modulo 4
..., -8, -4, 0, 4, 8, 12, ...
..., -7, -3, 1, 5, 9, 13, ...
..., -6, -2, 2, 6, 10, 14, ...
..., -5, -1, 3, 7, 11, 15, ...
Die k-te Restklasse besteht aus allen ganzen Zahlen, deren Rest bei Division durch m gleich k ist. (solange man "rest" für negative ganze Zahlen korrekt definiert)
Eine Folge von ganzen Zahlen a1, a2, ..., ak ist modulo m zulässig, wenn sie mindestens eine der Restklassen nicht schneidet. Beispielsweise sind {0, 1, 2, 3} und {-4, 5, 14, 23} kein zulässiges Modulo 4, sondern {0, 1, 2, 4} und {0, 1, 5, 9} und {0, 1, 2, -3} sind zulässig modulo 4. auch {0, 1, 2, 3, 4} ist nicht zulässig , modulo 4, während {0, 1, 2} ist zulässig modulo 4.
Schließlich ist eine Folge von ganzen Zahlen einfach zulässig, wenn sie für jede ganze Zahl m ≥ 2 modulo m zulässig ist.
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine Folge von ganzen Zahlen als Eingabe verwendet und einen (konsistenten) Wahrheitswert zurückgibt, wenn die Folge zulässig ist, und einen (konsistenten) falschen Wert, wenn die Folge nicht zulässig ist.
Die Eingabesequenz von Ganzzahlen kann in jedem vernünftigen Format vorliegen. Sie können davon ausgehen, dass die Eingabesequenz mindestens zwei Ganzzahlen enthält. (Sie können auch davon ausgehen, dass die Eingabe-Ganzzahlen unterschiedlich sind, obwohl dies wahrscheinlich nicht hilft.) Sie müssen in der Lage sein, positive und negative Ganzzahlen (und 0) zu verarbeiten.
Übliche Code-Golf- Wertung: Die kürzeste Antwort in Bytes gewinnt.
Probeneingabe
Die folgenden Eingabesequenzen sollten jeweils einen Wahrheitswert enthalten:
0 2
-1 1
-100 -200
0 2 6
0 2 6 8
0 2 6 8 12
0 4 6 10 12
-60 0 60 120 180
0 2 6 8 12 26
11 13 17 19 23 29 31
-11 -13 -17 -19 -23 -29 -31
Die folgenden Eingabesequenzen sollten jeweils einen Falsy-Wert ergeben:
0 1
-1 4
-100 -201
0 2 4
0 2 6 10
0 2 6 8 14
7 11 13 17 19 23 29
-60 0 60 120 180 240 300
Tipps
- Es ist zu beachten, dass jede Folge von 3 oder weniger ganzen Zahlen automatisch als Modulo 4 zulässig ist. Im Allgemeinen ist eine Folge der Länge k automatisch als Modulo m zulässig, wenn m> k ist. Daraus folgt, dass für die Prüfung der Zulässigkeit nur eine endliche Anzahl von m geprüft werden muss.
- Man beachte auch, dass 2 4 teilt und dass jede Sequenz, die zulässiges Modulo 2 ist (dh alle geraden oder alle ungeraden), automatisch zulässiges Modulo 4 ist. Allgemeiner gesagt, wenn m n teilt und eine Sequenz zulässiges Modulo m ist, dann ist es dies automatisch zulässiges Modulo n. Zur Prüfung der Zulässigkeit genügt es daher, auf Wunsch nur Primzahl m zu berücksichtigen.
- Wenn a1, a2, ..., ak eine zulässige Folge ist, dann ist a1 + c, a2 + c, ..., ak + c auch für eine beliebige ganze Zahl c (positiv oder negativ) zulässig.
Mathematische Relevanz (optionales Lesen)
Sei a1, a2, ... eine Folge von ganzen Zahlen. Angenommen, es gibt unendlich viele ganze Zahlen n, so dass n + a1, n + a2, ..., n + ak alle Primzahlen sind. Dann ist es einfach zu zeigen, dass a1, a2, ..., ak zulässig sein muss. Nehmen wir in der Tat an, dass a1, a2, ..., ak nicht zulässig ist, und lassen Sie m eine Zahl sein, so dass a1, a2, ..., ak nicht zulässig ist, modulo m. Dann muss, egal für welches n wir uns entscheiden, eine der Zahlen n + a1, n + a2, ..., n + ak ein Vielfaches von m sein und kann daher keine Primzahl sein.
Die primäre k-Tupel-Vermutung ist die Umkehrung dieser Aussage, die in der Zahlentheorie immer noch ein weit offenes Problem darstellt: Wenn a1, a2, ..., ak eine zulässige Folge (oder k-Tupel ) ist, dann liegt diese vor sollte unendlich viele ganze Zahlen n sein, so dass n + a1, n + a2, ..., n + ak alle Primzahlen sind. Zum Beispiel liefert die zulässige Folge 0, 2 die Aussage, dass es unendlich viele ganze Zahlen n geben sollte, so dass sowohl n als auch n + 2 Primzahlen sind. Dies ist die Doppelprimen-Vermutung (noch nicht bewiesen).
quelle
[_60:0:60:120:180]
gibt mir wahr; in der Tat schneidet es nicht mindestens eine Klasse in jedemm
von2
bis5
einschließlich; Außerdem schneidet es nur eine Klasse in jederm
von2
bis5
einschließlich.-60 0 60 120 180 240 300
schneidet jede Restklasse modulo 7, ist also nicht zulässig.Antworten:
Gelee, 10 Bytes
Probieren Sie es online! oder führen Sie alle Testfälle aus .
quelle
Brachylog ,
252419 Bytes5 Bytes dank Karl Napf.
Probieren Sie es online!
Überprüfen Sie alle Testfälle!
quelle
Python,
6160 BytesAlle Testfälle auf ideone
Bearbeiten: Ersetzt logisch und mit bitweise &, um ein Byte zu speichern
quelle
JavaScript (ES6), 59 Byte
Verwendet den Reststrick von @ KarlNapf.
quelle
Python,
6764 BytesAls unbenanntes Lambda:
set()
durch{}
all(...)
range
muss auf gehenlen(N)+1
Alter Code als Funktion (96 Bytes):
quelle
Mathematica, 51 Bytes
quelle
MATL , 11 Bytes
Wahrheit ist ein Array (Spaltenvektor), das alle enthält. Falsy ist ein Array, das mindestens eine Null enthält. Sie können diese Definitionen über diesen Link überprüfen .
Probieren Sie es online! Oder überprüfen Sie alle Testfälle: wahr , falsch (leicht veränderter Code, jeder Fall erzeugt einen horizontalen Vektor zur Verdeutlichung).
Erläuterung
quelle