Ci sono molte sfide che dicono "interpretare X", dove X è un linguaggio semplice. Secondo me, è troppo noioso. Per dare a tutte le persone procrastinate su Internet qualcosa di interessante da fare, puoi provare a fare questa sfida:
Sfida
Scegliere una lingua $LANG
. $LANG
può essere qualsiasi linguaggio di programmazione completo turing o un sottoinsieme completo di turing di un linguaggio di programmazione. Fai attenzione che se ometti una caratteristica della tua lingua $LANG
per l'interpretazione, non devi usarla anche per il tuo programma, poiché anche la tua presentazione deve essere scritta $LANG
.
Scrivi un compilatore / interprete per la $LANG
scrittura $LANG
. Puoi usare tutte le strutture (inclusi eval
e amici) della tua lingua disponibili per scrivere questo compilatore. Per rendere l'attività più impegnativa, esiste una restrizione: il programma dovrebbe essere in grado di interpretare / compilare tutti i programmi validi $LANG
tranne l'interprete / compilatore stesso. Se si verifica che il programma da interpretare / compilare è il tuo stesso interprete o compilatore (indipendentemente dal nome del file), il tuo programma dovrebbe fare qualcosa di completamente estraneo alla funzionalità di un interprete o di un compilatore (come barfing o stampa Hello, world!
).
Per rendere questa attività ancora più complessa, il programma non deve leggere la propria fonte durante la compilazione o l'interpretazione.
specificazioni
- Questo compito è il golf del codice. Vince l'invio con il minor numero di caratteri corretti. In caso di pareggio, vince la soluzione presentata per prima.
- Il tuo programma / script dovrebbe leggere il programma da interpretare da un file. È possibile codificare il percorso e il nome. Quando il file viene letto, è possibile compilare il file in un altro file (che deve essere eseguibile sul proprio sistema) o eseguirlo direttamente. Se
$LANG
manca di capacità di lettura dei file, puoi scegliere un altro modo di leggere il codice adatto$LANG
. Non è possibile scegliere$LANG
come sottoinsieme di un'altra lingua ma con capacità di lettura dei file rimosse. - Si applicano le normali regole del code-golf. Cioè: il tuo linguaggio personale personale che hai inventato solo per risolvere questa sfida è proibito, se la soluzione diventa banale usandola (come la definizione di un programma a carattere singolo che implementa esattamente la soluzione). L'abuso di regole è incoraggiato.