Votre tâche consiste à construire un interprète vers la langue inutile :
Voici les exigences fonctionnelles:
- Toutes les commandes décrites doivent être acceptées par l'interpréteur.
NO.
,NOOP
EtINCLUDE-xxx
doit être honoré.DONTUSEME(n)
doit avoir sa date de base pour être facilement configurable à quelque chose de plus raisonnable à des fins de test.INCLUDE-xxx
doit être capable de générer n'importe quelle commande avec une probabilité à peu près égale. S'il génère unDONTUSEME(n)
, il devrait choisir au hasard une petite valeur pour n.DONTUSEME(n)
les fenêtres devraient survivre à l'NO.
instruction. Astuce: lancez un nouveau processus pour ces fenêtres.BOOM!
etKABOOM!
doit faire quelque chose de mal et d'effrayant, etKABOOM!
doit être pire queBOOM!
. Mais cela ne doit pas être pris trop au sérieux, donc ce ne devrait pas être quelque chose de destructeur, de trop perturbateur ou difficile à défaire. S'il vous plaît, ne faites pas, ne faites pas et ne faites pas ces instructions exécuter unerm -rf \
commande, lancer une bombe fourchette, installer des logiciels malveillants, corrompre des données dans le système de fichiers, ou publier ou télécharger du contenu inapproprié sur Internet, ou toute autre chose clairement abusive.TURINGVSALONZO
devrait fonctionner comme s’il faisait en fait ce qu’il devrait faire. Astuce: faites-le décider au hasard s'il dormira pendant une très longue période aléatoire, ou une courte période aléatoire, ou pour toujours.- Toutes les autres instructions prédéfinies doivent faire autre chose que les instructions susmentionnées et différentes les unes des autres, mais jamais quelque chose de pire que
BOOM!
ouKABOOM!
. Ce qu'ils font exactement dépend de vous, mais une implémentation simple produirait simplement un message d'erreur ou un autre texte. - Vous devez fournir à l'utilisateur un moyen simple de fournir le programme qui serait exécuté par l'interpréteur. c'est-à-dire que lire du texte en clair à partir d'un fichier ou de
stdin
est correct. Le lire à partir d'un fichier crypté quelque part sur Internet ne l'est pas.
Optionnel:
- Vous pouvez inventer de nouvelles commandes si vous le souhaitez, mais elles devraient être soumises aux mêmes règles que les autres. Ne l'utilisez pas pour contourner les restrictions dans
BOOM!
etKABOOM!
ou pour vaincreDONTUSEME(n)
. Et si vous inventez de nouvelles commandes, expliquez ce qu'elles font. - Vous devriez penser à ce que fait l'interpréteur s'il reçoit une entrée avec des commandes inconnues (ou même un charabia aléatoire complètement insaisissable).
- Bien qu'aucune instruction ne doive vaincre la
DONTUSEME(n)
commande, vous pouvez lui ajouter un kill switch. N'exposez pas cela dans la langue.
Nous avons quelques exigences non fonctionnelles pour éviter les abus:
- Votre inscription doit être aussi complète et contenue automatiquement que possible. Cela signifie qu'il ne doit pas s'agir simplement d'une sorte d'installation ou d'un programme clairement incomplet. De cette façon, le téléchargement et l'utilisation de bibliothèques comme jQuery ou de packages à partir de maven central est correct, mais le téléchargement de code arbitraire et de packages à partir de votre serveur personnalisé ne l'est pas.
- Votre entrée ne devrait pas obtenir de contenu de cette même page ou d'un miroir ou d'une copie de cette page afin de faire une sorte de réflexion ou à toute autre fin. Ceci est essentiel pour éviter certains programmes qui essaient de lire les réponses des autres participants à cette question ou tentent de perturber la question ou les réponses de quelque manière que ce soit.
- Votre interprète doit être immuable et ne pas auto-modifier ou modifier son fichier d'entrée. Mais, créer une copie mutante de l'interpréteur ou du fichier d'entrée sans altérer l'original est correct.
Et enfin, considérant que:
- Les programmes dans les réponses devraient être assez inutiles même s'ils sont entièrement conformes;
- La langue est (exprès) très peu spécifiée, et les répondeurs ont beaucoup de libertés à prendre et sont incités à les prendre;
- Les exigences et les implémentations possibles ont beaucoup de points subjectifs;
- L'objectif avec cela est juste de s'amuser et de créer.
Ensuite, c'est un concours de popularité , et la réponse la plus positive entièrement conforme aux règles l'emporte! Donc, vous n'avez pas besoin de jouer au golf ou de masquer votre réponse (mais vous pouvez le faire si vous le souhaitez). Assurez-vous simplement de publier quelque chose d'original et de créatif pour mériter les votes positifs, c'est-à-dire s'il vous plaît ne postez pas d'entrées ennuyeuses boiteuses.
popularity-contest
interpreter
Victor Stafusa
la source
la source
Réponses:
TI-BASIC
Il y a un bouton kill pour
DONTUSEME
, pouvez-vous déterminer lequel il s'agit? :)la source
:Goto 1
dire queBOOM!
c'est juste un no-op?INCLUDE-
.HTML + Javascript + jQuery + jQuery UI
L'entrée doit être donnée dans la zone de texte et doit être formatée comme chaque commande d'une ligne. Les commandes ne sont pas sensibles à la casse. Toutes les commandes ont été entièrement implémentées. J'espère que vous apprécierez.
Vous pouvez l'essayer sur http://jsfiddle.net/bCBfk/
Il a une nouvelle commande:
Autres spoilers:
la source