Hinweis: Diese Herausforderung ist beendet. Einsendungen sind immer noch willkommen, können aber nicht gewinnen.
Das ist der Faden der Bullen. Der Räuberfaden geht hier .
Schreiben Sie einen Code, der die Ganzzahl ausgibt 1
. Wenn Sie ein einzelnes Zeichen (nach Ihrer Wahl) hinzufügen, entfernen oder ersetzen, sollte der Code die Ganzzahl ausgeben 2
. Ändern Sie ein weiteres Zeichen (das gleiche oder ein anderes), und der Code sollte ausgegeben werden 3
. Fahren Sie so weit wie möglich fort, maximal jedoch bis zu 10. Standardausgabeformate wie ans = 1
werden akzeptiert. Sie können die Ausgabe nach STDERR (oder eine gleichwertige Angabe) ignorieren.
Sie müssen die Sprache, die Anzahl der Bytes Ihres Anfangscodes, die Anzahl der Ganzzahlen, für die es funktioniert, sowie eine optionale Anzahl von Zeichen des Anfangscodes angeben. Hinweis: Sie müssen keine Charaktere aufdecken, aber denken Sie daran, dass das Aufdecken von Charakteren für die Räuber schwieriger sein kann, da dieselben Charaktere an derselben Position verwendet werden müssen. Sie können auswählen, mit welchem Zeichen Sie nicht aufgedeckte Zeichen kennzeichnen (z. B. Unterstriche). Achten Sie jedoch darauf, dies anzugeben.
Cops können den ungeknackten Code nach einer Woche zur Verfügung stellen und die Einreichung "SAFE" nennen. Die gewinnende Einsendung ist die kürzeste ungerissene Einsendung, die die Zahl 10 ergibt. Wenn keine ungerissenen Einsendungen die Zahl 10 drucken können, gewinnt der kürzeste Code, der 9 ergibt, und so weiter. Beachten Sie, dass die Räuber nicht dieselben Änderungen vornehmen müssen wie Sie und auch nicht den genauen Code reproduzieren müssen (es sei denn, Sie enthüllen alle Zeichen). Sie müssen nur die Ausgabe reproduzieren.
Später als am 24. November eingereichte Beiträge sind willkommen, aber nicht für den Gewinn qualifiziert (da es wahrscheinlich weniger Räuber geben wird).
Beispielbeitrag:
Der folgende Beitrag ist eine Einreichung in der Sprache MyLang
, er ist 9 Byte lang und funktioniert für die Nummern 1 - 8.
MyLang, 9 Bytes, 8 Zahlen
Diese Vorlage arbeitet für 1 - 8. Unrevealed Zeichen werden mit einem Unterstrich angegeben: _
.
abc____i
Bestenliste
Haftungsausschluss: Die Bestenliste wurde nicht getestet und ungerissene Beiträge werden möglicherweise nicht in der Liste angezeigt.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=99546;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
quelle
1
wird. Wie kann ich verhindern, dass die Räuber wiederholt hinzufügen)
, um den Rest der Zahlen zu generieren? Das gleiche gilt für einige Sprachen1
dann scheint CJam eine schlechte Wahl für diese Herausforderung zu sein. Es gibt keine Möglichkeit, Räuber daran zu hindern.10
. Diese Regel gilt, da viele Einsendungen (theoretisch) wahrscheinlich auf unendlich ausgedehnt werden können, sodass eine Bewertung anhand der höchsten erreichten Zahl keinen Sinn ergibt.cracked
bestimmte Form enthält . Dies ist, was das Redesign-UserScript derzeit macht.Antworten:
Hexagony , 18 Bytes, 10 Zahlen, SAFE
Diese Vorlage arbeitet für 1 - 10. Unrevealed Zeichen werden mit einem Unterstrich angegeben:
_
.Sie können Hexagony hier online ausprobieren.
Meine Lösung:
Hex für Ausgang 1:
Probieren Sie es online!
<
Gedächtniskante liegt0
, also taucht es auf.1
5
8
, kehrt aber um<
und holt den8
auf dem Rückweg.5
nochmal1
<
an dieser Stelle der Speicherwert ist 1585, die 256 mod, geschieht ASCII zu sein1
;@
.Hex für Ausgang 2:
Probieren Sie es online!
Dies folgt demselben Pfad, aber auf dem Rückweg trifft es einen,
)
der die Speicherflanke auf 1586 erhöht, oder2
.Hex für Ausgang 3-9:
Probieren Sie es online!
2
<
, so dass sie nach unten dreht.]
ändert den Anweisungszeiger, kommt aber sofort wieder mit[
)
Inkremente zu3
!
Druckt3
$
bleibt von den ersten beiden Zahlen übrig, so dass wir über das Ende springen (@
)1
ändert den Speicherrand, aber das spielt jetzt keine Rolle.<
spiegelt den Zeiger zurück.1
spielt es keine Rolle, weil wir@
das Programm beenden.quelle
Netzhaut , 2 Bytes, 10 Zahlen, Gebrochen
Funktioniert für 1 bis 10,
_
ist ein verstecktes Zeichen. Dies sollte nicht zu schwer sein, aber ich hoffe, es bietet ein etwas interessantes Rätsel. :)Sie können Retina hier online ausprobieren.
quelle
Oktave, 55 Bytes, 10 Zahlen, geknackt
_
ist das unbekannte Zeichen.Lösung
quelle
Python 2, 9 Bytes, 10 Zahlen, geknackt
Keine versteckten Zeichen. Kannst du es knacken, ohne etwas zu erzwingen?
quelle
Perl, 12 Bytes, 10 Zahlen, Cracked!
Unterstriche stehen für unbekannte Zeichen.
Wahrscheinlich ziemlich einfach, und es würde mich nicht überraschen, wenn es mehrere Lösungen gäbe. Trotzdem könnte es Spaß machen, zu knacken.
(Die beabsichtigte Lösung war die gleiche wie der Riss. Dies ist im Grunde genommen nur ein Problem beim Zuweisen von 10 zu einer Variablen mit vier Zeichen, was in Perl überraschend schwierig ist 10.)
quelle
$_=1;say;#-9
, aber ich konnte nicht herausfinden, wie ich 10 bekomme.Perl, 46 Bytes, 10 Zahlen, sicher
Das Problem
Die kürzeren Probleme neigen dazu, schnell geknackt zu werden, deshalb dachte ich, ich würde es mit einem längeren Problem versuchen. Die längeren neigen auch dazu, geknackt zu werden, wenn die Leute genug Lücken lassen, um etwas Unartiges wie
say
oder hereinzuschleichenexit
, so dass alle Lücken hier kurz sind. Versteckte Zeichen werden mit dargestellt_
.Meine Lösung
Zum Drucken 2, 3, usw., bis zu 9, halten , die Anzahl Wechsel zugewiesen
$b{0}
in der zweiten Zeile (dh$b{0}=2
,$b{0}=3
usw.). Das Programm für 9 sieht folgendermaßen aus:Um dann 10 zu erzeugen, kommentieren Sie die erste Zeile aus, indem Sie ihr ein
#
Zeichen voranstellen .Erläuterung
Das erste, was zu beachten ist, ist, dass die Lösung nicht wirklich gut ist, außer das Entfernen von Leerzeichen: Wenn wir sie mit besser lesbaren Leerzeichen auslegen, erhalten wir Folgendes:
Wenn Sie in Perl auf die Argumente eines Unterprogramms zugreifen, kopieren Sie diese normalerweise aus
@_
. Dafür gibt es einen guten Grund:@_
Aliase die Argumente, denen die Unterroutine gegeben ist (die zum Beispiel(sub { $_[0] = 3 })->($x)
zugewiesen werden$x
), was normalerweise nicht wünschenswert ist.Obwohl
@_
es magisch erscheinen mag, verwendet es tatsächlich nur eine Standardfunktion der Perl-Interna (die in XS leicht verfügbar ist, aber in reinem Perl nur in einigen komischen Fällen auftritt, wie z. B. in sich@_
selbst): Ein Array speichert seine Elemente nicht direkt , sondern durch Bezugnahme. Wenn wir alsob
in der zweiten Zeile unten aufrufen, generiert Perl ein Array (das es aufruft@_
), dessen erstes Element auf denselben Speicher verweist, der auch$b{0}
verwendet wird. (Hash-Werte werden auch als Referenz gespeichert; $ _ [0] und $ b {0} verweisen zu diesem Zeitpunkt beide auf denselben Speicher.) Da@_
aus interner Sicht nichts Besonderes zu tun ist, können wir eine Referenz heranziehen dazu, wie wir es mit jedem anderen Array tun könnten, was dazu führt, dass es die Subroutine überlebt, in der es definiert ist.Perl Variablen auch auf die Datenspeicherung durch Bezugnahme verwiesen. Vor langer Zeit verwendeten die Leute Code
*x = *y;
, um ihn$x
als Alias zu setzen$y
(indem sie ihn auf dasselbe verweisen ließen), ebenso@x
als Alias zu@y
,%x
als Alias zu%y
und so weiter. Dies unterbricht eher die Invariante, dass Variablen mit ähnlichen Namen nicht ähnlich funktionieren müssen, weshalb modernes Perl eine Alternative bietet. Ein Verweis auf eine Typeglob überschreibt die Zuordnung nur die Variable, die den Typ des Referenz entspricht (so*x = \%y
würde alias%x
zu Punkt auf denselben Speicher wie%y
aber verlassen, sagen wir,$x
allein). Bei dieser Syntax spielt es keine Rolle, ob der Speicher, für den Sie einen Aliasnamen verwenden, einen Namen hat. Wenn wir also den Rückgabewert von zuweisen, ist dies nicht der Fallb
(das ist eine Array - Referenz, die das Array zu halten ist früher als@_
lebendig) zu*b
, was passiert ist , dass@b
zu alias der Argumentliste auf den Aufruf zu geändert wirdb
(während verlassen%b
unverändert). Dies bedeutet insbesondere, dass$b[0]
und$b{0}
jetzt auf denselben Speicher verwiesen wird und die Zuordnung zu einem Speicher den anderen ändert. Von da an ist alles ganz einfach.Die Perl-Dokumentation spricht nicht wirklich über diese Art von Detail. Die Natur,
@_
nicht ganz wie andere Arrays zu sein, wird nicht wirklich betont, und die meisten Codierungsstile zielen darauf ab, die Auswirkungen zu minimieren, anstatt sie zu verstärken.quelle
q
unds
undy
undm
(meistens versucht , sie nach der Ende zu bekommen$b[0]
Zuordnung), aber nichts ist für mich arbeiten (noch) nicht .sub b{\@_}
mich festgefahren und obwohl ich damit experimentiert hatte,*b
konnte ich es nicht verstehen! Danke für die Erklärung. Ich hätte es in Ihrer Erklärung vielleicht beschönigen können, aber warum tut dassub b{\@_}*b=b$b[0]
nicht dasselbe?\@_
) zuweisen*b
, Sie müssen das Hash-Element jedoch explizit selbst erwähnen. Mit*b=b$b[0]
gleicht man im Grunde nur das Neue$b[0]
(nach dem Ändern der@b
Position) an das$b[0]
zu Beginn des Programms vorhandene an, was unbrauchbar ist.JavaScript, 30 Bytes, 10 Zahlen, geknackt
Sollte nicht zu schwer sein, aber hoffentlich ist es gerade schwer genug, eine Herausforderung zu bieten. :) Nicht aufgedeckte Zeichen sind mit gekennzeichnet
_
.quelle
Perl, 14 Bytes, 10 Zahlen, Gebrochen
Werke für 1 bis 10
_
sind versteckte Zeichen.Ich denke, das sollte nicht zu schwer zu knacken sein. Ich habe eine härtere, für 22 Bytes, ich werde es posten, wenn diese geknackt ist.
Originalcode:
Und ersetzen die
"!"
durch eine Reihe von der Länge der Nummer , die Sie drucken möchten, zum Beispiel!
,!!
,!!!
etc.Allerdings ais523 fand eine andere Art und Weise:
quelle
JavaScript, 22 Bytes, 10 Zahlen, geknackt
Wahrscheinlich ziemlich leicht zu knacken.
_
ein versteckter Charakter seinquelle
xc_de
alles andere als ein roter Hering wäreOktave, 17 Bytes, 10 Zahlen, Gebrochen
Originelle Lösung
_
ist der versteckte Charakter.quelle
Jelly , 7 Bytes , 10 Zahlen, geknackt
Keine Platzhalter.
Der erreichte Riss (um ein Eval mit einem Argument zu verwenden) war, wie viele in diesem Thread zu sein scheinen, nicht der beabsichtigte.
Der beabsichtigte Riss war:
quelle
10
, weil ich Glück gehabt habe, als ich Dinge ausprobiert habe, die funktionieren könnten.10
Ich glaube, der Weg funktioniert für Sie, indem Sie den Jelly-Code in der Zeichenfolge9
mit einem Argument von0
(dem Standardwert der Eingabe) auswerten, das Sie dann aus der Warteschlange entfernen (keine Auswirkung) und dann inkrementieren.10
Arbeitsweise für Sie darin besteht, den Jelly-Code in der Zeichenfolge9
mit einem Argument aus[]
- dem Standardwert der Eingabe0
, aus der Warteschlange entfernt - auszuwerten, das Sie dann inkrementieren. Wie“1‘‘‘‘‘‘‘‘‘Ọv0Ḋ¤‘
Befunge-93, 11 Bytes, 10+ Zahlen, Gebrochen
Diese Einreichung funktioniert für mindestens 1 - 10. Nicht aufgedeckte Zeichen sind mit gekennzeichnet
□
.Probieren Sie es online aus
Ich muss sagen, ich war beeindruckt, dass zwei Personen unabhängige Lösungen dafür finden konnten, von denen keine das war, was ich erwartet hatte. Während Martin zuerst dort ankam , gebe ich Sp3000 den "Gewinn", da ihre Lösung portabler ist.
Dies war jedoch meine beabsichtigte Lösung:
quelle
"15:**-6-.@
gibt 1, aber ich bin mir nicht sicher, ob die Tatsache, dass"
32 (aufgrund impliziter Leerzeichen) nach oben geschoben wird, ein Artefakt des TIO-Interpreters oder ein Teil von Befunges Spezifikation ist, da es so scheint, als ob nicht alle Interpreten dies versuchen. Hängt Ihre beabsichtigte Lösung von diesem Verhalten ab?R, 21 Bytes, 10 Zahlen Gebrochen
Funktioniert für 10 Nummern.
_
ist versteckter Charakter.Ursprüngliche Lösung:
quelle
Ruby, 16 Bytes, 10 Zahlen, geknackt von xsot
#
ist ein beliebiges Zeichen.quelle
Oktave, 32 Bytes, 10 Zahlen. Geknackt
_
ist ein versteckter Charakter.Sie können Octave online testen hier testen .
Ursprüngliche Lösung:
1:
nnz(isprime(floor(sqrt(i):pi')))
2:
nnz(isprime(floor('sqrt(i):pi')))
3:
nnz(isprime(floor('sqrt(i):pia')))
4:
nnz(isprime(floor('sqrt(i):piaa')))
...
quelle
Oktave, 17 Bytes, 10 Zahlen, Gebrochen
Nicht aufgedeckte Zeichen sind mit gekennzeichnet
_
.Beabsichtigte Lösung:
quelle
Oktave, 19 Bytes, 10 Zahlen, geknackt
_
ist der versteckte Charakter.Beabsichtigte Lösung:
quelle
sca
. Wenn ich von dir komme, hätte ich über Matrixfunktionen nachdenken sollen :-)05AB1E , 5 Bytes, 10 Zahlen, geknackt!
Nicht sehr schwer, aber lustig :)
_
ist ein zufälliger Charakter. Verwendet die CP-1252- Codierung. Probieren Sie es online!quelle
05AB1E , 6 Bytes, 10 Zahlen, geknackt
Versuch 2, diesmal ohne die Zeichenfolge mit drei Zeichen: p.
_
ist ein zufälliger Charakter. Verwendet die CP-1252- Codierung. Probieren Sie es online!quelle
JavaScript, 22 Bytes, 10 Zahlen, geknackt
_
ist der versteckte Charakter.Hinweis auf die beabsichtigte Lösung
Das Zeichen, das geändert werden muss, um alle Zahlen zu generieren, ist immer dasselbe.
quelle
JavaScript 21 Bytes, 10 Zahlen geknackt
Nicht aufgedeckte Zeichen sind mit gekennzeichnet
_
Geknackt
Meine Version:
quelle
Python 3, 19 Bytes, 10 Zahlen, geknackt
Nicht aufgedeckte Zeichen sind mit gekennzeichnet
?
. Getestet in Python 3.5.2.quelle
Python 3, 16 Bytes, 10 Zahlen, geknackt
Nicht aufgedeckte Zeichen sind mit gekennzeichnet
?
. Das ist wahrscheinlich ein bisschen einfach, da es nur fünf Fragezeichen gibt, aber ich hoffe, dass es Spaß macht.quelle
C #, 90 Bytes, 10 Zahlen, geknackt
Ich habe ehrlich gesagt keine Ahnung, wie schwer das zu knacken ist.
Edit: Ups, Transkriptionsfehler. Eins
_
zu wenig danachusing
.Jetzt geknackt von Hedi , die die beabsichtigte (mit Ausnahme des Klassennamens) Lösung fand.
quelle
JavaScript 33 Bytes, 10 Zahlen geknackt x2
Hoppla, ich poste meine Zeile für das Generieren von 10, die Hedi geknackt hat, als wäre es für 1
Version, die zum Generieren von 1 veröffentlicht werden soll
Nicht aufgedeckte Zeichen sind mit gekennzeichnet
_
quelle
console.log(atob|"0Xc0"-0xB6|("Zp=="))
Ich denkePython, 10+ Zahlen, 61 Bytes, Cracked!
Hier war der Code, den ich gepostet habe:
Der ursprüngliche Code war:
Grundsätzlich wird ein Fehler ausgegeben (
'x' is not defined
) und anschließend die Zeile ausgegeben, in der der Fehler gefunden wurde. Fügen Sie einfach am Anfang neue Zeilen hinzu, um die Zahl zu erhöhen.Ich wusste, dass es nicht schwer sein würde zu knacken - ich wollte nur eine lustige Art, Zahlen zu drucken -, aber ich hatte nicht erwartet, dass Sp3000 es so schnell bekommt, das sind einige professionelle Fähigkeiten!
quelle
STDOUT
und eine Nummer drucken kann, aber ich glaube, ich habe sie zu sehr eingegrenzt . Ah, gut.sys
machte es definitiv viel einfacher, da es einen guten Ausgangspunkt für die Suche gab: P05AB1E, 11 Bytes, Gebrochen!
Funktioniert von 1-10.
_
ist ein versteckter Charakter.Vorgesehene Lösung:
quelle
Oktave, 24 Bytes, 9 Zahlen, geknackt
_
ist ein versteckter Charakter.(Inspiriert von der Herausforderung von @ LuisMendo .)
quelle
JavaScript, 9 Bytes, 10 Zahlen, Gebrochen
_
ist der versteckte Charakter.quelle
Oktave, 25 Bytes, 9 Zahlen. Geknackt
_
ist ein versteckter Charakter.quelle