Il existe de nombreux défis qui disent "interpréter X", où X est un langage simple. À mon avis, c'est beaucoup trop ennuyeux. Pour donner à toutes les personnes qui procrastinent sur Internet quelque chose d'intéressant à faire, vous pouvez essayer de relever ce défi:
Défi
Choisissez une langue $LANG
. $LANG
peut être n'importe quel langage de programmation complet turing ou un sous-ensemble complet turing d'un langage de programmation. Sachez que si vous omettez une caractéristique de votre langue $LANG
pour l'interprétation, vous ne devez pas non plus l'utiliser pour votre propre programme, car votre soumission doit également être écrite $LANG
.
Écrivez un compilateur / interprète pour l' $LANG
écrire $LANG
. Vous pouvez utiliser toutes les fonctionnalités (y compris eval
et les amis) de votre langue qui sont disponibles pour écrire ce compilateur. Pour rendre la tâche plus difficile, il y a une restriction: votre programme devrait être capable d'interpréter / compiler tous les programmes valides à l' $LANG
exception de votre interprète / compilateur lui-même. S'il se produit que le programme à interpréter / compiler est votre interprète ou compilateur lui-même (quel que soit le nom de fichier), votre programme doit faire quelque chose de complètement indépendant de la fonctionnalité d'un interprète ou d'un compilateur (comme l'écrochage ou l'impression Hello, world!
).
Pour rendre cette tâche encore plus complexe, votre programme ne doit pas lire sa propre source lors de la compilation ou de l'interprétation.
Caractéristiques
- Cette tâche est le golf de code. La soumission avec le moins de caractères qui est correcte gagne. En cas d'égalité, la solution soumise en premier l'emporte.
- Votre programme / script doit lire le programme à interpréter à partir d'un fichier. Vous pouvez coder en dur son chemin et son nom. Lorsque le fichier est lu, vous pouvez soit le compiler dans un autre fichier (qui doit être exécutable sur votre système) soit l'exécuter directement. S'il
$LANG
manque des capacités de lecture de fichiers, vous pouvez choisir une autre façon de lire le code qui convient$LANG
. Vous ne pouvez pas choisir$LANG
comme sous-ensemble d'une autre langue mais avec les capacités de lecture de fichiers supprimées. - Les règles habituelles de code-golf s'appliquent. C'est-à-dire: votre langage personnel que vous avez créé juste pour résoudre ce défi est interdit, si la solution devient triviale en l'utilisant (comme la définition d'un programme à un seul caractère qui implémente exactement la solution). L'abus de règles est encouragé.