Schreiben Sie das kürzeste Programm oder die kürzeste Funktion, die diese 1000 Zahlen erzeugt, oder eine Sequenz (0- oder 1-indiziert), die mit ihnen beginnt.
[0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]
code-golf
sequence
kolmogorov-complexity
John Mangual
quelle
quelle
Antworten:
Gelee ,
1110 Bytes1 Byte dank @Dennis gespeichert
Probieren Sie es online aus!
Wie?
Ich bemerkte zuerst, dass das Muster zwischen Läufen der Länge 4 und der Länge 3 wechselt und alle paar Läufe den Schritt der Länge 4 überspringt. Dies veranlasste mich, nach einer Zahl zu suchen, die in den aktuellen Index unterteilt werden konnte, dann Mod 2 nahm und den Boden erreichte - dh das niedrigstwertige Bit abrief -, um das Bit an diesem Index in der Reihe zu erhalten. Nach langem Ausprobieren stellte ich fest, dass
3.41845
genau das funktioniert, aber das Multiplizieren mit dem ungefähren reziproken Wert (.29253
) ist ein Byte kürzer.quelle
Ḃ
aber anscheinend ist das nur Mod 2 und nicht das niedrigste Bit, also habe ich das hinzugefügtḞ
, um es zu beheben. JetztȷḶ×⁽q£:ȷ5Ḃ
funktioniert für 10 Bytes.Dyalog APL ,
998382 BytesProbieren Sie es online aus!
Auf jeden Fall nicht die beabsichtigte Lösung, da diese immer noch viele fest codierte Daten enthält, aber es ist ein Anfang.
quelle
Ruby ,
34 29 2622 BytesProbieren Sie es online aus!
Kurze Erklärung: Dies funktioniert aufgrund der magischen Zahl 629. Ich bemerkte, dass sich die Sequenz nach dem 629. Element zu wiederholen beginnt, und versuchte, eine vorhandene Antwort zu "verbessern", indem ich nur ganzzahlige Mathematik verwendete. Ich fand heraus, dass die andere "magische Zahl" (0,29253) tatsächlich 184/629 ist.
quelle
Gelee , 31 Bytes
Angesichts des Musters gibt es wahrscheinlich einen noch kürzeren Weg ...
Probieren Sie es online aus!
Wie?
Nutzt die sich wiederholende Lauflängenstruktur aus, die bis zu einer Tiefe von drei erkennbar ist.
quelle
Java 8,
756462 BytesDruckt die gesamte Sequenz ohne Trennzeichen, um Bytes zu speichern, da dies nur
0
und1
ohnehin der Fall ist.Ports of @ETHproductions 'Jelly antworten , weil ich bezweifle, dass ich etwas kürzeres finde.
Probieren Sie es online aus.
Erläuterung:
Alte Antwort, die das resultierende Array zurückgibt ( 75 Bytes ):
Probieren Sie es online aus.
Erläuterung:
quelle
JavaScript (Node.js) ,
4133 Byte, PortVielen Dank an Rick Hitchcock für 4+ Bytes
Probieren Sie es online aus!
JavaScript (Node.js) , 121 Byte, Original
Probieren Sie es online aus!
quelle
f=(i=0)=>i<1e3?(i*.29253&1)+f(i+1):''
Stax ,
1311 BytesFühren Sie es aus und debuggen Sie es unter staxlang.xyz!
Portieren Sie die Jelly-Antwort von @ ETHproductions (vor der Änderung) mit einigen Änderungen von @recursive auf Stax, um zwei Bytes zu sparen.
quelle
Wolfram Language (Mathematica) , 96 Bytes
Ich habe nach einem zellularen Automaten gesucht, der die 4 Nachbarn auf der linken Seite betrachtet und das in den Daten gezeigte Muster für das Gehen nach links erzeugt, wenn Sie die Daten in Länge 7 unterteilen und jede dritte Zeile beibehalten.
Dieser zellulare Automat läuft 29 Generationen lang, von denen jede dreifach ist, wobei die Sequenz perfekt für die Zeichen 1 bis 629 übereinstimmt. Die Sequenz beginnt jedoch mit dem 630. Zeichen zu wiederholen, anstatt das beobachtete Muster fortzusetzen, sodass zusätzlicher Code erforderlich ist, um die Wiederholung von zu handhaben das abgeschnittene Muster. Ich generiere das Hauptmuster zweimal, um 1258 Zeichen zu erhalten.
Ohne diesen Fehler könnten wir es in kürzeren 74 Bytes tun. Die 47 ist die Anzahl der Generationen, die benötigt werden, um 1000 Zeichen zu erreichen (dies entspricht tatsächlich 1008 = 48 * 7 * 3).
Probieren Sie es online aus!
quelle
Z80Golf , 27 Bytes
Probieren Sie es online aus!
Übersetzt aus diesem C-Code:
Demontage:
Dies ist im Wesentlichen ein Festkomma-Arithmetik-Ansatz: (11149 + 65536) / 2 18 ≈ 0,29253, die von anderen Antworten verwendete Konstante.
quelle
J , 17 Bytes
AJ Port der Jelly-Antwort von ETHproduction.
Probieren Sie es online aus!
quelle
Japt , 13 Bytes
Japt-Version der Jelly-Antwort von ETHproduction .
Fehler dank Oliver behoben .
Probieren Sie es hier aus.
quelle
Holzkohle , 13 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
Vielen Dank an @ ASCII-only, damit die Indizierung Floats akzeptieren kann, die in Integer umgewandelt werden (und in diesem Fall automatisch Modulo 2 reduziert werden).
quelle
C,
555352 BytesPort of Kevin Cruijssens Java- Antwort . Probieren Sie es hier online aus .
Vielen Dank an vazt für das Golfen von 2 Bytes und an Jonathan Frech für das Golfen von einem weiteren.
Ungolfed Version:
quelle
i
wird auf 0 initialisiert, da es global ist, sodass Sie deni=0
Initialisierer aus der for-Schleife entfernen können, um 3 Bytes zu sparen. Auch wenn Sie eine zweite Variable (als Parameter fürf()
) einführen und dieser zuweiseni++*.29253
, können Sie die Umwandlung vermeiden und weitere 2 Bytes speichern:i;f(j){for(;i<1e3;)printf("%d",(j=i++*.29253)%2);}
Probieren Sie es online aus!i
wird am Anfang auf 0 initialisiert, aber wenn wir diese Funktion mehr als einmal aufrufen möchten, ist das nicht gut genug. Diej
Vermeidung der Besetzung ist ein großartiger Golf, danke./// , 63 Bytes
Probieren Sie es online aus!
quelle