Sua tarefa é criar um intérprete para o idioma Inútil :
Aqui estão os requisitos funcionais:
- Todos os comandos descritos devem ser aceitos pelo intérprete.
NO.
,NOOP
EINCLUDE-xxx
deve ser honrado.DONTUSEME(n)
deve ter sua data-base para ser facilmente configurável para algo mais razoável para fins de teste.INCLUDE-xxx
deve ser capaz de gerar qualquer comando com uma probabilidade aproximadamente igual. Se gerar aDONTUSEME(n)
, ele deverá escolher aleatoriamente um pequeno valor para n.DONTUSEME(n)
janelas devem sobreviver àNO.
instrução. Dica: gera um novo processo para essas janelas.BOOM!
eKABOOM!
deve fazer algo ruim e assustador, eKABOOM!
deve ser pior queBOOM!
. Mas isso não deve ser levado muito a sério; portanto, não deve ser algo destrutivo, excessivamente perturbador ou difícil de ser desfeito. Por favor, não faça , não faça , e não faça essas instruções executar umrm -rf \
comando, executar um fork bomb, instalar malware, corromper dados no sistema de arquivos, publicar ou baixar conteúdo inapropriado da Internet ou qualquer outra coisa claramente abusiva.TURINGVSALONZO
deve funcionar como se de fato estivesse fazendo o que deveria. Dica: decida aleatoriamente se ele dormirá por um período aleatório muito longo, ou um período aleatório curto ou para sempre.- Todas as outras instruções predefinidas devem fazer algo diferente das instruções mencionadas acima e diferentes umas das outras, mas nunca algo pior que
BOOM!
ouKABOOM!
. O que eles fazem exatamente depende de você, mas uma implementação simples gera apenas uma mensagem de erro ou algum outro texto. - Você deve fornecer uma maneira fácil para o usuário fornecer o programa que seria executado pelo intérprete. ou seja, a leitura de texto sem formatação de um arquivo ou de
stdin
está ok. Lê-lo de um arquivo criptografado em algum lugar da internet não é.
Opcional:
- Você pode inventar alguns novos comandos, se quiser, mas eles devem estar sujeitos às mesmas regras que os outros. Não use isso para contornar as restrições
BOOM!
e /KABOOM!
ou derrotarDONTUSEME(n)
. E se você inventar novos comandos, explique o que eles fazem. - Você deve pensar sobre o que o intérprete fará se receber entrada com comandos desconhecidos (ou até mesmo bytes aleatórios completamente incompreensíveis).
- Embora nenhuma instrução deva anular o
DONTUSEME(n)
comando, você pode adicionar uma opção de interrupção para ele. Só não exponha isso no idioma.
Temos alguns requisitos não funcionais para evitar abusos:
- Sua entrada deve ser o mais completa e autocontida possível. Isso significa que não deve ser simplesmente algum tipo de instalador ou programa claramente incompleto. Dessa forma, o download e o uso de bibliotecas como jQuery ou pacotes do maven central é bom, mas o download de códigos e pacotes arbitrários do seu servidor personalizado não é.
- Sua entrada não deve receber nenhum conteúdo desta página ou de algum espelho ou cópia desta página para refletir ou para qualquer outro propósito. Isso é essencial para evitar algum programa que tente ler as respostas de outros participantes para esta pergunta ou tente interromper a pergunta ou as respostas de qualquer forma.
- Seu intérprete deve ser imutável e não modificar ou modificar seu arquivo de entrada. Mas, criar uma cópia mutante do intérprete ou do arquivo de entrada sem alterar o original está ok.
E, finalmente, considerando o seguinte:
- Espera-se que os programas nas respostas sejam bastante inúteis, mesmo que totalmente conformes;
- A linguagem é (de propósito) muito subespecificada, e os respondentes têm muitas liberdades a tomar e são incentivados a tomá-las;
- Os requisitos e as possíveis implementações têm muitos pontos subjetivos;
- O objetivo com isso é apenas obter diversão e criatividade.
Então, este é um concurso de popularidade , e a resposta mais votada em total conformidade com as regras vence! Portanto, você não precisa jogar golfe ou ofuscar sua resposta (mas pode fazer isso se quiser). Apenas certifique-se de publicar algo original e criativo para merecer os votos positivos, ou seja, por favor, não publique entradas chatas e sem graça.
popularity-contest
interpreter
Victor Stafusa
fonte
fonte
Respostas:
TI-BASIC
Existe um botão para matar
DONTUSEME
, você pode descobrir qual é? :)fonte
:Goto 1
significa queBOOM!
é apenas um não-op?INCLUDE-
.HTML + Javascript + jQuery + jQuery UI
A entrada deve ser fornecida na área de texto e formatada como cada comando em uma linha. Os comandos não diferenciam maiúsculas de minúsculas. Todos os comandos foram totalmente implementados. Espero que você goste.
Você pode experimentá-lo em http://jsfiddle.net/bCBfk/
Tem um novo comando:
Outros spoilers:
fonte