Befunge Rätsel


15

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 - 127einschließ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 , 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!


Ich nehme an, dass es in Ordnung ist, abschließende Leerzeichen zu entfernen (falls wir eines der abschließenden ?Leerzeichen durch Leerzeichen ersetzen ).
Martin Ender

Sind Sie sicher, dass es für jedes Puzzle eine einzigartige Lösung gibt?
KSFT

@KSFT Ist es wichtig, ob die Lösungen einzigartig sind?
Martin Ender

@ MartinBüttner Wenn es nicht eindeutig ist und jemand eine andere Lösung gibt, stimmt der Hash nicht überein.
KSFT

@KSFT Die Hashes stimmen ohnehin nicht überein, da der Benutzername Teil des Hashes ist. Der Zweck des Hashs besteht nur darin, zu überprüfen, wer zuerst eine funktionierende Lösung gefunden hat.
Martin Ender

Antworten:


5

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

 1v
v:<      <
>.1+:56+-|
         @

Dieser ist ziemlich einfach. Holen Sie sich eine 1auf den Stapel, dann Print-Increment-Compare-Schleife, bis 11getroffen wird.

Puzzle 2 (Punktzahl 3) ):85226eba20

 "`"     v
v"z":,:+1<
>-       |
         @

Grundsätzlich dasselbe wie das vorherige, nur mit Zeichen anstelle von Zahlen. Verwendete jedoch eine andere IP-Route.

Puzzle 3 (Punktzahl 5 ):1ff5bcb1d9

  "!dlroW"v
    >,,,,  ,,v
    ,     "
    , ?      ,
          o
          l   
  ??,???  l   
    ,     e   
       ?  "  @
  ??^,"H" <
    ?  ?
????  ??
?  ??

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

    v
  ??"??
#,_@e">>:
 <"B"<^
ung"<^"ef

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

1        v
     #
     v??v_

     5
      75<^                              p15:-1g15,:*
     >5+:,"floG edoC dna selzzuP gnimmargorP ">:#,_@
     @

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

"0"> :,1+v
   |-":":<
  @>"10",,

Dies ist fast das gleiche wie bei Puzzle 2, jedoch mit einer anderen Route, anderen Ausgabezeichen, einer zusätzlichen 01am Ende und einem schnellen Wrap, um es zu beenden.


Haha, ich hätte etwas länger über die Rätsel 3 und 4 nachdenken sollen. Alles sieht gut aus :)
Adnan

3

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

 v
v<       >
>1+:.:9`!|
         @

Puzzle 3 (Punktzahl 5 ):071cad0879

  "!dlroW"v
    >,,,,  ,,v
    ,     "
    ,        ,
          o
          l
    ,     l
    ,     e
          "  @
    ^,"H" <

Puzzle 4 (Punktzahl 2 ):531940bc43

"{".  @

Puzzle 5 (Punktzahl 5 ):5bafaed8e9

    ^
  v >,,
n"<@,, ,"
 "e"^>,
uge"<^"Bf
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.