Casse-têtes Befunge

15

introduction

Pour ceux qui se demandent exactement ce qu'est Befunge , c'est un langage basé sur une pile bidimensionnelle fabriqué en 1993 par Chris Pressy. J'ai fait 7 casse - tête qui doivent être résolus dans Befunge-93 . C'est un défi assez expérimental, mais j'ai pensé que ça valait le coup :). Une liste complète de toutes les commandes utilisées dans Befunge-93 peut être trouvée ici .

Comment jouer?

La tâche est un peu comme un flic et des voleurs sans les flics. Il s'agit simplement de casser des soumissions afin d'obtenir des points. Chaque puzzle contient des points d'interrogation. Ceux-ci doivent être remplacés par tout caractère ascii imprimable de la plage 32 - 127, y compris les espaces. Voir l'exemple suivant:

??????@

Étant donné que la sortie doit être hi. Après quelques énigmes, nous pouvons découvrir que la solution était:

"ih",,@

Mais! Vous ne donnez pas la solution. C'est pour la prévention de la tricherie. Vous ne postez pas la solution, mais le hachage . Le hachage est généré avec l'extrait de code suivant:

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 -->

Comment utiliser l'extrait de code?

  • Tout d'abord, collez la solution dans la section de soumission
  • Deuxièmement, entrez votre nom d'utilisateur (rien d'autre, cela sera effectivement vérifié après la limite de temps)
  • Troisièmement, appuyez sur Générer un hachage! pour obtenir votre hachage personnel .
  • Copiez et collez le hachage dans votre soumission.

Les puzzles

Puzzle 1 (Score: 3)

 ??
???      ?
??????????
         @

Sortie (notez les espaces de fin):

1 2 3 4 5 6 7 8 9 10 

Puzzle 2 (Score: 3)

 ????    ?
??????????
??       ?
         @

Production:

abcdefghijklmnopqrstuvwxyz

Puzzle 3 (Score: 5)

  ?????????
    ?????  ???
    ?     ?
    ? ?   ?  ?
          ?
          ?  ?
  ??????  ?  ?
    ?     ?  ?
       ?  ?  @
  ??????? ?
    ?  ?
????  ??
?  ??

Production:

Hello World!

Puzzle 4 (Score: 2)

??????@

Sortie (notez les espaces de fin):

123 

Puzzle 5 (Score: 5)

    ?
  ?????
???@?????
 ??????
?????????

Production:

Befunge

Puzzle 6 (Score: 5)

?    ?   ?
     ?
??????????
     ?
     ?
     ????????                         ??????????????
     ?????"floG edoC dna selzzuP gnimmargorP "??????
     @

Production:

###################################
 Programming Puzzles and Code Golf
###################################

Puzzle 7 (Score: 3)

???? ?????
   ???????
  @???????

Production:

012345678910

  • C'est un , la personne avec le plus de points gagne!
  • En cas d'égalité, la personne qui a soumis toutes les soumissions en premier, gagne.
  • Le dernier jour de soumission est le 10 janvier UTC . Après cela, vous avez 2 jours pour publier la solution complète, avec les hachages déjà inclus. Ceux-ci seront vérifiés :).

Comment poster?

Utilisez l'extrait de code suivant pour publier votre soumission:

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

Il n'est pas nécessaire de résoudre les puzzles dans l'ordre. Tous les programmes ont été testés ici et seront utilisés pour la vérification.

Bonne chance!

Adnan
la source
Je suppose que c'est bien si nous supprimons les espaces de fin (au cas où nous remplacerions l'un des ?espaces par des espaces)?
Martin Ender
Êtes-vous sûr qu'il existe une solution unique pour chaque puzzle?
KSFT
@KSFT Est-il important que les solutions soient uniques?
Martin Ender du
@ MartinBüttner Si ce n'est pas unique et que quelqu'un donne une solution différente, le hachage ne correspondra pas.
KSFT
@KSFT Les hachages ne correspondront pas de toute façon, car le nom d'utilisateur fait partie du hachage. Le but du hachage est uniquement de vérifier qui a trouvé une solution de travail en premier.
Martin Ender

Réponses:

5

7 solutions, 26 points

Je tape ceci sur mon téléphone, car je n'ai pas accès à mon ordinateur pour le moment. J'ai dû travailler sur Puzzle 6 au stylo et au papier.

Puzzle 1 (Score 3 ):4f52d5b243

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

Celui-ci est assez simple. Obtenez un 1sur la pile, puis imprimez-incrémentez-comparez la boucle jusqu'à ce que vous 11frappiez.

Puzzle 2 (Score 3 ):85226eba20

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

Fondamentalement le même que le précédent, juste avec des caractères au lieu de chiffres. J'ai utilisé une route IP différente cependant.

Puzzle 3 (Score 5 ):1ff5bcb1d9

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

Ici, j'ai un peu réduit le prix. Poussez la chaîne dans la pile et imprimez les caractères manuellement, en parcourant les espaces. J'avais beaucoup d'espace supplémentaire, alors j'ai laissé la plupart des points d'interrogation. Notez les espaces de fin sur les lignes 6 à 8, je ne les ai pas supprimés lors du calcul du hachage.

Puzzle 4 (Score 2 ):f8b7bdf741

"{".  @

Vraiment simple, obtenez simplement le caractère avec le bon code et imprimez-le sous forme de nombre, avec deux espaces libres.

Puzzle 5 (Score 5 ):c4db4b6af9

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

C'était amusant de bien faire les choses. Peut ne pas fonctionner correctement sur certains interprètes en raison de l'encapsulation de chaînes et de sauts, fonctionne sur celui lié. Fondamentalement, le code pousse la chaîne de sortie, puis entre dans la boucle d'impression standard, enveloppant les côtés.

Puzzle 6 (Score 5 ):356e912eec

1        v
     #
     v??v_

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

Maintenant, c'était le "chef-d'œuvre". En fait, j'ai pris un morceau de papier et j'y ai passé du temps. (En fait, j'ai fait un travail supplémentaire en manquant l'espace dans la chaîne lors de la copie.) Notez les espaces de fin sur la ligne 4, je ne les ai pas supprimés lors du calcul du hachage.

Le code fonctionne en poussant d'abord un pour entrer dans la boucle principale. La boucle utilise la #sur la deuxième ligne comme compteur, et imprime et pousse à la fois #à chaque itération. Après cela, une nouvelle ligne est imprimée et poussée. Ensuite, la chaîne donnée est poussée. Enfin, le code entre dans une boucle d'impression, qui imprime tout sur la pile en sens inverse, c'est-à-dire la chaîne, puis la nouvelle ligne et enfin le #s restant .

Puzzle 7 (Score 3 ):0881fc2619

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

C'est presque la même chose que Puzzle 2, mais avec un itinéraire différent, des caractères de sortie différents, un supplémentaire 01à la fin et un bouclage rapide pour le terminer.

PurkkaKoodari
la source
Haha, j'aurais dû réfléchir un peu plus longtemps pour le puzzle 3 et 4. Tout a l'air bien :)
Adnan
3

4 solutions, 15 points

J'espère que je n'ai pas gâché l'espace blanc arrière lors de la génération des hachages.

Puzzle 1 (Score 3 ):de1de4c4c8

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

Puzzle 3 (Score 5 ):071cad0879

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

Puzzle 4 (Score 2 ):531940bc43

"{".  @

Puzzle 5 (Score 5 ):5bafaed8e9

    ^
  v >,,
n"<@,, ,"
 "e"^>,
uge"<^"Bf
Martin Ender
la source