introduction
Le calcul est un langage de plaisanterie ésotérique .
De l' entrée esolangs:
Le calcul n'a pas de syntaxe requise et a le pouvoir de résoudre tous les problèmes. Il est assez intelligent pour interpréter n'importe quel langage humain (anglais, espagnol, latin, etc.), tout langage de programmation (C ++, Java, brainfuck, etc.), ou tout type de données auquel vous pouvez penser. Le seul inconvénient est qu'il n'y a absolument pas d'E / S.
Quelques exemples de programmes
Hello World
Un programme de base Hello World
What is love?
Détermine que l'amour est (bébé ne me fait pas de mal).
When will we ever graduate?
Détermine la date exacte de sortie de cette version bêta de ce site.
Le défi
Votre tâche consiste à écrire un interpréteur de calcul complet. Cela semble assez difficile, mais gardez à l'esprit que Compute n'a absolument pas d'E / S. Ainsi, votre interprète dormira juste une seconde pour chaque ligne du programme d'entrée et sortira \n\nDone.
après cela (c'est la seule exception à la chose sans E / S).
Vous pouvez trouver l'interprète officiel au bas de ce site .
Notez que l'interpréteur officiel fait une pause d'une seconde pour chaque caractère du code source donné. Pour éviter de longues périodes d'attente tout en testant votre interprète avec des questions significatives, nous restons avec des lignes dans ce défi.
Règles
- L'entrée peut contenir plusieurs lignes séparées par un
\n
. Il y aura toujours au moins une ligne. - Contrairement à l'implémentation officielle, vous n'avez pas besoin de prendre un fichier en entrée. Vous pouvez utiliser le programme Compute dans n'importe quelle forme d'entrée que vous souhaitez.
- La seule sortie autorisée est
\n\nDone.
. Une nouvelle ligne de fin est autorisée. - Fonction ou programme complet autorisé.
- Règles par défaut pour les entrées / sorties.
- Des échappatoires standard s'appliquent.
- C'est le golf de code , donc le nombre d'octets le plus bas l'emporte. Tiebreaker est une soumission antérieure.
la source
Réponses:
05AB1E ,
16151413 octetsCode:
Explication:
Cette partie équivaut à
"\n\nDone."
:Essayez-le en ligne!
Utilise l' encodage CP-1252 .
la source
Oration , 117 octets
Expliquons cela. Tout d'abord, cela se transforme en:
Encore confus? Disons-le comme ceci:
Importe le module
time
.Il s'agit d'une boucle while dont la condition est
input()
.Notre programme doit respirer maintenant et
inhale
, bien que moins sain, il est plus golfeur.Now
prenez le module le plus récent importé et ajoutez-.sleep(1)
le.Sortons de la boucle while.
Imprime deux nouvelles lignes.
Commence à capturer une chaîne.
Ajoute
Done.
à la chaîne capturée.Termine la capture de la chaîne.
la source
JavaScript Shell REPL, 38 octets
En tant que fonction qui accepte le programme comme argument de chaîne et renvoie le résultat:
29 octets si la fonction peut accepter son entrée sous la forme d'un tableau de lignes, ou si elle doit dormir 1 seconde par caractère:
34 octets s'il devrait également ressembler davantage à un programme et afficher explicitement Terminé:
Cela fonctionne pour moi dans l'interpréteur Spidermonkey autonome.
la source
Javascript ES6,
4645 octetsMerci à ӍѲꝆΛҐӍΛПҒЦꝆ pour avoir sauvé un octet
Suppose un tableau en entrée.
Comme ӍѲꝆΛҐӍΛПҒЦꝆ et edc65 l' ont souligné, vous pouvez écrire ce qui suit, mais cela n'économisera aucun octet:
la source
1e3
est mieux que10e2
.1e3 is better than 10e2
ne peut pas croire que j'ai raté ça.Bash + coreutils, 28
Dort 1 seconde pour chaque ligne. Utilisez-le à la
wc -c
place pour chaque octet ou à lawc -m
place pour chaque caractère.la source
Pyth,
1514 octets(Vous pouvez l' essayer en ligne , mais cela ne sert à rien.)
la source
Done
(ce qui est assez drôle puisque vous avez dit la même chose à quelqu'un sur une autre réponse): PPerl, 21 + 1 = 22 octets
Nécessite le
-p
drapeau:la source
Python 3, 58 octets
la source
MATL , 17 octets
Une ligne vide de fin (suivie d'une nouvelle ligne) est utilisée pour marquer la fin de l'entrée. Cela est nécessaire dans MATL car l'entrée est interactive et chaque entrée se termine par une nouvelle ligne.
Essayez-le en ligne!
la source
Done
?QBasic, 54 octets
Prend le programme ligne par ligne à partir de l'entrée utilisateur, terminé par une ligne vierge. Respecte la lettre de la loi, mais peut-être pas l'esprit, en s'arrêtant 1 seconde après avoir lu chaque ligne. (La spécification ne dit pas techniquement que les pauses doivent toutes venir après la fin de l'entrée.) Si cela est considéré comme trop louche, voici une version de 64 octets qui s'arrête après que tout le programme a été entré:
Version bonus avec fichier E / S (87 octets):
la source
Rubis, 32 octets
Lit à partir de stdin.
la source
OCaml, 61 octets
Suppose que l'entrée est une liste.
la source
Gelée , 12 octets (non concurrent)
Essayez-le en ligne!
Remarque: veuillez ne pas suggérer de mettre le
⁷⁷
dans la chaîne compressée, cela le rendra plus long (“¡OÑL[Ṁ»
).Explication:
la source
œS
.awk, 34 octets
Comme il n'y a pas d'E / S et que le résultat final est inévitable, la
Done.
pièce est sortie dès le début.La seule façon de dormir dans awk est d'utiliser le système
sleep
. Le moyen le plus court de l'invoquer est de le faireprint|"sleep "NR
et nous pourrions aussi bien en abuserprint
.la source