L'action de grâce aux États-Unis approche le 24 novembre. Beaucoup de gens auront un grand dîner avec leurs familles, comprenant traditionnellement de la dinde et de nombreux plats d'accompagnement. Cela signifie généralement que les membres de la famille doivent déterminer qui apportera chacun des différents plats. Dans ce défi, l’objectif est d’ écrire un polyglotte qui produit une parabole différente dans chaque langue dans laquelle il est exécuté.
Menu
(Sélectionné sur Wikipedia . Au cas où ce ne serait pas évident, chaque ligne correspond à un élément.)
turkey
stuffing
dressing
cranberry sauce
mashed potatoes
gravy
winter squash
sweet potatoes
corn
green beans
green bean casserole
mac and cheese
macaroni and cheese
salad
rolls
biscuits
corn bread
pumpkin pie
apple pie
mincemeat pie
sweet potato pie
pecan pie
apple cider
sweet tea
Règles
- Chaque soumission doit être exécutée dans au moins trois langues , chacune devant générer un élément différent du menu. Vous ne pouvez pas utiliser plusieurs versions du même langage (par exemple, Python 2 et Python 3 ne peuvent pas être utilisés dans la même réponse).
- Chaque entrée doit avoir les mêmes octets dans le codage de chaque langue. Par exemple,
ɱ
est l' octet0x1D
dans le codage de la gelée , ce qui correspond à¢
de l'encodage 05AB1E . - Différentes langues peuvent utiliser différentes méthodes de sortie, mais les entrées doivent être des programmes complets dans toutes les langues et suivre l'une de nos méthodes d'E / S autorisées par défaut .
- Aucun programme ne peut prendre d’entrée, mais n’importe quel programme peut imprimer sur STDERR ou émettre des erreurs et des avertissements d’exécution / compilation tant que la sortie correcte est toujours imprimée sur STDOUT ou sur un fichier.
- La casse et les espaces n'ont pas d'importance. Par exemple, une sortie de
GreenbeAN S
compterait toujours commegreen beans
. - Comme le plat central de tous les 1 repas américain Thanksgiving est la dinde, une sortie langue doit
turkey
(abstraction faite cas et les espaces).
Notation
La soumission qui produit des sorties uniques et valides dans la plupart des langues gagne. En cas d'égalité, les entrées les plus courtes égales en octets l'emportent.
1. Oui, la dinde n'est pas le seul plat principal , mais nous allons faire semblant.
la source
cornbread
Réponses:
Pyke, Pyth, Python 2, Foo, Cerveau ****, GolfScript, En fait, <> <, Gol <> <, Sérieusement, Befunge, Fission, Meule de foin, 13 langues, 546 octets
Quand j'ai vu l'autre
101112 réponse de la langue , je devais ajouter un montant supplémentaire d'undeux3. Je suis aussi envisage sérieusement de laisser tomber Pyth si seulement pour économiser sur les octets. (à l'heure actuelle 162 d'entre eux)Pyke: Essayez-le ici!
rolls
Ligne de code pertinente:
Pyth: Essayez ici!
gravy
Ligne de code pertinente:
Tous les
)
fichiers sont destinés à Pyth pour qu’il soit compilé sans erreur sur aucune entrée.Python 2:
corn
La ligne 1 est un commentaire entier
La ligne 2 imprime "maïs" et comporte ensuite un commentaire.
La ligne 3 a un littéral de chaîne puis un commentaire
Les lignes 4 et suivantes sont des commentaires
Foo: Essayez-le en ligne!
biscuits
Foo affiche tout ce qui est entre guillemets (
"
). Dans ce cas, j'ai pris soin de n'inclure que des langages pouvant gérer d'autres formes de saisie de chaîne (cas particulier de Befunge). S'il y avait du texte après la finale"
, il serait également imprimé.Cerveau ****: essayez-le en ligne!
salad
J'ai copié la sortie du générateur de chaîne constante. Je devais échapper à tous les
.
personnages.q
pour pouvoir jouer avec Pyth etw.
pour Pyke. J'ai ajouté des-
caractères supplémentaires pour que les cellules atteignent les bons points avant d'imprimer sur un autre.
caractère de la 3ème ligne.GolfScript: essayez-le en ligne!
cornbread
Dans GolfScript,
#
est un commentaire jusqu'à la fin de la ligne.Ce que voit l'interprète GolfScript:
Dans GolfScript, quelle que soit la raison,
print
prend une chaîne et l’imprime sans nouvelle ligne. Il suffit de l'avoirbread
pour l'imprimer également.En fait: essayez-le en ligne!
macandcheese
Ligne pertinente:
<> <: Copier + Coller uniquement
turkey
Gol <> <: Essayez-le en ligne!
stuffing
Comme <> <sauf,
`
saute le premier'
et ne donne que suffisamment de caractères à imprimerstuffing
Sérieusement: essayez-le en ligne!
macaroniandcheese
Ligne pertinente:
Befunge: Essayez-le en ligne!
sweettea
Code qui est regardé
Fission: essayez-le en ligne!
dressing
Code examiné:
Dont sont utilisés:
Haystack (2015) :
PECANPIE
(avec les nouvelles lignes EXTRA!)Dont quelque chose de fonctionnel:
Je construis chaque point de code ascii
PECANPIE
en majuscule pour les lettres en majuscule car elles sont toutes inférieures à 100. Je les imprime ensuite en tant que caractères.la source
macaroni and cheese
peut êtremacaroniandcheese
cornrolls
? Ce n'était pas au menu ...CJam , 05AB1E , Dip , V , 4 langues,
36 à34 octets2 octets enregistrés grâce à @DrMcMoylex!
Code original de 36 octets:
Après le
&
et avant led
il y a un<ESC>
, qui est 1 octet. Donc, le code avec les caractères de largeur nulle révélés ressemble à ceci:CJam
(
<ESC>
n'est pas montré)Essayez-le en ligne! les sorties
turkey
05AB1E
(
<ESC>
n'est pas montré)Essayez-le en ligne! les sorties:
corn
V
(
<ESC>
est montré)Essayez-le en ligne! affiche une nouvelle ligne suivie de
salad
Tremper
(
<ESC>
n'est pas montré)Les sorties
gravy
La meilleure façon de le faire est d’éditer le fichier source, de changer la dernière ligne de
dip.py
à
Assurez-vous d'inclure le caractère d'échappement! Maintenant, le code tel qu'il est est transmis à l'interprète afin qu'il puisse le comprendre (il
"
doit être échappé comme\"
tel). Maintenant, si vous l'exécutez à partir de la ligne de commande, il interprète le code et les résultats réelsgravy
.la source
pop "corn"
dans l'explicationddi
àS
MATL / Golfscript / 05AB1E / CJam : 4 langues,
3433 octetsTURKEY
.rolls
.corn
.cornbread
.la source
tUrKEY
?C, sh, Python 3, Nim, Julia, Brainf ** k - 6 langues,
211209 octetsLangues aux éléments de menu:
turkey
gravy
biscuits
rolls
salad
corn
Ajout de Julia grâce à @kvill!
la source
#include
(fonctionne dansgcc
). Renommezputs
println
partout sauf enmain()
, ajoutez l'ouvre-commentaires multiligne de julia#=
cia='''
- dessus et remplacez-le#*/
par# =##*/
.exit
et en joignant la citation unique à la ligne précédente (a=''''
).sh
émettra des avertissements mais cela est autorisé AFAIU. Et oh, çaprintln[T](s:T)=echo"rolls"
marche pour Nim. Bonne réponse avec toutes mes langues préférées combinées!ferNANDo /> <> / Gol> <> / 05AB1E / 2sable, 5 langues, 178 octets
turkey
salad
dressing
rolls
corn
la source
Befunge-98 , > <> , V , Python 2, 05AB1E , Gol> <> , Foo , Haystack (version 2015) , GolfScript , BF, Fission , Minkolang 0,15 , Sérieusement , Axo : 14 langues, 381 octets
Ceci est une réponse collaborative avec BlueEyedBeast
J'ai décidé de faire une approche 2D de cette question ... Oui, il y a 7 esolangs 2D!
J'ai inspiré d'autres langues à ajouter par la réponse de BlueEyedBeast (Foo, GolfScript)
<ESC>
est le caractère littéral de Escape .Befunge-98
Essayez-le en ligne!les sorties
corn
> <>
Les commandes sont affichées dans leur ordre d'apparition
Essayez-le en ligne! (Copier et coller uniquement) sorties
sweettea
V
Essayez-le en ligne! les sorties
applepie
(cela peut prendre environ 20 secondes)Python 2
Essayez-le en ligne! (Copier et coller uniquement) sorties
biscuits
05AB1E
Essayez-le en ligne!les sorties
salad
Gol> <>
Les commandes sont affichées dans leur ordre d'apparition
Essayez-le en ligne!les sorties
turkey
Foo
Foo ne donne rien entre guillemets, c’est pourquoi j’ai veillé à ne pas utiliser de guillemets dans les autres langues. Puisque
"stuffing"
est entre guillemets, il sera imprimé.Essayez-le en ligne! les sorties
stuffing
et a ensuite une erreurMeule de foin (2015)
Ceci utilise l'interprète de Haystack 2015 (pas 2016) puisque la version la plus récente n'est pas valide. L'interprète pour cela est
haystack.py
et nonhaystack_new.py
Les commandes sont affichées dans leur ordre d'apparition
Ce programme génère
et une nouvelle ligne après cette sortie (hé, les espaces n'ont pas d'importance!)
GolfScript
Essayez-le en ligne!les sorties
pecanpie
BF
J'ai utilisé https://copy.sh/brainfuck/text.html pour convertir du texte en BF. Bien qu'il y ait beaucoup de
,
instructions d'entrée, le code BF s'exécute indépendamment de celui-ci.Essayez-le en ligne! les sorties
gravy
Fission
Pour qu'un programme de fission commence, il faut générer un atome. Nous voyons cela se passer la troisième ligne:
Essayez-le en ligne! les sorties
cornbread
Minkolang v0.15
Essayez-le en ligne! les sorties
applecider
Sérieusement
Essayez-le en ligne! les sorties
dressing
Axo
(Les commandes sont affichées dans l'ordre dans lequel elles sont rencontrées)
Essayez-le en ligne! les sorties
pumpkinpie
la source
$,,,,
au lieu de ne pas afficher le1
(sans changer le décompte intermédiaire), mais je devrais alors changer tous les permaliens ... :)Pushy , Python et Brainfuck
C’est mon premier polyglotte, alors n’allez pas trop loin avec moi… Pour ceux qui se plaignent du nombre d’octets, c’est 77 octets, mais ce n’est pertinent que pour le départage.
Pushy imprime 'turkey' avec une nouvelle ligne principale (ainsi qu'un message à
STDERR
):Python imprime « sauce » , car les première et dernière lignes sont traitées comme des commentaires.
Brainfuck ignore tous les autres caractères, à l'exception de ceux de la dernière ligne, qui créent et impriment le mot "maïs" .
la source
Pip , BF , oOo CODE , > <> , Befunge-93 ( implémentation de Quirkster ), Ouroboros , /// : 7 langues, 175 octets
Pépin
Essayez-le en ligne
Un groupe d'expressions qui sont éliminées de manière silencieuse (dont la plupart génèrent des avertissements, si les avertissements sont activés), avec l'expression
"sTufFINg"
à la fin qui est imprimée.BF
Essayez-le en ligne
Tout sauf les
>-[--[<]>+>-]<.++++++++++++.+++.----.,,,,
commentaires. Ce code génère99
(code de caractère pourc
) par le plus court méthode indiquée sur esolangs.org , il modifie pouro
,r
etn
. le,,,,
tente de saisir quatre caractères, mais cela n’affecte rien.oOo CODE
Tout sauf les lettres est ignoré. En regroupant les lettres en trois, les codes se lisent comme suit:
et traduit en ce code BF ( essayez-le en utilisant le traducteur de Martin Retina ):
qui sort
rolls
. (Et, fait intéressant, il est plus court que le BF ci-dessus pour la sortiecorn
, même avec un><
no-op ajouté pour que la capitalisation s'aligne correctement.)> <>
Exécuter> <> code ici
La partie importante du code:
L'adresse IP est réfléchie vers le haut, tourne autour et est envoyée à droite.
"YVaRg"
pousse les codes de caractère degRaVY
.ooooo
sort cinq lettres et;
termine le programme.Befunge-93
Le code dépend d'un comportement indéfini et ne fonctionne probablement que dans cette implémentation .
La partie importante du code:
/
est la division. La pile est vide, donc l'implémentation JavaScript que j'utilise divise0
par0
et pousseNaN
.'
est un personnage non reconnu. L’implémentation que j’utilise utilise, de manière pratique, traite les caractères non reconnus comme des commandes Reflect. (Pour une version moins dépendante de l'implémentation, un remplacement possible serait1_
.) Ainsi, l'IP part à nouveau, se diviseNaN
en0
(obtenantNaN
) et passe à l'autre bout de la ligne.Now
"yekRut"
(RTL en mouvement) pousse les codes de caractères detuRkey
et les,,,,,,
sort. Enfin,@
termine le programme.Ouroboros
Essayez-le ici
Chaque ligne du code est un "serpent" qui s'exécute indépendamment.
Serpent 1
Comme il n'y a pas d'instructions de sortie, la seule partie importante du code est la suivante
f(
:f
pousse15
et(
avale autant de caractères à partir de la fin du serpent. Le code est maintenant considéré comme se terminant après.O
. L'exécution continue jusqu'à la fin du serpent et revient au début. A chaque passage, le serpent devient plus court, jusqu'à ce qu'il soit finalement(
avalé. Depuis que la propriété intellectuelle vient d'être mangée, le serpent interrompt l'exécution.Serpent 2
"saLaD"
pousse ses codes de caractères dernier à premier;1/
divise le charcode der
par1
en le laissant inchangé etooooo
génère cinq caractères.;
supprime un élément (non-op car la pile est déjà vide).1(
avale le pointeur d'instruction et s'arrête.Serpent 3
"YVaRg"
pousse des codes de caractères; puis(
avale un nombre de caractères égal au sommet de la pile, qui est89
le code de caractère deY
. Manger 89 caractères est suffisant pour avaler l’IP et arrêter l’exécution.///
Essayez-le en ligne en utilisant mon implémentation Pip de ///
/'//
supprime tous les guillemets simples du reste du programme (ce qui ne fait rien car il n'y en a pas). Ensuite, lesbisCuItS
sorties telles quelles. Enfin, le reste du code est une substitution incomplète - il n'y a que deux des trois barres obliques obligatoires - donc cela ne fait rien.la source
Cubix, Pushy, Brainfuck, V, Python 2 - 5 langues,
8985 octetsMon deuxième polyglotte - peu joué au golf, mais ça marche:
(notez que
␛
représente l'octet d'échappement littéral,x1B
)corn
turkey
ROLLS
gravy
salad
Cubix
Testez le programme en ligne!
Cubix est une langue de l'auteur du défi, ETHproductions. L’interprète Cubix lit le code comme suit:
Le code est exécuté comme suit:
'salad
- effectue certaines opérations XOR non pertinentes sur la pile, entraîne115, 0, 0
'#;
- poussez le charcode de#
, puis relancez-le (no-op)"nroc"
- pousser les codes pour "maïs"w
- déplace l'IP à boucler sur la ligne suivante en dessous:!@o;
- imprimer et afficher le dernier élément (se terminer si l'élément est 0)"-[--";;;;
- poussez ces caractères et supprimez-les (no-op){{
- non-opArrogant
Testez le programme en ligne!
Pushy est ma propre langue et il exécute le code comme suit:
Brainfuck
Testez le programme en ligne!
Brainfuck ignore tous les caractères qui ne figurent pas dans sa liste d'instructions, ce qui entraîne:
Quelles impressions
ROLLS
. Notez que cela nécessite un interpréteur avec des cellules d'emballage, telle que celle fournie.V (langue Vim)
Testez le programme en ligne!
V a été créé par DJMcMayhem, un de nos meilleurs golfeurs de code.
V est une version de l'éditeur de texte Vim basée sur un programme. La plupart des caractères antérieurs
ESC
sont écrits dans le "fichier", mais␛ddgigravy
suppriment tout cela et insèrent un "jus" à la place. Le contenu du fichier à la fin du programme est imprimé.Python 2
Testez le programme en ligne!
Le python est l’un de mes langages pratiques préférés. Comme il
#
s’agit d’un commentaire en Python, la plus grande partie du programme est ignorée. Le code se lit comme ceci:la source
'salad'#
pousse réellement le charcode des
, 0, 0, et le charcode de#
, puis;
apparaît et laisse la pile à115,0,0
.Python / QBasic / Pip , 3 langues, 41 octets
Plus de langues éventuellement à venir.
Python
1
est juste une expression qui est jeté.#
commence un commentaire.print("turkey")
fait ce qu'il dit, et"salad"
est une autre expression qui est jeté.QBasic
1#
est un numéro de ligne (double précision).print"corn"
fait ce qu'il dit.end
termine le programme. La deuxième ligne est syntaxiquement valide mais jamais exécutée.Pépin
La plupart des choses sont des expressions qui sont rejetées.
"corn":e
tente d’affecter une chaîne littérale qui échoue en mode silencieux (sauf si les avertissements sont activés)."salad"
est la dernière expression du programme et est donc imprimée.la source
PHP, JavaScript et BrainF * ck, 178 octets
La première fois que j'ai essayé un polyglotte - je ne vais pas mentir, je suis au-dessus de ma tête ici ...
Golfé:
(Je n'ai pas osé écrire un aliment de Thanksgiving dans le code HTML et le compter comme une autre langue ...)
Explication:
Le code doit être enregistré dans un fichier .php pour les parties PHP et JavaScript.
PHP:
Lorsqu'il est exécuté sur un serveur PHP, la partie PHP du code est lue:
Cela génère:
JavaScript:
Vous pouvez appeler la
A()
fonction JavaScript à partir de la console du navigateur:Cela génère:
Brainf * cK
La partie Brainf * ck est bien cachée dans les commentaires de la section JavaScript. Elle est donc ignorée par les parties PHP et JavaScript:
Lorsque le fichier entier est collé dans un IDE , cela génère:
Je n'aurais pas pu faire la partie Brainf * ck sans ce site Web text-to-BF. Je l’ai initialement conçu pour générer du code pour "maïs", puis, dans le but d’apprendre quelque chose sur ce langage fou, je l’ai converti en "sauce" ... ou plutôt en "graVY" ...
la source
Python, Clojure, Javascript, Ruby: 4 langues, 113 octets
Merci à @ Sp3000 pour la majeure partie du code. Étonnamment, je n'ai même pas eu à faire quoi que ce soit à son original, je devais juste précéder le code Ruby.
la source
///, SQL et JavaScript
Même construction que pour cet autre polyglotte des vacances:
///
SQL
Javascript
la source
Clojure / Common Lisp / PicoLisp, 39 octets
Famille Lisp ici.
'()
est évalué à true dans Clojure afin de produire un symboleturkey
. PicoLisp et Common Lisp vont dans la fausse branche;""
est vrai dans Common Lisp etrolls
affiche donc le symbole , chaîne vide est fausse dans PicoLisp et passe à l'impressioncorn
symbole.Vérifiez-le en ligne:
https://ideone.com/OD65LB - Clojure
https://ideone.com/M1H5gf - Common Lisp
https://ideone.com/B4x3ns - PicoLisp
la source
CJam, Underload,> <>, 39 octets
Ce que CJam voit
'v;
: Un caractère littéral immédiatement ignoré"(Turkey)S";
: Un littéral de chaîne qui est immédiatement ignoré"Gravy"
: Pousse la ficelleGravy
sur la pile"\n'nroC'oooo;";
: Un littéral de chaîne qui est immédiatement rejeté.A la fin de l'exécution, la pile est sortie, ce qui signifie que "Gravy" est imprimé.
Ce que voit Underload
'v;"
: Certaines commandes invalides qui sont ignorées(Turkey)S
: Pousse la chaîne "Turquie" et la sort";"Gr
: Certaines commandes invalides qui sont ignoréesa
: Cela provoque une erreur de segmentation sur l'interpréteur TIO puisque la pile est vide. L'exécution est terminée.Ce que> <> voit
'v;"(Turkey)S";"Gravy""
pousse un tas de caractères dans la pile (qui sont ignorés). L'adresse IP se termine alors.v
envoie l'IP vers le bas.>'nroC'oooo
pousse les caractères dans la chaîne "Corn" et les sort.;
termine l'exécution. Tous les autres caractères sont ignorés.la source