Einführung
Für diejenigen, die sich fragen, was Befunge genau ist, ist es eine zweidimensionale stapelbasierte Sprache, die 1993 von Chris Pressy entwickelt wurde. Ich habe 7 Rätsel gemacht , die in Befunge-93 gelöst werden müssen . Dies ist eine ziemlich experimentelle Herausforderung, aber ich dachte, es ist einen Versuch wert :). Eine vollständige Liste aller in Befunge-93 verwendeten Befehle finden Sie hier .
Spielanleitung?
Die Aufgabe ist ein bisschen wie bei Bullen und Räubern ohne Bullen. Im Grunde geht es nur darum, Einsendungen zu knacken, um Punkte zu bekommen. Jedes Puzzle enthält Fragezeichen. Diese müssen durch alle druckbaren ASCII-Zeichen im Bereich 32 - 127
einschließlich Leerzeichen ersetzt werden. Siehe folgendes Beispiel:
??????@
Voraussetzung ist, dass der Ausgang sein muss hi
. Nach einigen Rätseln können wir feststellen, dass die Lösung war:
"ih",,@
Aber! Sie nicht geben Sie die Lösung. Das ist zur Verhinderung von Betrug. Du postest nicht die Lösung, sondern den Hash . Der Hash wird mit dem folgenden Snippet generiert:
String.prototype.hashCode = function() { var namevalue = document.getElementById("inputname").value; var namenumber = 123;for (var character = 0; character < namevalue.length; character++) {namenumber += namevalue.substring(0, 1).charCodeAt(0);}var hash = 123 + namenumber, i, chr, len;if (this.length === 0) {return 0;}for (i = 0, len = this.length; i < len; i++) {chr = this.charCodeAt(i);hash = ((hash << 5) - hash) + chr; hash |= 0; }hash = Math.abs(hash);if ((hash).toString(16).length < 20) {for (var rand = 123; rand < 199; rand++) {hash = hash * rand;if ((hash).toString(16).length >= 20) { break; }}}return (hash).toString(16).substring(2, 12);};function placeHash() { var pretext = document.getElementById("inputhash").value; var resultinghash = pretext.hashCode(); document.getElementById("resulthash").innerHTML = 'Your hash: <span class="hashtext">' + resultinghash + "</span>";}
p {font-family: monospace;color: black;} .hashtext{color: red;font-weight:bold}
<div class="container"><p>Personal hash generator:<p><textarea id="inputhash" placeholder="Your submission" cols="40" rows="4"></textarea><br><textarea id="inputname" placeholder="Your name" cols="40" rows="1"></textarea><br><button class="hashbutton" onclick="placeHash()">Generate Hash!</button><br><p id="resulthash">Your hash:</p></div><!-- Created by Adnan -->
Wie benutze ich das Snippet?
- Fügen Sie zuerst die Lösung in den Einreichungsbereich ein
- Zweitens geben Sie Ihren Benutzernamen ein (sonst nichts, dies wird tatsächlich nach Ablauf der Frist überprüft)
- Drittens drücken Sie Generate Hash! um Ihren persönlichen Hash zu erhalten.
- Kopieren Sie den Hash und fügen Sie ihn in Ihren Beitrag ein.
Die Rätsel
Puzzle 1 (Punkte: 3)
??
??? ?
??????????
@
Ausgabe (beachten Sie das nachfolgende Leerzeichen):
1 2 3 4 5 6 7 8 9 10
Puzzle 2 (Punktzahl: 3)
???? ?
??????????
?? ?
@
Ausgabe:
abcdefghijklmnopqrstuvwxyz
Puzzle 3 (Punktzahl: 5)
?????????
????? ???
? ?
? ? ? ?
?
? ?
?????? ? ?
? ? ?
? ? @
??????? ?
? ?
???? ??
? ??
Ausgabe:
Hello World!
Puzzle 4 (Punktzahl: 2)
??????@
Ausgabe (beachten Sie das nachfolgende Leerzeichen):
123
Puzzle 5 (Punktzahl: 5)
?
?????
???@?????
??????
?????????
Ausgabe:
Befunge
Puzzle 6 (Punktzahl: 5)
? ? ?
?
??????????
?
?
???????? ??????????????
?????"floG edoC dna selzzuP gnimmargorP "??????
@
Ausgabe:
###################################
Programming Puzzles and Code Golf
###################################
Puzzle 7 (Punktzahl: 3)
???? ?????
???????
@???????
Ausgabe:
012345678910
- Dies ist eine Code-Herausforderung , die Person mit der höchsten Punktzahl gewinnt!
- Bei Stimmengleichheit gewinnt die Person, die zuerst alle Einsendungen eingereicht hat .
- Der letzte Tag für die Einreichung ist der 10. Januar UTC . Danach haben Sie 2 Tage Zeit, um die vollständige Lösung mit den bereits enthaltenen Hashes zu veröffentlichen. Diese werden überprüft :).
Wie poste ich?
Verwenden Sie das folgende Snippet, um Ihre Einreichung zu veröffentlichen:
#N solutions:
Puzzle 1: `[hash 1]`
Puzzle 2: `[hash 2]`
etc.
Es ist nicht notwendig, die Rätsel in der richtigen Reihenfolge zu lösen. Alle Programme wurden getestet hier und werden zur Überprüfung verwendet werden.
Viel Glück!
?
Leerzeichen durch Leerzeichen ersetzen ).Antworten:
7 Lösungen, 26 Punkte
Ich tippe dies auf meinem Handy ein, weil ich momentan keinen Zugang zu meinem Computer habe. Eigentlich musste ich Puzzle 6 mit Stift und Papier ausarbeiten.
Puzzle 1 (Punktzahl 3 ):
4f52d5b243
Dieser ist ziemlich einfach. Holen Sie sich eine
1
auf den Stapel, dann Print-Increment-Compare-Schleife, bis11
getroffen wird.Puzzle 2 (Punktzahl 3) ):
85226eba20
Grundsätzlich dasselbe wie das vorherige, nur mit Zeichen anstelle von Zahlen. Verwendete jedoch eine andere IP-Route.
Puzzle 3 (Punktzahl 5 ):
1ff5bcb1d9
Hier habe ich ein bisschen billiger gemacht. Schieben Sie die Zeichenfolge auf den Stapel und drucken Sie die Zeichen manuell durch die Leerzeichen. Ich hatte jede Menge zusätzlichen Platz, so dass ich nur die meisten Fragezeichen in mir belassen habe. Beachten Sie die nachgestellten Leerzeichen in den Zeilen 6 bis 8, ich habe sie bei der Berechnung des Hash nicht entfernt.
Puzzle 4 (Punktzahl 2 ):
f8b7bdf741
Ganz einfach: Geben Sie das Zeichen mit dem richtigen Code ein und drucken Sie es als Zahl mit zwei freien Stellen.
Puzzle 5 (Punktzahl 5 ):
c4db4b6af9
Es hat Spaß gemacht, dies richtig zu machen. Funktioniert bei einigen Interpreten möglicherweise nicht richtig, da Strings & Jumps umbrochen werden. Funktioniert bei dem verknüpften Interpreter. Grundsätzlich drückt der Code die Ausgabezeichenfolge und tritt dann in die Standarddruckschleife ein, die an den Seiten umbrochen wird.
Puzzle 6 (Punktzahl 5 ):
356e912eec
Nun war dies das "Meisterstück". Ich nahm tatsächlich ein Stück Papier und verbrachte einige Zeit damit. (Tatsächlich habe ich etwas zusätzliche Arbeit geleistet, indem ich beim Kopieren das Leerzeichen in der Zeichenfolge verpasst habe.) Beachten Sie, dass die nachgestellten Leerzeichen in Zeile 4 nicht entfernt wurden, als ich den Hash berechnet habe.
Der Code funktioniert, indem Sie zuerst eine Eins drücken, um in die Hauptschleife zu gelangen. Die Schleife verwendet das
#
in der zweiten Zeile als Zähler und gibt#
bei jeder Iteration ein aus und drückt es . Danach wird eine neue Zeile gedruckt und gedrückt. Als nächstes wird die angegebene Zeichenfolge verschoben. Schließlich tritt der Code in eine Druckschleife ein, die alles auf dem Stapel in umgekehrter Reihenfolge druckt, dh die Zeichenfolge, dann die neue Zeile und schließlich die verbleibende#
s.Puzzle 7 (Punktzahl 3 ):
0881fc2619
Dies ist fast das gleiche wie bei Puzzle 2, jedoch mit einer anderen Route, anderen Ausgabezeichen, einer zusätzlichen
01
am Ende und einem schnellen Wrap, um es zu beenden.quelle
4 Lösungen, 15 Punkte
Ich hoffe, ich habe das nachgestellte Leerzeichen bei der Erstellung der Hashes nirgendwo durcheinander gebracht.
Puzzle 1 (Punktzahl 3 ):
de1de4c4c8
Puzzle 3 (Punktzahl 5 ):
071cad0879
Puzzle 4 (Punktzahl 2 ):
531940bc43
Puzzle 5 (Punktzahl 5 ):
5bafaed8e9
quelle