Introdução
Para quem quer saber exatamente o que é o Befunge , é uma linguagem bidimensional baseada em pilha, criada em 1993 por Chris Pressy. Fiz 7 quebra-cabeças que precisam ser resolvidos no Befunge-93 . Este é um desafio bastante experimental, mas achei que vale a pena tentar :). Uma lista completa de todos os comandos usados no Befunge-93 pode ser encontrada aqui .
Como jogar?
A tarefa é um pouco como policiais e ladrões sem os policiais. É basicamente quebrar as submissões para ganhar pontos. Todo quebra-cabeça contém pontos de interrogação. Eles devem ser substituídos por qualquer caractere ascii imprimível no intervalo 32 - 127
, que inclua espaço em branco. Veja o seguinte exemplo:
??????@
Dado é que a saída deve ser hi
. Após algumas intrigantes, podemos descobrir que a solução foi:
"ih",,@
Mas! Você não dá a solução. Isso é para a prevenção de trapaça. Você não publica a solução, mas o hash . O hash é gerado com o seguinte snippet:
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 -->
Como usar o snippet?
- Primeiro, cole a solução na seção de envio
- Segundo, digite seu nome de usuário (nada mais, isso será verificado depois do prazo)
- Terceiro, pressione Gerar Hash! para obter seu hash pessoal .
- Copie e cole o hash no seu envio.
Os quebra-cabeças
Quebra-cabeça 1 (Pontuação: 3)
??
??? ?
??????????
@
Saída (observe o espaço em branco à direita):
1 2 3 4 5 6 7 8 9 10
Quebra-cabeça 2 (Pontuação: 3)
???? ?
??????????
?? ?
@
Resultado:
abcdefghijklmnopqrstuvwxyz
Quebra-cabeça 3 (Pontuação: 5)
?????????
????? ???
? ?
? ? ? ?
?
? ?
?????? ? ?
? ? ?
? ? @
??????? ?
? ?
???? ??
? ??
Resultado:
Hello World!
Quebra-cabeça 4 (Pontuação: 2)
??????@
Saída (observe o espaço em branco à direita):
123
Quebra-cabeça 5 (Pontuação: 5)
?
?????
???@?????
??????
?????????
Resultado:
Befunge
Quebra-cabeça 6 (Pontuação: 5)
? ? ?
?
??????????
?
?
???????? ??????????????
?????"floG edoC dna selzzuP gnimmargorP "??????
@
Resultado:
###################################
Programming Puzzles and Code Golf
###################################
Quebra-cabeça 7 (Pontuação: 3)
???? ?????
???????
@???????
Resultado:
012345678910
- Este é um desafio de código , a pessoa com a maior quantidade de pontos ganha!
- Em caso de empate, a pessoa que enviou todas as inscrições primeiro vence.
- O último dia para envio é 10 de janeiro UTC . Depois disso, você tem 2 dias para postar a solução completa, com os hashes já incluídos. Estes serão verificados :).
Como postar?
Use o seguinte snippet para postar seu envio:
#N solutions:
Puzzle 1: `[hash 1]`
Puzzle 2: `[hash 2]`
etc.
Não é necessário resolver os quebra-cabeças em ordem. Todos os programas foram testados aqui e serão usados para verificação.
Boa sorte!
?
)?Respostas:
7 soluções, 26 pontos
Estou digitando isso no meu telefone, porque não tenho acesso ao meu computador atualmente. Na verdade, eu tive que elaborar o Puzzle 6 com caneta e papel.
Quebra-cabeça 1 (Pontuação 3 ):
4f52d5b243
Este é bastante direto. Coloque um
1
na pilha e imprima-incremente-compare-loop até11
ser atingido.Quebra-cabeça 2 (Pontuação 3 ):
85226eba20
Basicamente, o mesmo que o anterior, apenas com caracteres em vez de números. Utilizou uma rota IP diferente.
Quebra-cabeça 3 (Pontuação 5 ):
1ff5bcb1d9
Aqui eu falei um pouco. Empurre a sequência para a pilha e imprima caracteres manualmente, navegando pelos espaços. Eu tinha muito espaço extra, então deixei a maioria dos pontos de interrogação. Observe os espaços finais nas linhas 6 a 8, não os removi ao calcular o hash.
Quebra-cabeça 4 (Pontuação 2 ):
f8b7bdf741
Realmente simples, basta pegar o caractere com o código correto e imprimir como um número, com dois espaços livres.
Quebra-cabeça 5 (Pontuação 5 ):
c4db4b6af9
Foi divertido de acertar. Pode não funcionar corretamente em alguns intérpretes devido a quebra de cordas e saltos, funciona no vinculado. Basicamente, o código pressiona a sequência de saída e entra no loop de impressão padrão, envolvendo as laterais.
Quebra-cabeça 6 (Pontuação 5 ):
356e912eec
Agora esta foi a "obra-prima". Eu realmente tomou um pedaço de papel e passou algum tempo com isso. (Na verdade, fiz um trabalho extra, perdendo o espaço na sequência ao copiar.) Observe os espaços à direita na linha 4, não os removi ao calcular o hash.
O código funciona pressionando primeiro um para entrar no loop principal. O loop usa o
#
na segunda linha como um contador e imprime e pressiona um#
em cada iteração. Depois disso, uma nova linha é impressa e enviada por push. Em seguida, a sequência especificada é pressionada. Finalmente, o código entra em um loop de impressão, que imprime tudo na pilha ao contrário, o que significa a sequência, a nova linha e, finalmente, os restantes#
s.Quebra-cabeça 7 (Pontuação 3 ):
0881fc2619
Isso é quase o mesmo que o Puzzle 2, mas com uma rota diferente, caracteres de saída diferentes, um adicional
01
no final e uma quebra rápida para finalizar.fonte
4 soluções, 15 pontos
Espero não ter atrapalhado o espaço em branco em qualquer lugar ao gerar os hashes.
Quebra-cabeça 1 (Pontuação 3 ):
de1de4c4c8
Quebra-cabeça 3 (Pontuação 5 ):
071cad0879
Quebra-cabeça 4 (Pontuação 2 ):
531940bc43
Quebra-cabeça 5 (Pontuação 5 ):
5bafaed8e9
fonte