In dieser Cops-and-Robbers- Challenge wird sich Cops eine positive ganze Zahl ausdenken. Sie schreiben dann ein Programm oder eine Funktion, die einen Wert ausgibt, wenn die Zahl als Eingabe bereitgestellt wird, und einen anderen Wert für alle anderen positiven Ganzzahleingaben. Die Polizei wird dann das Programm in einer Antwort enthüllen, die die Nummer geheim hält. Räuber können eine Antwort knacken, indem sie die Nummer finden.
Hier ist der Haken: Dies ist kein Code-Golf , sondern Ihre Punktzahl ist die Geheimzahl, wobei eine niedrigere Punktzahl besser ist. Offensichtlich kannst du deine Punktzahl nicht verraten, während Räuber immer noch versuchen, sie zu finden. Bei einer Antwort, die eine Woche nach dem Posten nicht geknackt wurde, wird möglicherweise die Punktzahl angezeigt und als sicher eingestuft. Sichere Antworten können nicht geknackt werden.
Es ist wahrscheinlich selbstverständlich, aber Sie sollten in der Lage sein, Ihre Antwort zu bewerten. Das heißt, Sie sollten genau wissen, welchen Wert Ihre Entscheidungsmaschine akzeptiert. Nur zu wissen, dass es einen gibt, reicht nicht aus.
Verwendung von kryptografischen Funktionen
Im Gegensatz zu den meisten Cops und Räubern, bei denen Sie aufgefordert werden, keine kryptografischen Funktionen zu verwenden, werden sie bei dieser Herausforderung nicht nur vollständig zugelassen, sondern ermutigt. Sie können auf jede Art und Weise Antworten erstellen, solange Sie versuchen, zu gewinnen. Antworten mit anderen Methoden sind hier allerdings auch willkommen. Das Ziel der Herausforderung ist es, zu gewinnen, und solange Sie nicht schummeln, ist nichts vom Tisch.
quelle
A(9,9)
woA
die Funktion Ackerman.Antworten:
Tampio , Gebrochen
Laufen mit:
Die Anweisungen zum Installieren des Interpreters finden Sie auf der Github-Seite. Bitte sagen Sie, wenn Sie irgendwelche Schwierigkeiten haben, dies auszuführen.
quelle
Perl 6 - Gebrochen!
Streng genommen ist dies keine akzeptable Einreichung, da es nicht sehr schwer ist, zu gewinnen. Stattdessen hofft es, ein angenehmes Puzzle zu bieten.
Es ist ein "reines Mathe" -Programm, das durch Kontemplation geknackt werden soll. Ich bin mir sicher, dass Sie die Lösung brutal erzwingen können (nachdem Sie einige schlampige Programme bereinigt haben, die ich absichtlich begangen habe), aber für "volle Gutschrift" (: -)) sollten Sie in der Lage sein, zu erklären, was sie aus mathematischen Gründen tut .
Sie sollen die Funktion f () knacken. (Dies ist die Funktion, die eine natürliche Zahl annimmt und eines der beiden Ergebnisse zurückgibt.) Warnung: Wie von @Nitrodon gezeigt, verhält sich das Programm tatsächlich falsch und "akzeptiert" eine unbegrenzte Anzahl von Eingaben. Da ich keine Ahnung habe, wie das Problem behoben werden kann, stelle ich für die zukünftigen Löser nur fest, dass die Zahl, an die ich gedacht habe, unter 70000 liegt .
Wenn Sie versuchen , dies in TIO zu laufen, es wird eine Zeitüberschreitung. Das ist beabsichtigt. (Da es gar nicht laufen soll!)
Schließlich habe ich versucht, einigermaßen klaren Code zu schreiben. Sie sollten es größtenteils fließend lesen können, auch wenn Sie mit der Sprache nicht vertraut sind. Nur zwei Bemerkungen: die eckigen Klammern [ op ] bedeuten das Reduzieren ("Falten", in Haskell-Jargon) einer Liste mit dem Operator op ; und das aufgerufene Sub
postfix:<!>
definiert tatsächlich einen Postfix-Operator namens! (dh verwendet wie5!
- es macht genau das, was Sie erwarten würden). Ähnliches gilt für denprefix:<∫>
einen.Ich hoffe, dass jemand Spaß daran hat, aber ich bin nicht sicher, ob ich die Schwierigkeit richtig verstanden habe. Fühlen Sie sich frei, mich in den Kommentaren zu schlagen: -).
Probieren Sie es online!
quelle
JavaScript, geknackt
Ich habe dies so oft verschleiert, bis es nicht mehr in diese Antwort passt.
Probieren Sie es hier aus! Klicken Sie auf Ausführen und geben Sie die Konsole ein
guess(n)
Gibt undefined zurück, wenn Sie die falsche Antwort erhalten, andernfalls true.
Edit: Irgendwie habe ich übersehen, dass meine Punktzahl die Zahl ist. Na ja, meine Nummer ist sehr sehr groß. Trotzdem viel Glück beim Lösen.
quelle
Gelee , Gäste: ... 1 ( geknackt )
Probieren Sie es online!
1 Wirklich erwartet, dass ich es enthülle? Komm schon! Na ja, es hat eine Punktzahl von 134. Dort habe ich es gesagt!
quelle
Ç€G
und den Bereich1...1000
als Eingabe: P5ȷ2_
Teil richtig gesehen?1
ist, dann habe ich die Zeichenfolge von Anfang bis Ende1
in ein Python-Skript eingefügt und die Anzahl der Nullen davor gezählt ...Python 2 (geknackt)
Ich würde keine rohe Gewalt vorschlagen. Hoffe du magst Generatoren!
Probieren Sie es online!
Ansonsten wird
1
für die richtige Nummer0
ausgegeben.quelle
a
sollte seini+a
. Ich habe es behoben, aber es ist trotzdem AchselzuckenHaskell , geknackt
Dies basiert rein auf Arithmetik. Beachten Sie, dass dies
myfun
die eigentliche Funktion ist, währendh
es sich nur um eine Hilfsfunktion handelt.Probieren Sie es online!
quelle
Java, geknackt von Nitrodon
Ich wollte etwas anderes als die üblichen Hash- und Zufallsfunktionen ausprobieren. Sie können die Nummer als Befehlszeilenargument übergeben. Gibt aus,
1
ob die richtige Nummer angegeben ist und0
ansonsten. Für kleine Nummern können Sie es auch online ausprobieren .Hinweis:
Erläuterung:
quelle
Pyth, Gebrochen von Erik der Outgolfer *
Ich habe versucht, dies so gut wie möglich zu verschleiern.
Probieren Sie es hier aus!
quelle
Oktave, Partitur: ???
Es ist so gut wie garantiert, dass keine andere Zahl genau die gleichen 20 Zufallszahlen am Ende
1e8
der Zahlenliste hat.Ansonsten Ausgaben
1
für die Geheimzahl0
.Ich habe dies in Octave 4.2.0 ausgeführt.
"Schlaf und andere Verlangsamungen können beim Bruteforcen beseitigt werden."
Viel Glück damit :)
quelle
Ly , 239 Punkte, geknackt
Probieren Sie es online!
Ich vertraue darauf, dass niemand Ly hier kennt, obwohl ich weiß, wie leicht sich das ändern könnte ... schwitzt
Erläuterung:
quelle
Brain-Flak , Score 1574 ( geknackt )
Probieren Sie es online!
quelle
dc
Probieren Sie es online!
Hinweis: Diese Übermittlung wurde seit ihrer Übermittlung geändert. Die ursprüngliche Einreichung (unten) war ungültig und wurde von Sleafar in den Kommentaren unten geknackt. (Eine Eingabe von
1
ergibt die Ausgabeyes
, aber es gibt eine andere Zahl, die das gleiche Ergebnis liefert.)Probieren Sie es online!
quelle
Ruby , sicher, Gäste:
Probieren Sie es online!
Erläuterung:
quelle
PHP, safe, score:
Gibt 1 aus, wenn richtig, sonst 0.
Edit: Ich glaube nicht, dass jemand versucht hat, dies zu knacken, weil:
Erläuterung:
quelle
Swift 3 (53 Bytes) - Gebrochen
Wie führe ich das aus? -
f(n:1)
.Hier testen.
quelle
Python 3, Ergebnis: ???
Hoffentlich zeigt dies, wenn überhaupt, wie problematisch dies wirklich ist:
Im Wesentlichen wird durch diesen Code jede mögliche Zeichenfolge verzögert generiert, bis eine der Zeichenfolgen einen Hash hat, der genau mit der
hash_code
obigen übereinstimmt . Der ungeöffnete Code hat die Grundform:Mit Ausnahme von
<insert number here>
wird durch eine Zahl ersetzt und es gibt Kommentare im Code, um den Code so gut wie unwahrscheinlich zu machen.Ich habe alle Vorsichtsmaßnahmen getroffen, um sicherzustellen, dass ich von diesem Beitrag nicht profitiere. Für den Anfang ist es Community-Wiki, so dass ich keine Wiederholung dafür bekomme. Außerdem ist meine Punktzahl ziemlich groß, so dass hoffentlich eine viel kreativere Antwort kommt und gewinnt.
Hoffe ihr seid nicht zu wütend auf meine Antwort, ich wollte nur zeigen, warum Cops und Räuber Posts normalerweise Hashalgorithmen verbieten.
quelle
256 ^ 100
oder2 ^ 800
Zeichenfolgen. Mittlerweile gibt es nur2 ^ 512
noch 512-Bit-Hashes. Das bedeutet, dass die Zeichenfolgen, die Sie durchlaufen, die2 ^ 288
Anzahl der möglichen Hashes um mindestens eins übersteigen - eine Zahl, die 10.000-mal größer ist als die Anzahl der Atome im Universum. Die Wahrscheinlichkeit, dass dieser bestimmte Hash ungenutzt bleibt, ist unglaublich gering .Python 3 , 49 Bytes, Cracked von sonar235
Probieren Sie es online!
quelle
Java, Kerbe: 3141592 ( gebrochen )
quelle
Python 3, Punktzahl 1 (sicher)
Keine sehr interessante Lösung, aber besser ein sicherer Cop als ein toter Cop.
Ansonsten Ausgaben
1
für die Zielnummer0
. Die Eingabe erfolgt aus stdin. Der letzte Teil (and int(original.decode())<1000
) existiert nur, um nur eine Antwort zu gewährleisten, sonst gäbe es offensichtlich unendlich viele Antworten.quelle
100000000
.C (gcc) , Punktzahl ???
Da werden hier kryptografische Lösungen gefördert. Genau eine positive Ganzzahl gibt etwas aus , alle anderen geben nichts aus. Dies dauert lange und kann nicht online getestet werden.
quelle
Java, 164517378918, sicher
quelle
TI-BASIC,
Wertung: 196164532nicht konkurrierendGibt 1 für die Geheimzahl zurück, sonst 0.
Weitere Informationen finden Sie im Hinweis auf dieser Seite zum
rand
Befehl .quelle
Python 3 , Punktzahl :?
Probieren Sie es online!
Einfach, aber es kann einige Zeit dauern, bis es brachial wird ;-) Freue mich auf einen schnellen Riss ;-)
Fußnote: Die ersten beiden und die letzten Bedingungen machen die Antwort einzigartig.
Übrigens, wie die Punktzahl berechnet wird?
Tipp 1
quelle
Aceto , sicher
Gibt TrueFalse aus, wenn dies korrekt ist, andernfalls FalseFalse
Die Nummer war
Probieren Sie es online!
quelle
C #, Mono, Linux, Alpha, Punktzahl 1 (sicher)
Vorsichtig. Ich meine es so. Es gibt viele Alpha-Simulatoren. Verwenden Sie eine mit einem Jitter oder dies wird nicht beendet.
Dies hängt von der Tatsache ab, dass Alpha Big-Endian ist, was dazu führt, dass System.BitConverter das Falsche tut, wenn jemand dies auf x86 oder x64 versucht. Ich habe diese Antwort geschrieben, um die Schlechtigkeit der Herausforderung vor allem zu demonstrieren.
quelle