Existem muitos desafios que dizem "interpretar X", onde X é uma linguagem simples. Na minha opinião, isso é muito chato. Para dar a todas as pessoas que procrastinam na internet algo interessante para fazer, você pode tentar fazer este desafio:
Desafio
Escolha um idioma $LANG
. $LANG
pode ser qualquer linguagem de programação completa ou um subconjunto completo de uma linguagem de programação. Lembre-se de que, se você omitir um recurso do seu idioma $LANG
para interpretação, também não deve usá-lo em seu próprio programa, pois sua submissão também deve ser escrita $LANG
.
Escreva um compilador / intérprete para $LANG
escrever em $LANG
. Você pode usar todos os recursos (inclusive eval
e amigos) do seu idioma disponíveis para escrever este compilador. Para tornar a tarefa mais desafiadora, há uma restrição: O programa deve ser capaz de interpretar / compilar todos os programas válidos, $LANG
exceto o próprio intérprete / compilador. Se ocorrer que o programa a ser interpretado / compilado é seu próprio intérprete ou compilador (independentemente do nome do arquivo), seu programa deve fazer algo completamente não relacionado à funcionalidade de um intérprete ou compilador (como vomitar ou imprimir Hello, world!
).
Para tornar essa tarefa ainda mais complexa, seu programa não deve ler sua própria fonte ao compilar ou interpretar.
Especificações
- Esta tarefa é código de golfe. A submissão com menos caracteres corretos vence. Em caso de empate, a solução enviada primeiro vence.
- Seu programa / script deve ler o programa a ser interpretado de um arquivo. Você pode codificar seu caminho e nome. Quando o arquivo é lido, você pode compilar o arquivo para outro arquivo (deve ser executável no seu sistema) ou executá-lo diretamente. Se
$LANG
não houver recursos de leitura de arquivos, você poderá escolher outra maneira de ler o código adequado$LANG
. Você não pode escolher$LANG
como um subconjunto de outro idioma, mas com os recursos de leitura de arquivos removidos. - Aplicam-se regras usuais de código-golfe. Ou seja: é proibido o seu idioma de estimação pessoal que você criou para solucionar esse desafio, se a solução se tornar trivial (como definir um programa de caractere único que implemente exatamente a solução). O abuso de regras é incentivado.