Ausgehend von der Ausgabe des Programms ( o
) des Polizisten, n
der Anzahl der verwendeten Bytes ( ) und der Anzahl der verwendeten eindeutigen Bytes ( c
) erhält man einen entsprechenden Code, der n
bytelang ist und c
eindeutige Bytes enthält, die mit der Ausgabe des Polizisten übereinstimmen o
.
Dies ist der Cops-Thread . Posten Sie Lösungen, die hier geknackt werden sollen.
Der Räuber-Thread befindet sich hier .
Cops sollten Lösungen wie diese posten:
#[Language], `n` Bytes, `c` Unique Bytes (c*n points) [Cracked](Link-To-Crack)
[Output]
---
(Optional spoiler)
Regeln
- Sie dürfen keine Eingaben für Ihr Programm machen.
- Das Programm muss mindestens 1 Byte verwenden, darf jedoch 255 Byte nicht überschreiten.
- Die Ausgabe selbst ist ebenfalls auf 255 Bytes begrenzt.
- Das Programm muss bei mehrmaliger Ausführung konsistente Ausgabeergebnisse haben.
- Wenn Ihr Beitrag nicht innerhalb von 7 Tagen geknackt wird, können Sie ihn als "sicher" markieren.
- Veröffentlichen Sie die beabsichtigte Lösung, wenn Sie sie als sicher markieren, und bewerten Sie sie als
c*n
. - Markieren Sie eine Antwort nur als "sicher", wenn Sie wirklich die +15 für eine akzeptierte Antwort möchten. Es macht mehr Spaß zu sehen, wie lange Sie gehen können.
- Veröffentlichen Sie die beabsichtigte Lösung, wenn Sie sie als sicher markieren, und bewerten Sie sie als
Gewinnen
- Der ungerissene Beitrag mit der niedrigsten
c*n
Punktzahl gewinnt den Thread des Polizisten. - Dies wird nach 10 sicheren Antworten oder ein paar Wochen entschieden.
Vorbehalte
- Wenn Sie sich übermütig fühlen, können Sie dem Benutzer den Algorithmus mithilfe eines Spoiler- Tags mitteilen .
Nicht geknackte Einsendungen:
fetch("https://api.stackexchange.com/2.2/questions/147635/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!/^#.*cracked/im.test(i.body_markdown)).map(x=>{const matched = /^ ?#{1,3} ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:.*(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).reverse().forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
cops-and-robbers
Magische Kraken-Urne
quelle
quelle
Antworten:
Haskell , 173 Bytes, 8 eindeutig, 1384 Punkte, sicher
Es sieht so aus, als ob diese Antwort ein relevantes Tag für die Frage bereitstellen möchte, während nur 8 verschiedene Bytes verwendet werden.
Wie üblich sollte Ihre Lösung funktionieren, indem Sie sie in den Codeblock von TIO einfügen: Probieren Sie es online aus!
Lösung
Ja, dies ist ein gültiger Haskell-Code: Probieren Sie es online aus!
Wie es funktioniert
Der Unterstrich
_
wird bei Haskells Musterabgleich als Platzhalter verwendet.'
wird für Zeichen verwendet, z'a'
. Beide_
und'
sind jedoch auch Teil der zulässigen Zeichen für Bezeichnernamen (dürfen in gewissen Einschränkungen zB'
nicht am Namensanfang stehen.). Daher__
,_'
,_'_
,_''
und so weiter sind alle gültigen Bezeichnernamen. Unter Verwendung einiger aussagekräftigerer Namen wird der obige CodeDie erste Zeile liefert den String,
"[tag:reverse_engineering]"
wenn jede Variable dem richtigen Zeichen zugeordnet ist. Diese Zuordnung wird in der zweiten Zeile erreicht:['_'..]
ergibt die Zeichenkette"_`abcdefghijklmnopqrstuvwxyz{|}~ ... "
, die auf das Muster abgestimmt ist_:_:a:_:_:_:e:_:g:_:i:_:_:_:_:n:_:_:_:r:s:t:_:v:_
, um die gewünschte Zuordnung zu erhaltena='a'
,e='e'
und so weiter.quelle
Brain-Flak, 62 Gesamtbytes, 6 Unikate, 372 Punkte, Gebrochen
Hier ist Ihre Ausgabe:
Diese Nummer hat etwas Besonderes, steht aber nicht auf dem OEIS ;)
Wenn Sie ein Computerwerkzeug verwenden möchten, um dieses Problem zu lösen, haben Sie Pech, der Integer-Golfer erhält 110 Bytes für diese Zahl:
Probieren Sie es online!
Sie müssen dies von Hand tun.
Tipps
Hier sind einige Tipps, ich werde im Laufe der Zeit mehr und hilfreichere Tipps verraten. Viel Glück!
Meine Lösung
Probieren Sie es online!
Dies verwendet einen meiner Lieblingstricks, den Code
berechnet den n-ten Term von A090809 . Bei der vollständigen Übermittlung wird der Code einfach mit einer 97 aufgefüllt, um eine große Zahl zu erstellen.
quelle
MATL , 6 Bytes × 3 Unique = 18 Punkte. Geknackt
quelle
i.^(0:3)
gibt keine Gleitkomma-Ungenauigkeiten in Octave, sondernJ4:q^
in MATL ...num2str(..., '%.15g ')
. Siehe zum Beispiel hier . Dies ist jedoch bei MATL unter Matlab nicht der Fall. Das Fazit ist, dassnum2str
in Matlab und in OctaveJelly , 7 Bytes × 6 Unique = 42 Punkte, geknackt
Probieren Sie es online!
quelle
ḷ
zum Beispiel leicht austauschbar . Jetzt ist es wohl zu spät ...Malbolge , 15 bytes, 13 unique, score 195. Sicher!
Ausgänge:
Sicher! Vorgesehener Code:
Probieren Sie es online!
quelle
JavaScript (ES8), 103 Bytes, 42 eindeutig (4.326 Punkte) [SAFE]
Ausgangs-Hexdump:
Die Punktzahl ist ungewöhnlich hoch, ich weiß, aber ich denke trotzdem, dass es interessant sein kann, diese zu knacken. Das Programm ist eine Funktion, die eine Zeichenfolge zurückgibt (nur um Verwirrung zu vermeiden, ist dies nicht REPL).
Es sollte nicht zu schwer sein, ich nehme an, es geht nur darum, das Muster zu finden.
Lösung
Es scheint, dass es schwieriger war, als ich gedacht hatte, nach der Tatsache, dass niemand es geknackt hatte. Ich habe geglaubt, dass es mehrere Lösungen geben kann, die sich leicht herstellen lassen. Sowieso ist hier die beabsichtigte Lösung:
Aus irgendeinem Grund wird es nicht richtig als Code-Snippet angezeigt. Hier ist der TIO-Link .
quelle
Oktave, 13 Bytes, 5 eindeutige Zeichen, Punktzahl: 65. Sicher!
Dieser sollte nicht zu schwer sein. Wenn du nicht gleich zu den schwierigsten springen willst, ist es vielleicht eine schöne erste Herausforderung :)
Hinweis: Als ich die Frage las, sagte ich: Geben Sie eine Zahl aus, keine Zeichenfolge. Die Ausgabe bei TIO sieht folgendermaßen aus:
Und wird so aussehen, wenn Sie haben
format long
oder du druckst es so aus:
Was ich hatte und Erklärung:
So einfach ist das. =)
Erklärt:
Normalerweise schreiben Sie dies als
prod('prodprod')
:, aber Octave behandelt alles, was nach dem Funktionsnamen steht, als Zeichenfolge (Array von Zeichen). Diese werden implizit in ihre ASCII-Werte konvertiert und miteinander multipliziert.quelle
MATL, 4 Bytes, 4 Unique, 16 Punkte. Geknackt
Ausgabe:
Was ich hatte:
quelle
Java 8 (vollständiges Programm), 97 Gesamtbytes , 34 eindeutig, 3298 Punkte ( Gebrochen von @RobertoGraham )
Ausgabe:
HINWEIS: Dies ist ein vollständiges Programm. Wenn
()->
stattdessen Funktionen in Form von zulässig sind:Java 8 (Lambda-Funktion), 40 Gesamtbytes , 18 eindeutig, 720 Punkte ( geknackt von @ user202729 )
Es ist wahrscheinlich ziemlich schwer, aber was auch immer. Es ist nicht so, dass Java mit dieser Punktzahl sowieso irgendetwas gewinnen wird.
Hinweise:
Beabsichtigte Lösung:
Ziemlich witzig (und beeindruckend), wie sehr sich die beiden gegebenen Risse von meinen Vorstellungen unterscheiden, aber für beide Cracker eine Überraschung!
quelle
MATL, 11 Bytes, 10 eindeutige, 110 Punkte. SICHER!
Ausgabe:
Um Ihnen dabei zu "helfen":
Dies ist das Produkt von:
und es ist eins weniger als das
372884884433
rd prime.Und hier sind einige echte Tipps. Wenn es in ein paar Stunden nicht geknackt ist, werde ich die Lösung aufdecken.
Der wahre Code:
Erläuterung:
quelle
Haskell , 10 Bytes, 3 Unikate, 30 Punkte, geknackt
Eine nette Zahl, die jede Ziffer enthält, obwohl nur 3 eindeutige Bytes verwendet werden.
Die beabsichtigte Lösung funktioniert durch Ersetzen des Codeteils im folgenden TIO-Link: Probieren Sie es online aus!
quelle
Haskell , 29 Bytes, 15 eindeutige Bytes, 435 Punkte, geknackt
Dies ist eine Saite, die
3
73-mal und eine einzelne hinterhältige Saite enthält4
.Die beabsichtigte Lösung funktioniert durch Ersetzen des Codeteils im folgenden TIO-Link: Probieren Sie es online aus!
Edit: H.PWiz hat einen gültigen Riss gefunden (der sogar auf 28 Bytes golfen könnte), aber nicht die beabsichtigte Lösung.
Hinweise:
quelle
Mathematica, 8 Bytes, 3 eindeutig, 24 Punkte Gebrochen
quelle
Explodieren , 9 Gesamtbytes, 4 eindeutige, 36 Punkte
Ausgabe:
Beachten Sie, dass die Dokumentation nicht vollständig mit der Implementierung für diese Sprache übereinstimmt. Ich habe dies eines Tages geschrieben und es seitdem nicht mehr angerührt. Eventuell vorhandene Fehler in der Implementierung sind daher jetzt definitiv Funktionen.
Ich denke auch nicht, dass diese Sprache Turing-vollständig ist, so dass Sie es wahrscheinlich brachial erzwingen könnten, aber das ist langweilig.
Ich gebe Ihnen ein beträchtliches Kopfgeld, wenn Sie Reverse-Engineering-Ausgaben in optimal kurzen Explode-Code automatisieren können.
quelle
Oktave, 4 Bytes, 3 eindeutig, 12 Punkte: geknackt
Mal sehen, wie schnell das geht.
quelle
Pyth, 7 Bytes, 6 Unique, 7 * 6 = 42 Gesamtpunkte
Schauen Sie sich den Pyth-Tipps-Thread an;)
quelle
Gelee , 3 Bytes × 3 Unikate = 9 Punkte, geknackt
Probieren Sie es online!
Ein weiterer Versuch mit Jelly, diesmal hoffentlich herausfordernder.
quelle
Alice , 9 Bytes x 8 Unikate = 72 Punkte Gebrochen
Probieren Sie es online!
Dieser sollte lustig zu knacken sein
quelle
Excel, 22 Bytes, 16 eindeutig, 352 Punkte, Gebrochen
Das ist vielleicht nicht sehr schwer zu knacken, aber ich kann eine Funktion verwenden, die ich sonst nie verwenden kann. Außerdem wird die Partitur nichts gewinnen, wenn nicht viele andere geknackt werden.
quelle
PowerShell, 7 Bytes, 5 Unique = 35 Punkte Gebrochen
Ausgabe:
quelle
Gelee , 8 Bytes * 6 einzigartig = 48 ( Gebrochen )
Sie können versuchen, es hier zu knacken .
quelle
Haskell , 30 Bytes, 17 Unikate, 510 Punkte, geknackt
Die beabsichtigte Lösung funktioniert durch Ersetzen des Codeteils in dem folgenden TIO-Link: Probieren Sie es online aus!
Dies verwendet den gleichen Ansatz wie mein vorherige Antwort , die mit einem anderen Ansatz geknackt wurde.
Einige Hinweise:
quelle
Javascript,
11
Bytes,7
Unique Bytes (77 Punkte) (Gebrochen)Das sollte wirklich einfach sein.
quelle
Jelly , 8 Bytes , 2 Unikate, 8 × 2 = 16 Punkte - Sicher!
(Es gibt nur 8.355.840 mögliche solche Programme, also sollte es geknackt werden, denke ich.)
Los geht's bei Online testen!
Wie?
quelle
°
, aber nicht darüber⁾
nachgedacht und gedacht, dass du bei 0⁽
unterscheidet sich von⁾
, sie sind in keiner Weise verwandt (außer dass sie die beiden folgenden Zeichen verbrauchen).⁽
.Gelee , 4 Bytes , 4 Unikate, 4 × 4 = 16 Punkte - Sicher!
Beachten Sie, dass die Ausgabe direkt am Limit 255 Byte lang ist.
Ja, die gleiche Punktzahl wie bei meinem anderen (noch nicht geknackten) Geleeeintrag .
Los geht's bei Online testen!
Wie?
quelle
r
zwischen zwei Codepage-Indexlisten vektorisieren und mit einer anderen Codepage-Indexliste verketten, um die Anzahl der Bytes auf 35 zu verringern . Es gibt jedoch auch immer noch wiederholte Bytes und 35 >> 4 ... viel Glück!C (Zweierkomplementmaschine, sizeof (int) = 4), 76 Bytes und 35 eindeutige Bytes für eine Punktzahl von 2660, Safe
Ausgabe:
Das ist 203 Bytes lang.
quelle
main(i){for(;42>i;printf("%u","eirwtlegowvnfemuwphejsno"[abs(24-i++)]-'n'));}
'N'
zu78
(Zeichencode vonN
) wechseln .CJam, 15 Bytes * 10 Unique = 150 Punkte
Schlechte Punktzahl, aber hoffentlich schwer zu knacken.
Anmerkung: Im Moment habe ich vergessen, was die Antwort ist. Als solches werde ich es offen halten, bis entweder ich oder jemand anderes es knacken kann.
quelle
CJam, 15 Bytes * 10 Unique = 150 Punkte
Anmerkung: Im Moment habe ich vergessen, was die Antwort ist. Als solches werde ich es offen halten, bis entweder ich oder jemand anderes es knacken kann.
quelle
Japt , 5 Bytes, 5 eindeutige Bytes (25 Punkte) ( Gebrochen by Scrooble)
Ausgabe:
3628801
quelle
Perl 5 , 31 Bytes, 18 Unique Bytes (558 Punkte) - sicher
Beabsichtigte Lösung ( Online ausprobieren! ):
(Dies berechnet die Fakultät von 111)
quelle