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 défi de code , 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!
?
espaces par des espaces)?Réponses:
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
Celui-ci est assez simple. Obtenez un
1
sur la pile, puis imprimez-incrémentez-comparez la boucle jusqu'à ce que vous11
frappiez.Puzzle 2 (Score 3 ):
85226eba20
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
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
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
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
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.la source
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
Puzzle 3 (Score 5 ):
071cad0879
Puzzle 4 (Score 2 ):
531940bc43
Puzzle 5 (Score 5 ):
5bafaed8e9
la source