Bei einer Liste positiver Ganzzahlen wird ausgegeben, ob jedes benachbarte Ganzzahlpaar einen Primfaktor gemeinsam hat. Mit anderen Worten, die Ausgabe ist genau dann wahr, wenn keine zwei benachbarten Ganzzahlen in der Liste Co-Primzahlen sind.
Mit anderen Worten: Geben Sie bei einer Liste positiver Ganzzahlen [a 1 a 2 … a n ] aus , ob
gcd (a 1 , a 2 )> 1 && gcd (a 2 , a 3 )> 1 &&… && gcd (a n - 1 , a n )> 1.
Die Liste enthält immer mindestens zwei Elemente (n ≥ 2).
Jedoch…
Diese Herausforderung hat auch eine eingeschränkte Quelle : Die Codepunkte in Ihrer Antwort (in welcher Codepage auch immer) müssen die Bedingung erfüllen, auf die Ihr Programm prüft.
Zum Beispiel print 2
ist ein gültiges Programm. Als eine Liste von Unicode-Codepunkten ist es [112 114 105 110 116 32 50] , das diese Bedingung erfüllt: 112 und 114 teilen sich einen Faktor von 2 ; und 114 und 105 teilen sich einen Faktor von 3 usw.
main
Kann jedoch in einem gültigen Programm nicht vorkommen (sorry!), Da die Unicode-Codepunkte von m
und a
, nämlich 109 und 97 , Coprime sind. (Zum Glück muss Ihr Beitrag kein vollständiges Programm sein!)
Ihr Programm darf nicht den Codepunkt 0 enthalten.
Testfälle
Wahrheit:
[6 21] -> 1
[502 230 524 618 996] -> 1
[314 112 938 792 309] -> 1
[666 642 658 642 849 675 910 328 320] -> 1
[922 614 530 660 438 854 861 357 477] -> 1
Falsch:
[6 7] -> 0
[629 474 502 133 138] -> 0
[420 679 719 475 624] -> 0
[515 850 726 324 764 555 752 888 467] -> 0
[946 423 427 507 899 812 786 576 844] -> 0
Das ist Code-Golf : Der kürzeste Code in Bytes gewinnt.
%)+/5;=CGIOSYaegkmq\DEL
.print 2
das gültig ist, aber);=ae
Prime zu sein ist wirklich hart, das habe ich nicht in Betracht gezogen ... Ich frage mich, ob so etwas wie Haskell das kann konkurrieren?Antworten:
MATL , 14 Bytes
Dies gibt einen nicht leeren Spaltenvektor von Zahlen ungleich Null als wahr oder einen Vektor mit mindestens einem Null-Eintrag als falsch aus.
Probieren Sie es online!
Überprüfen Sie alle Testfälle . Der Footer-Code enthält eine
if
Verzweigung, um die Richtigkeit / Falschheit zu testen.Da MATL ASCII verwendet, wird der Quellcode als codiert
was die Anforderung erfüllt .
Erläuterung
quelle
Haskell ,
103100 BytesBEARBEITEN:
d<-fz
Guard werden die letzten beiden Zeilen zusammengeführt und gekürzt.f
ist die Hauptfunktion, die eine Liste von ganzen Zahlen aufnimmt und a zurückgibtBool
.Beachten Sie, dass die ersten beiden
ԁ
s (nur) kyrillische (Komi) Unicode-Zeichen sind und vor dem ersten ein Tabulatorzeichen steht.Probieren Sie es online! oder testen Sie es an sich.
Wie es funktioniert
f
ist die Hauptfunktion. Alles, was es tut, ist, sein Argumentԁ
in eine Singleton-Liste zu packen (weil der ASCII-Primärwert von)
Klammern viel umständlicher zu verwenden ist als eckige Klammern) und damit aufzurufenzb
und ein Dummy-Argument (die Haskell-Funktion hatid
zufällig genau die richtigen Zeichen, die passen) Hier).=]
ist mit normalem ASCII nicht möglich, daher wird das Argument mit dem 2-Byte-Unicode-ZeichenCYRILLIC SMALL LETTER KOMI DE (ԁ)
, dem Codepunktwert, benannt3*7*61=U+0501
, der zu all diesen und passt[
.f fz|bf<-fz=zb[bf]fz
.zb
Es werden zwei Argumente verwendet, eine Singleton-Liste, deren Element die rekursive Liste der reellen Zahlen ist, und ein Dummy-Argumentfz
, das nur benötigt wird, um einz
vor den=
s der Funktion zu erhalten .z
wird mit den ersten beiden (benannt genannth
undp
), und wenn das zurückkehrtTrue
,zb
rekursiv auf den Schwanzp:l
von der Liste.zb
zurückgegebenTrue
. Da=
dem Zeichen gefolgt werden mussz
, ist die einfachste Möglichkeit, einen Aufruf derz
Funktion zu verwenden, von der bekannt ist, dass sie zurückgibtTrue
.z
Nimmt zwei Argumente und berechnet rekursiv ihren größten gemeinsamen Divisor mithilfe der Subtraktion (jede andere relevante Ganzzahldivision oder gcd-Funktion ist nicht verfügbar) und gibt zurück,True
wenn sie größer als eins ist.0
, wobei das zweite Argument der gcd ist. In dieser Zeile wird auch das zweite Argument genanntz
. Das Zeichen1
ist hier unangenehm undz^0
wird verwendet, um die Nummer eins zu bekommen.f
kleiner als das zweitefz
, werden sie vertauscht undz
rekursiv.z
wiederholt (auch das Vertauschen der Argumente, obwohl dies nur zur Vermeidung von Klammern dient).quelle
05AB1E , 8 Bytes
Code
Verwendet die 05AB1E- Codierung , die die folgende Liste von Codepunkten enthält:
Probieren Sie es online! oder Überprüfen Sie den Quellcode!
Erläuterung
Da der gcd-Operator (
¿
) einen Prim-Code-Punkt hat, musste ich nach anderen Möglichkeiten suchen, um die Koprimalität zu überprüfen:quelle
Ò
vorbeif
?Schale , 8 Bytes
Für Wahrheitseingaben wird eine positive Ganzzahl zurückgegeben, für Falsy wird 0 zurückgegeben
Probieren Sie es online! und an eigenen Codepunkten getestet
Verwendet die Codepage von Husk
Erläuterung
quelle
Ṡ
? Ich sehe es auch in den Dokumenten in der "Typ" -Spalte auf der Befehlsseite und kann mich nicht darum kümmern, also möchte ich es nachschlagen, damit ich es vielleicht lernen kann.Ṡ
in Haskells Syntax. Es übersetzt ungefährṠ(f,g,x) = f(g(x),x)
in gängigere Sprachen.`Ṡ g f x = Ṡ f g x = f (g x) x
Japt ,
87 BytesOnline testen!
Code Punkte:
Erläuterung
quelle
Jelly ,
119 Bytes2 Bytes dank @ Jonathan Allan gespeichert .
Probieren Sie es online!
Jelly hat eine eigene Codepage und die Codepunkte der einzelnen Zeichen sind
Hiermit wird geprüft, ob es sich um Nicht-Coprime-Nummern handelt
lcm(a, b) != a*b
. Es könnte eine kürzere Lösung geben, da ich nur nach Zeichen mit geraden Codepunkten gefiltert habe.Erläuterung
quelle
,
ist auch so, dass Sieæln,P¥ð2\
für zwei weniger tun können . Edit: Ich habe das Trailing fallen gelassenP
, mach das weniger: p)TI-BASIC, 38 Bytes
TI-BASIC ist wie hier aufgeführt in Ein-Byte- oder Zwei-Byte-Token unterteilt .
Die schwierigsten Teile dieser Lösung waren:
Das Komma-Token ist eine Primzahl (43) und zwingt mich, es mit einem Vielfachen von 43 zu umgeben (in diesem Fall das V-Token, das 86 ist).
Der gcd (Token ist eine große Primzahl (47881), was bedeutet, dass er überhaupt nicht verwendet werden kann.
Die Token für dieses Programm werden ausgegeben an:
Erläuterung
quelle
Pyth , 15 Bytes
Probieren Sie es hier aus oder testen Sie die Test Suite.
Dies ist eine Zusammenarbeit zwischen Erik the Outgolfer und Mr. Xcoder . Gibt einen inkonsistenten Wert (nicht leere Liste) für truthy und die leere Liste für falsy zurück.
ASCII-Werte
Welche teilen die folgenden Faktoren:
Erläuterung
Ohne die eingeschränkte Quellenanforderung wäre dies eine
75-Byte-Version gewesen, die dieselbe Aufgabe erfüllt (-2 dank FryAmTheEggman ):Erläuterung
quelle
Q
s am Ende?.b
es variable Aritäten gibt und implizite Eingaben verwendet, wird die niedrigste (1) ausgewählt, anstatt die beabsichtigte (2).