Rompicapo di Befunge


15

introduzione

Per chi si chiede cosa sia esattamente Befunge , si tratta di un linguaggio basato su stack bidimensionale realizzato nel 1993 da Chris Pressy. Ho realizzato 7 rompicapo che devono essere risolti in Befunge-93 . Questa è una vera sfida sperimentale, ma ho pensato che valesse la pena provare :). Un elenco completo di tutti i comandi utilizzati in Befunge-93 è disponibile qui .

Come giocare?

Il compito è un po 'come un poliziotto e ladri senza poliziotti. In pratica si tratta solo di infrangere i contributi per ottenere punti. Ogni puzzle contiene punti interrogativi. Questi devono essere sostituiti da qualsiasi carattere ASCII stampabile nell'intervallo 32 - 127, incluso lo spazio bianco. Vedi il seguente esempio:

??????@

Dato è che l'output deve essere hi. Dopo qualche enigma, possiamo scoprire che la soluzione era:

"ih",,@

Ma! Lei non dare la soluzione. Questo è per la prevenzione degli imbrogli. Non pubblichi la soluzione, ma l' hash . L'hash viene generato con il seguente frammento:

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

Come usare lo snippet?

  • Innanzitutto, incolla la soluzione nella sezione di invio
  • In secondo luogo, inserisci il tuo nome utente (nient'altro, questo sarà effettivamente verificato dopo il limite di tempo)
  • Terzo, premi Genera hash! per ottenere il tuo hash personale .
  • Copia e incolla l'hash nell'invio.

I puzzle

Puzzle 1 (Punteggio: 3)

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

Output (notare lo spazio bianco finale):

1 2 3 4 5 6 7 8 9 10 

Puzzle 2 (Punteggio: 3)

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

Produzione:

abcdefghijklmnopqrstuvwxyz

Puzzle 3 (Punteggio: 5)

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

Produzione:

Hello World!

Puzzle 4 (Punteggio: 2)

??????@

Output (notare lo spazio bianco finale):

123 

Puzzle 5 (Punteggio: 5)

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

Produzione:

Befunge

Puzzle 6 (Punteggio: 5)

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

Produzione:

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

Puzzle 7 (Punteggio: 3)

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

Produzione:

012345678910

  • Questa è , vince la persona con il maggior numero di punti!
  • In caso di pareggio , vince chi ha presentato per primo tutti i contributi.
  • L' ultimo giorno per l'invio è il 10 gennaio UTC . Successivamente, hai 2 giorni per pubblicare la soluzione completa, con gli hash già inclusi. Questi saranno verificati :).

Come pubblicare?

Utilizza il seguente frammento per inviare la tua richiesta:

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

Non è necessario risolvere i puzzle in ordine. Tutti i programmi sono stati testati qui e verranno utilizzati per la verifica.

In bocca al lupo!


Suppongo che vada bene se rimuoviamo spazi ?vuoti finali (nel caso in cui sostituiamo uno spazio vuoto con spazi)?
Martin Ender,

Sei sicuro che ci sia una soluzione unica per ogni puzzle?
KSFT,

@KSFT Importa se le soluzioni sono uniche?
Martin Ender,

@ MartinBüttner Se non è unico e qualcuno offre una soluzione diversa, l'hash non corrisponderà.
KSFT,

@KSFT Gli hash non corrisponderanno comunque, perché il nome utente fa parte dell'hash. Lo scopo dell'hash è solo quello di verificare chi ha trovato prima una soluzione funzionante.
Martin Ender,

Risposte:


5

7 soluzioni, 26 punti

Sto scrivendo questo sul mio telefono, perché al momento non ho accesso al mio computer. In realtà ho dovuto elaborare Puzzle 6 con carta e penna.

Puzzle 1 (punteggio 3 ):4f52d5b243

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

Questo è abbastanza semplice. Prendi uno 1in pila, quindi stampa-incremento-confronta-ciclo fino a quando non 11viene colpito.

Puzzle 2 (punteggio 3 ):85226eba20

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

Sostanzialmente uguale al precedente, solo con caratteri anziché numeri. Tuttavia, ho utilizzato una route IP diversa.

Puzzle 3 (punteggio 5 ):1ff5bcb1d9

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

Qui ho messo un po 'a buon mercato. Spingi la stringa nella pila e stampa manualmente i caratteri, navigando attraverso gli spazi. Avevo un sacco di spazio extra, quindi ho lasciato la maggior parte dei punti interrogativi. Nota gli spazi finali nelle righe da 6 a 8, non li ho rimossi durante il calcolo dell'hash.

Puzzle 4 (punteggio 2 ):f8b7bdf741

"{".  @

Davvero semplice, basta ottenere il personaggio con il codice corretto e stampare come un numero, con due spazi liberi.

Puzzle 5 (punteggio 5 ):c4db4b6af9

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

È stato divertente farlo bene. Potrebbe non funzionare correttamente su alcuni interpreti a causa del wrapping di stringhe e salti, funziona su quello collegato. Fondamentalmente, il codice spinge la stringa di output e quindi entra nel ciclo di stampa standard, avvolgendosi sui lati.

Puzzle 6 (punteggio 5 ):356e912eec

1        v
     #
     v??v_

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

Ora questo era il "capolavoro". In realtà ho preso un pezzo di carta e ci ho dedicato del tempo. (In realtà, ho fatto qualche lavoro extra mancando lo spazio nella stringa durante la copia.) Nota gli spazi finali sulla riga 4, non li ho rimossi durante il calcolo dell'hash.

Il codice funziona premendo prima uno per entrare nel ciclo principale. Il loop utilizza la #seconda riga come contatore e stampa e spinge #a ogni iterazione. Successivamente viene stampata e spinta una nuova riga. Successivamente, viene inviata la stringa specificata. Infine, il codice entra in un ciclo di stampa, che stampa tutto in ordine inverso, il che significa la stringa, quindi la nuova riga e infine le rimanenti #s.

Puzzle 7 (punteggio 3 ):0881fc2619

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

Questo è quasi lo stesso di Puzzle 2, ma con un percorso diverso, caratteri di output diversi, un ulteriore 01alla fine e un avvolgimento rapido per finirlo.


Haha, avrei dovuto pensarci un po 'di più per il puzzle 3 e 4. Tutto sembra a posto :)
Adnan,

3

4 soluzioni, 15 punti

Spero di non aver rovinato lo spazio bianco finale da nessuna parte durante la generazione degli hash.

Puzzle 1 (punteggio 3 ):de1de4c4c8

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

Puzzle 3 (punteggio 5 ):071cad0879

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

Puzzle 4 (punteggio 2 ):531940bc43

"{".  @

Puzzle 5 (punteggio 5 ):5bafaed8e9

    ^
  v >,,
n"<@,, ,"
 "e"^>,
uge"<^"Bf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.