Befunge Brain Teasers

15

Introducción

Para aquellos que se preguntan qué es exactamente Befunge , es un lenguaje basado en pila bidimensional creado en 1993 por Chris Pressy. Hice 7 enigmas que deben resolverse en Befunge-93 . Este es un desafío bastante experimental, pero pensé que valía la pena intentarlo :). Puede encontrar una lista completa de todos los comandos utilizados en Befunge-93 aquí .

¿Cómo jugar?

La tarea es un poco como los policías y ladrones sin la policía. Básicamente se trata de descifrar las presentaciones para obtener puntos. Cada rompecabezas contiene signos de interrogación. Estos deben ser reemplazados por cualquier carácter ascii imprimible en el rango 32 - 127, que incluya espacios en blanco. Vea el siguiente ejemplo:

??????@

Dado es que la salida debe ser hi. Después de un poco de confusión, podemos descubrir que la solución fue:

"ih",,@

¡Pero! Usted no da la solución. Eso es para la prevención de las trampas. No publicas la solución, sino el hash . El hash se genera con el siguiente fragmento:

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

¿Cómo usar el fragmento?

  • Primero, pegue la solución en la sección de envío
  • En segundo lugar, ingrese su nombre de usuario (nada más, esto se verificará realmente después del límite de tiempo)
  • Tercero, presione Generate Hash! para obtener tu hash personal .
  • Copie y pegue el hash en su envío.

Los rompecabezas

Rompecabezas 1 (Puntuación: 3)

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

Salida (tenga en cuenta el espacio en blanco al final):

1 2 3 4 5 6 7 8 9 10 

Puzzle 2 (Puntuación: 3)

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

Salida:

abcdefghijklmnopqrstuvwxyz

Puzzle 3 (Puntuación: 5)

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

Salida:

Hello World!

Puzzle 4 (Puntuación: 2)

??????@

Salida (tenga en cuenta el espacio en blanco al final):

123 

Puzzle 5 (Puntuación: 5)

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

Salida:

Befunge

Puzzle 6 (Puntuación: 5)

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

Salida:

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

Puzzle 7 (Puntuación: 3)

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

Salida:

012345678910

  • Este es , ¡la persona con la mayor cantidad de puntos gana!
  • En caso de empate, la persona que envió todas las presentaciones primero, gana.
  • El último día para la presentación es el 10 de enero UTC . Después de eso, tiene 2 días para publicar la solución completa, con los hash ya incluidos. Estos serán verificados :).

¿Cómo publicar?

Use el siguiente fragmento para publicar su envío:

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

No es necesario resolver los acertijos en orden. Todos los programas han sido probados aquí y serán utilizados para la verificación.

¡Buena suerte!

Adnan
fuente
Supongo que está bien si eliminamos los espacios en blanco finales (en caso de que reemplacemos cualquiera de los ?espacios finales con espacios).
Martin Ender
¿Estás seguro de que hay una solución única para cada rompecabezas?
KSFT
@KSFT ¿Importa si las soluciones son únicas?
Martin Ender
@ MartinBüttner Si no es único y alguien da una solución diferente, el hash no coincidirá.
KSFT
@KSFT Los hash no coincidirán de todos modos, porque el nombre de usuario es parte del hash. El propósito del hash es solo verificar quién encontró primero una solución de trabajo.
Martin Ender

Respuestas:

5

7 soluciones, 26 puntos

Estoy escribiendo esto en mi teléfono, porque actualmente no tengo acceso a mi computadora. De hecho, tuve que resolver Puzzle 6 con lápiz y papel.

Rompecabezas 1 (Puntuación 3 ):4f52d5b243

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

Este es bastante sencillo. Obtenga un 1en la pila, luego print-increment-compare-loop hasta que 11sea ​​golpeado.

Rompecabezas 2 (Puntuación 3 ):85226eba20

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

Básicamente igual que el anterior, solo con caracteres en lugar de números. Sin embargo, usó una ruta IP diferente.

Rompecabezas 3 (Puntuación 5 ):1ff5bcb1d9

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

Aquí me desanimé un poco. Empuje la cadena hacia la pila e imprima caracteres manualmente, navegando por los espacios. Tenía un montón de espacio extra, así que solo dejé la mayoría de los signos de interrogación. Tenga en cuenta los espacios finales en las filas 6 a 8, no los eliminé al calcular el hash.

Rompecabezas 4 (Puntuación 2 ):f8b7bdf741

"{".  @

Realmente simple, solo obtenga el carácter con el código correcto e imprima como un número, con dos espacios libres.

Puzzle 5 (Puntuación 5 ):c4db4b6af9

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

Fue divertido hacerlo bien. Es posible que no funcione correctamente en algunos intérpretes debido al ajuste de cadenas y saltos, funciona en el vinculado. Básicamente, el código empuja la cadena de salida y luego ingresa al bucle de impresión estándar, envolviendo los lados.

Rompecabezas 6 (Puntuación 5 ):356e912eec

1        v
     #
     v??v_

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

Ahora esta era la "obra maestra". De hecho, tomé un trozo de papel y dediqué algo de tiempo a esto. (En realidad, hice un trabajo extra al perder el espacio en la cadena al copiar). Tenga en cuenta los espacios finales en la fila 4, no los eliminé al calcular el hash.

El código funciona presionando primero uno para ingresar al bucle principal. El bucle usa el #en la segunda línea como contador, y ambos imprime y empuja un #en cada iteración. Después de eso, se imprime una nueva línea y se empuja. A continuación, se empuja la cadena dada. Finalmente, el código ingresa en un bucle de impresión, que imprime todo en la pila en reversa, lo que significa la cadena, luego la nueva línea y finalmente el #s restante .

Rompecabezas 7 (Puntuación 3 ):0881fc2619

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

Esto es casi lo mismo que Puzzle 2, pero con una ruta diferente, diferentes caracteres de salida, un adicional 01al final y un ajuste rápido para terminarlo.

PurkkaKoodari
fuente
Jaja, debería haber pensado un poco más para el rompecabezas 3 y 4. Todo se ve bien :)
Adnan
3

4 soluciones, 15 puntos

Espero no haber estropeado el espacio en blanco final en ningún lugar al generar los hash.

Rompecabezas 1 (Puntuación 3 ):de1de4c4c8

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

Rompecabezas 3 (Puntuación 5 ):071cad0879

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

Rompecabezas 4 (Puntuación 2 ):531940bc43

"{".  @

Puzzle 5 (Puntuación 5 ):5bafaed8e9

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