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. $LANGpeut ê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 $LANGpour 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 evalet 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' $LANGexception 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
$LANGmanque 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$LANGcomme 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é.