Dies ist eine Herausforderung für Bullen und Räuber . Für den Räuber Faden, gehen hier .
Diese Herausforderung beinhaltet zwei OEIS- Sequenzen, die von den Cops ausgewählt wurden - S 1 , S 2 - und wie gut diese Sequenzen golfen und verschleiert werden können.
Die Herausforderung der Bullen
Ihre Herausforderung als Polizist besteht darin, eine frei verfügbare Sprache und zwei OEIS-Sequenzen auszuwählen . Dann schreibe Code A in die Sprache, die die Eingabe n nimmt und S 1 (n) erzeugt. Wenn dieser Code um einen Levenshtein-Abstand von X Zeichen (wobei X nicht mehr als 0.5 * (length A)
) geändert und in Code B in derselben Sprache umgewandelt wird, muss er S 2 (n) erzeugen . Sie müssen diesen Code B tatsächlich schreiben , aber nicht offenlegen, bis Ihre Herausforderung sicher ist (siehe unten).
Die Cops müssen den Namen der Sprache, den vollständigen Code A , die Anzahl der Bytes von A , den X- Wert für die Anzahl der Änderungen an ihrem geheimen B- Code und die gewählten S 1 - und S 2 -Sequenznummern enthalten. Sie können wählen, ob jede Sequenz 0-indiziert oder 1-indiziert ist. Bitte geben Sie dies in Ihrer Einreichung an.
Um einen bestimmten Beitrag zu knacken, müssen Räuber ein Programm C in derselben Sprache (und Version) entwickeln, das S 2 (n) erzeugt und bei dem das Y- Zeichen von A (mit Y <= X
) abweicht. Räuber müssen nicht unbedingt denselben B- Code finden, den der Cop (heimlich) produziert hat.
Gewinnen und Punkten
Wenn Ihre Antwort nicht innerhalb von 7 Tagen (168 Stunden) geknackt wurde, können Sie Ihre eigene B- Lösung aufdecken. Zu diesem Zeitpunkt gilt Ihre Antwort als sicher. Solange Sie Ihre Lösung nicht preisgeben, kann sie auch dann von Räubern geknackt werden, wenn die sieben Tage bereits verstrichen sind. Wenn Ihre Antwort geknackt wird, geben Sie dies bitte in der Kopfzeile Ihrer Antwort zusammen mit einem Link zur Antwort des entsprechenden Räubers an.
Polizisten gewinnen, indem sie die ungerissene Vorlage mit dem kürzesten A haben . Wenn es gebunden ist, wird das kleinste X als Unterbrecher verwendet. Wenn immer noch unentschieden, gewinnt die frühere Einreichung.
Weitere Regeln
- Sie dürfen keine integrierten Funktionen zum Hashing, zur Verschlüsselung oder zur Generierung von Zufallszahlen verwenden (auch wenn Sie den Zufallszahlengenerator auf einen festen Wert setzen).
- Es sind entweder Programme oder Funktionen zulässig, aber der Code darf kein Snippet sein und Sie dürfen keine REPL-Umgebung annehmen.
- Sie können Eingaben und Ausgaben in jedem beliebigen Format vornehmen . Die Eingabe- / Ausgabemethoden müssen für beide Sequenzen gleich sein.
- Der endgültige Rechner für die Levenshtein-Distanz für diese Herausforderung ist dieser auf Planet Calc.
- Dies ist nicht nur eine CnR-Herausforderung, sondern auch Code-Golf. Daher gelten alle üblichen Golfregeln.
quelle
(0.5*len(A))
Antworten:
Brain-Flak , 28 Bytes, Abstand von 4, A002817 , A090809GebrochenDiese Antwort verwendet die 1-Indizierung
Probieren Sie es online aus
Für alle Interessierten gibt es 27475 gültige Brain-Flak-Programme mit Levenshtein Abstand 4 von diesem Programm und 27707 mit Abstand 4 oder weniger. Eine Brute-Force-Lösung wäre also auf einem Computer für Endverbraucher möglich.
quelle
X = 4
stattdessen habenLevenshtein distance of 4
.X
ist wirklich die einzige Variable, die sie kennen müssen.7 , 33 Zeichen, 13 Bytes, X = 10, A000124 → A000142 , Sicher
Probieren Sie es online!
Die Levenshtein-Distanz wird in Zeichen angegeben, daher habe ich das Programm in den oben angegebenen Zeichen angegeben (und Try it online !, einschließlich der Sprache, kann gerne Programme ausführen, die in ASCII codiert sind). Das Programm wird jedoch mit der Sub-Byte-Codierung von 7 auf der Festplatte gespeichert, was bedeutet, dass das Programm selbst der folgende Hexdump ist (also 13 Byte lang):
(Da der Levenshtein-Abstand in Zeichen gemessen wird, müssen Sie hier nicht unbedingt 10 Bytes hinzufügen / löschen / ändern. Daher ist es wahrscheinlich am besten, mit dem Original-ASCII zu arbeiten.)
Das geschriebene Programm implementiert A000124 (Dreieckszahlen + 1); Jeder Riss muss A000142 (Fakultäten) implementieren. Beide Programme nehmen die Eingabe von stdin (als Dezimalzahlen), schreiben ihre Ausgabe in stdout und behandeln eine Eingabe von 1 als erstes Element der Sequenz (und eine Eingabe von 2 als zweites Element usw.).
Hoffentlich wird der sehr hohe X-Wert die Leute davon abhalten, das Programm brutal zu erzwingen (was bei Cops-and-Robbers-Einträgen in 7 immer ein Risiko darstellt).
Die Lösung
Probieren Sie es online!
Unterschiede zum Original:
Ich habe keine Erklärungen vorbereitet, wie diese funktionieren, deshalb werde ich eine Weile brauchen, um eine Erklärung zu bekommen, da ich es fast von Grund auf neu herausfinden muss. Hoffentlich gibt es irgendwann eine Erklärung.
quelle
Pyke, Levenshtein Entfernung von 1, A036487 , A135628 .
Geknackt!
Probieren Sie es hier aus!
quelle
Perl 6 , 10 Bytes, X = 1, A000012 → A001477
Geknackt!
S 1 = A000012 =
1,1,1,1,1,...
= Die Sequenz aller Einsen . (0-indiziert)S 2 = A001477 =
0,1,2,3,4,...
= Die nichtnegativen ganzen Zahlen. (0-indiziert)Probieren Sie es online!
Es wurde bestätigt, dass es mit Perl 6 Release 2017.01 und mit der auf TIO ausgeführten Perl6-Version funktioniert.
( A könnte weiter golfen werden
1***
- ich hoffe es ist auch so erlaubt wie es ist.)quelle
Perl 6 , 13 Bytes, X = 1, A161680 → A000217
Sicher!
0 0 1 3 6 10 15 21...
= Null gefolgt von den Dreieckszahlen.0 1 3 6 10 15 21 28 ...
= Die Dreieckszahlen.Probieren Sie es online!
(Es wurde bestätigt, dass es mit der Perl 6-Version unter TIO funktioniert.)
Lösung
So funktioniert das Original:
So funktioniert die Lösung:
Nutzt die Tatsache aus, dass numerische Operatoren wie das Addieren eine Liste als Anzahl von Elementen behandeln, so dass im Beispiel die Summe ist
1 + 2 + 3 + 4 = 10
.Und ja, das No-Op "Reduzieren mit Komma" im Original umgeht irgendwie die Code-Golf-Regeln, aber ich betrachte es lieber als einen albernen Algorithmus, für den so viel wie möglich Golf gespielt wurde (Whitespace usw.) was es ist... :)
quelle
Jelly , 11 Bytes, X = 5, A005185 → A116881
Dies ist ein vollständiges Programm, das eine Ganzzahl als Befehlszeilenargument verwendet und eine Ganzzahl ausgibt.
Beide Sequenzen sind wie bei OEIS indiziert, dh A005185 ist 1-indiziert und A116881 ist 0-indiziert.
Probieren Sie es online!
quelle
Javascript, 41 Bytes, Abstand von 3, A061313 , A004526 , Gebrochen
Probieren Sie es online
Verwendet 1-basierte Indizierung, die Lösung verwendet 0-basierte Indizierung.
Nochmals eine andere Lösung ...
quelle
Perl 6 , 19 Bytes, X = 1, A000045 → A000035
Geknackt!
0 1 1 2 3 5 8 13 21 34...
= "Fibonacci-Zahlen". ( 0-indiziert )0 1 0 1 0 1 0 1 0 1...
= "Period 2". ( 0-indiziert )Probieren Sie es online!
(Es wurde bestätigt, dass es mit der Perl 6-Version unter TIO funktioniert.)
quelle
WolframAlpha, 18 Bytes, X = 1Von math_junkie geknackt!
Manchmal kann WolframAlpha tatsächlich eine solche reine Funktion in funktionaler Form anzeigen (manchmal wird es verwirrend). aber es kann mit einer bestimmten Eingabe fröhlich aufgerufen werden - zum Beispiel
(sum1to#of n^1)*2&@5
Erträge30
.S1 = A002378 (Pronenzahlen)
S2 = A000537 (Summe der ersten
n
Würfel)Beide Sequenzen sind 0-indiziert.
quelle
Pyke, Levenshtein Entfernung von 2, A008788 , A007526
Geknackt!
Probieren Sie es hier aus!
Lassen Sie uns etwas härter werden, sollen wir?
Die erste Antwort basiert auf 1 und der Riss auf 0.
quelle
Javascript, 15704 Bytes, Abstand von 2, A059841 und A000004 - geknackt
Diese Lösung ist extrem lang, sodass Sie den vollständigen Code in diesem Github finden.
Die ursprüngliche Antwort (diese) ist 1 indiziert. (Ich weiß, das ist viel zu lang, es ist nur zum Spaß.)
quelle
Brain-Flak , 16 Bytes, Levenshtein Abstand von 4, A000217 und A002378 - Gebrochen von Martin Ender!
Probieren Sie es online!
Dies sollte ziemlich leicht zu knacken sein.
quelle
Javascript, 30 Bytes, Abstand von 4, A000290 , A000079 , - Gebrochen!
0-basierte Indizierung
Die Lösung von @Kritixi Lithos war tatsächlich anders als meine
Probieren Sie es online aus
quelle
x**2
und nicht2**x
Javascript (ES6), Entfernung ist 1, A000079 und A000004 - geknackt
Die ursprüngliche Antwort (diese) basiert auf 0. Nachdem es geknackt wurde, ist hier die ursprüngliche B-Funktion:
quelle
Perl 6 , 7 Bytes, X = 2, A059841 → A001477
Geknackt!
1 0 1 0 1 0 1 0...
= "* Periode 2: Wiederholen (1,0)". (0-indiziert)0 1 2 3 4 5 6 7...
= "Die nichtnegativen ganzen Zahlen". (0-indiziert)Probieren Sie es online!
(Es wurde bestätigt, dass es mit der Perl 6-Version unter TIO funktioniert.)
quelle
Java 7, Levenshtein Abstand von 4, A094683 , A000290 , Gebrochen
0-indiziert.
Probieren Sie es hier aus!
quelle