Die Herausforderung
Eine einfache Herausforderung "Spion gegen Spion".
Schreiben Sie ein Programm mit folgenden Spezifikationen:
- Das Programm kann in einer beliebigen Sprache geschrieben sein, darf jedoch nicht länger als 512 Zeichen sein (wie in einem Codeblock auf dieser Site dargestellt).
- Das Programm muss 5 vorzeichenbehaftete 32-Bit-Ganzzahlen als Eingaben akzeptieren. Es kann die Form einer Funktion annehmen, die 5 Argumente akzeptiert, einer Funktion, die ein einzelnes Array mit 5 Elementen akzeptiert, oder eines vollständigen Programms, das 5 Ganzzahlen aus einer beliebigen Standardeingabe liest.
- Das Programm muss eine vorzeichenbehaftete 32-Bit-Ganzzahl ausgeben.
- Das Programm muss genau dann 1 zurückgeben, wenn die fünf als Folge interpretierten Eingaben mit einer bestimmten arithmetischen Folge der Wahl des Programmierers übereinstimmen, die als "Schlüssel" bezeichnet wird. Die Funktion muss für alle anderen Eingänge 0 zurückgeben.
Eine arithmetische Folge hat die Eigenschaft, dass jedes aufeinanderfolgende Element der Folge dem Vorgänger plus einer festen Konstante entspricht a
.
Dies ist beispielsweise 25 30 35 40 45
eine arithmetische Folge, da jedes Element der Folge dem Vorgänger plus 5 entspricht.17 10 3 -4 -11
entspricht. Dies ist auch eine arithmetische Folge, da jedes Element dem Vorgänger plus -7 entspricht.
Die Folgen 1 2 4 8 16
und 3 9 15 6 12
sind keine arithmetischen Folgen.
Ein Schlüssel kann eine beliebige arithmetische Folge Ihrer Wahl sein, mit der einzigen Einschränkung, dass Folgen mit Ganzzahlüberlauf nicht zulässig sind. Das heißt, die Reihenfolge muss streng zunehmen, streng abnehmen oder alle Elemente müssen gleich sein.
Angenommen, Sie wählen den Schlüssel aus 98021 93880 89739 85598 81457
. Ihr Programm muss 1 zurückgeben, wenn die Eingaben (nacheinander) mit diesen fünf Zahlen übereinstimmen, andernfalls 0.
Bitte beachten Sie, dass das Mittel zum Schutz des Schlüssels von Ihrem eigenen neuartigen Design sein sollte. Probabilistische Lösungen, die mit einer Wahrscheinlichkeit ungleich Null falsch positive Ergebnisse liefern können, sind ebenfalls nicht zulässig. Verwenden Sie insbesondere keine standardmäßigen kryptografischen Hashes, einschließlich Bibliotheksfunktionen für standardmäßige kryptografische Hashes.
Die Wertung
Die kürzeste (n) nicht geknackte (n) Einsendung (en) pro Zeichenanzahl wird (werden) zum Gewinner erklärt.
Bei Unklarheiten können Sie gerne nachfragen oder Kommentare abgeben.
Die Gegen-Herausforderung
Alle Leser, einschließlich derer, die ihre eigenen Programme eingereicht haben, werden aufgefordert, Einsendungen zu "knacken". Ein Beitrag wird geknackt, wenn sein Schlüssel im zugehörigen Kommentarbereich veröffentlicht wird. Wenn eine Einreichung 72 Stunden lang ohne Änderung oder Crack andauert, wird sie als "sicher" eingestuft und jeder nachfolgende Erfolg beim Cracken wird für den Wettbewerb ignoriert.
Unter "Haftungsausschluss" finden Sie Einzelheiten zur aktualisierten Richtlinie für Cracking-Scores.
Gebrochene Einsendungen werden von der Konkurrenz ausgeschlossen (sofern sie nicht "sicher" sind). Sie sollten nicht bearbeitet werden. Wenn ein Leser ein neues Programm einreichen möchte, sollte er dies in einer separaten Antwort tun.
Der / die Cracker mit der (den) höchsten Punktzahl (en) wird (werden) zusammen mit den Entwicklern der Gewinnerprogramme zum Gewinner erklärt.
Bitte knacken Sie nicht Ihren eigenen Beitrag.
Viel Glück. :)
Bestenliste
Vorletzte Platzierung (in Erwartung der Sicherheit von Dennis 'Einreichung von CJam 49).
Sichere Schließfächer
- CJam 49, Dennis
- CJam 62, Dennis sicher
- CJam 91, Dennis sicher
- Python 156, Maarten Baert sicher
- Perl 256, chilemagic safe
- Java 468, Geobits sicher
Unaufhaltsame Cracker
- Peter Taylor [Ruby 130, Java 342, Mathematica 146 *, Mathematica 72 *, CJam 37]
- Dennis [Python 13, Python 86 *, Lua 105 *, GolfScript 116, C 239 *]
- Martin Büttner [Javascript 125, Python 128 *, Ruby 175 *, Ruby 249 *]
- Tyilo [C 459, Javascript 958 *]
- freddieknets [Mathematica 67 *]
- Ilmari Karonen [Python27 182 *]
- salpetrig [C 212 *]
* nicht konforme Einreichung
Haftungsausschluss (Aktualisiert 23.15 Uhr EST, 26. August)
Da die Bewertungsprobleme endlich die kritische Masse erreichen (vorausgesetzt, zwei Drittel der geknackten Einreichungen sind bislang nicht konform), habe ich die besten Cracker in Bezug auf die Anzahl der geknackten Einreichungen (primär) und die Gesamtzahl der Zeichen in konformen geknackten Einreichungen eingestuft (sekundär).
Wie zuvor sind die genauen Einsendungen geknackt, die Länge der Einsendungen und ihr Konformitäts- / Nicht-Konformitätsstatus markiert, sodass die Leser ihre eigenen Rankings ableiten können, wenn sie glauben, dass die neuen offiziellen Rankings unfair sind.
Ich entschuldige mich dafür, dass ich die Regeln so spät im Spiel geändert habe.