El día de acción de gracias en los Estados Unidos se acerca el 24 de noviembre. Muchas personas tendrán una gran cena con sus familias, tradicionalmente incluyendo pavo y muchos platos de acompañamiento. Esto generalmente significa que los miembros de la familia deben coordinar quién traerá cada uno de los diversos platos. En este desafío, el objetivo es escribir un políglota que genere un plato diferente en cada idioma en el que se ejecuta.
Menú
(Seleccionado de Wikipedia . En caso de que no sea obvio, cada línea es un elemento).
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
Reglas
- Cada envío debe ejecutarse en al menos 3 idiomas , cada uno de los cuales debe mostrar un elemento diferente del menú. No puede usar varias versiones del mismo idioma (por ejemplo, Python 2 y Python 3 no se pueden usar en la misma respuesta).
- Cada entrada debe tener los mismos bytes en la codificación de cada idioma. Por ejemplo,
ɱ
es byte0x1D
en la codificación de la jalea , que corresponde a¢
en la codificación del 05AB1E . - Los diferentes idiomas pueden usar diferentes métodos de salida, pero las entradas deben ser programas completos en todos los idiomas y seguir uno de nuestros métodos de E / S permitidos por defecto .
- Ningún programa puede recibir información, pero cualquiera de los programas puede imprimir en STDERR o generar errores y advertencias de tiempo de ejecución / tiempo de compilación siempre que la salida correcta todavía se imprima en STDOUT o en un archivo.
- El caso y el espacio en blanco no importan. Por ejemplo, una salida de
GreenbeAN S
todavía contaría comogreen beans
. - Como el plato central de cada 1 comida de Acción de Gracias estadounidense es el pavo, debe emitirse un idioma
turkey
(ignorando mayúsculas y minúsculas).
Tanteo
El envío que produce salidas válidas únicas en la mayoría de los idiomas gana. En caso de empate, gana la más corta de las entradas atadas en bytes.
1. Sí, el pavo no es el único plato principal , pero vamos a pretender que lo es.
fuente
cornbread
Respuestas:
Pyke, Pyth, Python 2, Foo, Brain ****, GolfScript, En realidad, <> <, Gol <> <, En serio, Befunge, Fission, Haystack, 13 idiomas, 546 bytes
Cuando vi la otra respuesta de idioma
101112 , tuve que agregarunodos dos3. También estoy considerando seriamente dejar caer Pyth aunque solo sea para ahorrar en bytes. (por el momento 162 de ellos)Pyke: ¡ Pruébalo aquí!
rolls
Línea de código relevante:
Pyth: ¡ Pruébalo aquí!
gravy
Línea de código relevante:
Todos los
)
's son para que Pyth lo haga compilar sin errores en ninguna entrada.Python 2:
corn
La línea 1 es un comentario completo
La línea 2 imprime "maíz" y luego tiene un comentario
La línea 3 tiene un literal de cadena y luego un comentario
La línea 4 en adelante son comentarios
Foo: ¡ Pruébalo en línea!
biscuits
Foo imprime cualquier cosa entre comillas dobles (
"
). En este caso, tuve cuidado de incluir solo idiomas que pudieran hacer frente a otras formas de entrada de cadena (Caso especial para Befunge). Si hubiera algún texto después de la final"
, también se imprimiría.Brain ****: ¡ Pruébalo en línea!
salad
Copié la salida del generador de cadena constante. Tenía que escapar de todos los
.
personajes.q
para que jugara con Pyth yw.
con Pyke. Agregué algunos-
caracteres adicionales para que las celdas llegaran a los puntos correctos antes de imprimir en otro.
personaje en la tercera líneaGolfScript: ¡ Pruébelo en línea!
cornbread
En GolfScript,
#
es un comentario hasta el final de la línea.Lo que ve el intérprete de GolfScript:
En GolfScript, por cualquier motivo,
print
toma una cadena y la imprime sin una nueva línea. Solo tenerbread
es suficiente para imprimirlo también.En realidad: ¡ Pruébelo en línea!
macandcheese
Línea relevante:
<> <: Copiar + Pegar solo
turkey
Gol <> <: ¡ Pruébelo en línea!
stuffing
Como <> <excepto se
`
salta el primero'
y solo muestra suficientes caracteres para imprimirstuffing
En serio: ¡ Pruébelo en línea!
macaroniandcheese
Línea relevante:
Befunge: ¡ Pruébelo en línea!
sweettea
Código que se mira
Fisión: ¡ Pruébelo en línea!
dressing
Código examinado:
De los cuales se utilizan:
Pajar (2015) :
PECANPIE
(¡con nuevas líneas EXTRA!)De los cuales hacer algo funcional:
Construyo cada punto de código ASCII
PECANPIE
en mayúscula para las letras en mayúscula porque están todas por debajo de 100. Luego las imprimo todas como caracteres.fuente
macaroni and cheese
se puede mostrar comomacaroniandcheese
)cornrolls
? Eso no estaba en el menú ...CJam , 05AB1E , Dip , V , 4 idiomas,
3634 bytes¡2 bytes guardados gracias a @DrMcMoylex!
Código original de 36 bytes:
Después del
&
y antes deld
hay un<ESC>
, que es 1 byte. Entonces, el código con los caracteres de ancho cero revelados se ve así:CJam
(
<ESC>
no se muestra)Pruébalo en línea! salidas
turkey
05AB1E
(
<ESC>
no se muestra)Pruébalo en línea! salidas:
corn
V
(
<ESC>
se muestra)Pruébalo en línea! genera una nueva línea seguida de
salad
Inmersión
(
<ESC>
no se muestra)Salidas
gravy
La mejor manera de ejecutar esto es editar el archivo fuente, cambiar la última línea en
dip.py
a
¡Asegúrese de incluir el carácter de escape literal! Ahora el código tal como está se pasa al intérprete para que pueda entenderlo (
"
tiene que escapar\"
así). Ahora, si lo ejecuta desde la línea de comandos, interpreta el código real y las salidasgravy
.fuente
pop "corn"
en la explicaciónddi
aS
MAT / Golfscript / 05AB1E / CJAM : 4 idiomas,
3433 bytesTURKEY
.rolls
.corn
.cornbread
.fuente
tUrKEY
?C, sh, Python 3, Nim, Julia, Brainf ** k - 6 idiomas,
211209 bytesIdiomas para los elementos del menú:
turkey
gravy
biscuits
rolls
salad
corn
Agregó Julia gracias a @kvill!
fuente
#include
(funciona engcc
). Cambie el nombre enputs
println
todas partes excepto enmain()
, agregue el abridor de comentarios multilínea de julia#=
arribaa='''
y cambie#*/
a# =##*/
.exit
y uniendo la comilla simple a la línea anterior (a=''''
).sh
emitirá advertencias pero esto está permitido AFAIU. Y oh,println[T](s:T)=echo"rolls"
trabaja para Nim. ¡Buena respuesta con todos mis idiomas favoritos combinados!ferNANDo /> <> / Gol> <> / 05AB1E / 2sable, 5 idiomas, 178 bytes
turkey
salad
dressing
rolls
corn
fuente
Befunge-98 , > <> , V , Python 2, 05AB1E , Gol> <> , Foo , Haystack (la versión 2015) , GolfScript , BF, Fission , Minkolang 0.15 , En serio , Axo : 14 idiomas, 381 bytes
Esta es una respuesta colaborativa con BlueEyedBeast
Decidí hacer un enfoque 2D a esta pregunta ... Sí, ¡hay 7 esolangs 2D!
Me he inspirado para agregar idiomas adicionales mediante la respuesta de BlueEyedBeast (Foo, GolfScript)
<ESC>
es el carácter literal de Escape .Befunge-98
Pruébalo en línea! salidas
corn
> <>
Los comandos se muestran en el orden en que aparecen
Pruébalo en línea! (Copiar y pegar solamente) salidas
sweettea
V
Pruébalo en línea! salidas
applepie
(puede tardar unos 20 segundos para que se ejecute)Python 2
Pruébalo en línea! (Copiar y pegar solamente) salidas
biscuits
05AB1E
Pruébalo en línea! salidas
salad
Gol> <>
Los comandos se muestran en el orden en que aparecen
Pruébalo en línea! salidas
turkey
Foo
Foo muestra cualquier cosa entre comillas dobles, es por eso que he tenido cuidado de no usar comillas dobles en los otros idiomas. Como
"stuffing"
está entre comillas dobles, se imprimirá.Pruébalo en línea! salidas
stuffing
y luego tiene un errorPajar (2015)
Esto utiliza el intérprete 2015 (no 2016) de Haystack ya que la versión más nueva no es válida. El intérprete para esto es
haystack.py
y nohaystack_new.py
Los comandos se muestran en el orden en que aparecen
Este programa genera
y una nueva línea después de esta salida (¡oye, el espacio en blanco no importa!)
GolfScript
Pruébalo en línea! salidas
pecanpie
BF
Usé https://copy.sh/brainfuck/text.html para convertir texto en BF. Aunque hay muchas
,
declaraciones de entrada, el código BF se ejecuta independientemente de él.Pruébalo en línea! salidas
gravy
Fisión
Para que comience un programa de fisión, se debe generar un átomo. Vemos que esto sucede en la tercera línea:
Pruébalo en línea! salidas
cornbread
Minkolang v0.15
Pruébalo en línea! salidas
applecider
Seriamente
Pruébalo en línea! salidas
dressing
Axo
(Los comandos se muestran en el orden en que se encuentran)
Pruébalo en línea! salidas
pumpkinpie
fuente
$,,,,
lugar de no generar el1
(sin cambiar el bytecount), pero luego tendría que cambiar todos losPushy , Python y Brainfuck
Este es mi primer políglota, así que no te esfuerces demasiado ... Para aquellos que se quejan del conteo de bytes, son 77 bytes, pero eso solo es relevante para el desempate.
Pushy imprime 'Turquía' con una nueva línea principal (así como un mensaje para
STDERR
):Python imprime 'salsa' , ya que la primera y la última línea se tratan como comentarios.
Brainfuck ignora todos los demás caracteres y, excepto los de la línea final, que crean e imprimen la palabra 'maíz' .
fuente
Pip , BF , oOo CODE , > <> , Befunge-93 ( implementación de Quirkster ), Ouroboros , /// : 7 idiomas, 175 bytes
Pipa
Pruébalo en línea
Un grupo de expresiones que se descartan silenciosamente (la mayoría de las cuales generan advertencias, si las advertencias están habilitadas), con la expresión
"sTufFINg"
al final que se imprime.BF
Pruébalo en línea
Todo excepto los
>-[--[<]>+>-]<.++++++++++++.+++.----.,,,,
comentarios. Este código genera99
(el código de caracteres parac
) a través del método más corta que aparece en esolangs.org , a continuación, lo modifica parao
,r
yn
. Los,,,,
intentos de entrada a cuatro personajes, pero que no afecta a nada.oOo CODE
Todo, excepto las letras, se ignora. Agrupando las letras en tres, los códigos se leen así:
y se traduce a este código BF ( pruébelo usando el traductor de Martin Retina ):
que salidas
rolls
. (Y, curiosamente, es más corto que el BF anterior para la produccióncorn
, incluso con un><
no-op agregado para que la capitalización se alinee correctamente).> <>
Ejecute> <> código aquí
La parte importante del código:
La IP se refleja hacia arriba, se envuelve y se envía hacia la derecha.
"YVaRg"
empuja los códigos de caracteres degRaVY
.ooooo
saca cinco letras y;
termina el programa.Befunge-93
El código depende de un comportamiento indefinido y probablemente solo funcione en esta implementación .
La parte importante del código:
/
es división La pila está vacía, por lo que la implementación de JavaScript que estoy usando se divide0
por0
y empujonesNaN
.'
Es un personaje no reconocido. La implementación que estoy usando, convenientemente, trata los caracteres no reconocidos como comandos Reflect. (Para una versión menos dependiente de la implementación, un posible reemplazo sería1_
). Entonces, la IP vuelve a la izquierda, se divideNaN
por0
(obtenerNaN
) y se ajusta al otro extremo de la línea.Ahora
"yekRut"
(mover RTL) empuja los códigos de caracteres detuRkey
y,,,,,,
genera. Finalmente,@
termina el programa.Ouroboros
Pruébalo aquí
Cada línea del código es una "serpiente" que se ejecuta de forma independiente.
Serpiente 1
Como no hay instrucciones de salida, la única parte importante del código es
f(
:f
empuja15
y(
traga tantos caracteres del final de la serpiente. Ahora se considera que el código termina después.O
. La ejecución continúa hasta el final de la serpiente y vuelve al principio. Cada vez que pasa, la serpiente se acorta, hasta que finalmente se la(
traga. Como la IP se acaba de comer, la serpiente detiene la ejecución.Serpiente 2
"saLaD"
empuja sus códigos de caracteres de último a primero;1/
divide el código de charr
por1
, dejándolo sin cambios yooooo
genera cinco caracteres.;
suelta un elemento (no operativo porque la pila ya está vacía).1(
se traga el puntero de instrucciones y se detiene.Serpiente 3
"YVaRg"
empuja algunos charcodes; luego se(
traga un número de caracteres igual a la parte superior de la pila, que es89
el código de caracteres deY
. Comer 89 caracteres es suficiente para tragarse la IP y detener la ejecución.///
Pruébelo en línea usando mi implementación Pip de ///
/'//
elimina todas las comillas simples del resto del programa (que no hace nada porque no hay ninguna). A continuación, lasbisCuItS
salidas como están. Finalmente, el resto del código es una sustitución incompleta, solo hay dos de las tres barras requeridas, por lo que no hace nada.fuente
Cubix, Pushy, Brainfuck, V, Python 2 - 5 idiomas,
8985 bytesMi segundo políglota, no muy golfizado, pero funciona:
(tenga en cuenta que
␛
representa el byte de escape literalx1B
)corn
turkey
ROLLS
gravy
salad
Cubix
¡Prueba el programa en línea!
Cubix es un lenguaje del autor del desafío, ETHproductions. El intérprete de Cubix lee el código así:
El código se ejecuta así:
'salad
- realiza algunas operaciones XOR irrelevantes en la pila, da como resultado115, 0, 0
'#;
- empuje el código de char de#
, luego (sin )"nroc"
- empujar los códigos de barras para "maíz"w
- mueve la IP al bucle en la siguiente línea a continuación:!@o;
- imprimir y reventar el último elemento (terminar si el elemento es 0)"-[--";;;;
- empuje estos caracteres y elimínelos (sin operación){{
- no-opMolesto
¡Prueba el programa en línea!
Pushy es mi propio idioma y ejecuta el código de esta manera:
Brainfuck
¡Prueba el programa en línea!
Brainfuck ignora todos los caracteres que no están en su lista de instrucciones, lo que resulta en:
Que impresiones
ROLLS
. Tenga en cuenta que esto requiere un intérprete con celdas de ajuste, como el que se proporciona.V (lenguaje Vim)
¡Prueba el programa en línea!
V fue creado por DJMcMayhem, uno de nuestros mejores golfistas de código.
V es una versión basada en programas del editor de texto Vim. La mayoría de los caracteres anteriores
ESC
se escriben en el "archivo", pero␛ddgigravy
eliminan todo eso e insertan "salsa" en su lugar. Se imprime el contenido del archivo al final del programa.Python 2
¡Prueba el programa en línea!
Python es uno de mis lenguajes prácticos favoritos. Debido a que
#
es un comentario en Python, se ignora la mayor parte del programa. El código se lee así:fuente
'salad'#
realidad empuja el charcode des
, 0, 0 y el charcode de#
, luego;
aparece y deja la pila en115,0,0
.Python / QBasic / Pip , 3 idiomas, 41 bytes
Más idiomas posiblemente TBA.
Pitón
1
es solo una expresión que se descarta.#
comienza un comentarioprint("turkey")
hace lo que dice, y"salad"
es otra expresión que se descarta.QBasic
1#
es un número de línea (doble precisión).print"corn"
hace lo que diceend
termina el programa La segunda línea es sintácticamente válida pero nunca se ejecuta.Pipa
Casi todo son expresiones que se descartan.
"corn":e
intenta asignar a una cadena literal, que falla en silencio (a menos que las advertencias estén habilitadas)."salad"
es la última expresión en el programa y, por lo tanto, se imprime.fuente
PHP, JavaScript y BrainF * ck, 178 Bytes
La primera vez que probé un Polyglot, no voy a mentir, estoy loco por aquí ...
Golfizado:
(No me atreví a escribir una comida de Acción de Gracias en el código HTML y contarlo como otro idioma ...)
Explicación:
El código debe guardarse en un archivo .php para las partes PHP y JavaScript.
PHP:
Cuando se ejecuta en un servidor PHP, se lee la parte PHP del código:
Esto produce:
JavaScript:
Puede llamar a la
A()
función JavaScript desde la consola del navegador:Esto produce:
Brainf * cK
La parte de Brainf * ck está muy bien escondida en los comentarios en la sección de JavaScript, por lo que las partes de PHP y JavaScript la ignoran:
Cuando todo el archivo se pega en un IDE , esto genera:
No podría haber hecho la parte Brainf * ck sin este sitio web de texto a BF. Originalmente lo conseguí para generar código para "maíz" y luego, en un intento de aprender algo sobre este lenguaje loco, lo convertí a "salsa" ... o más bien "gravy" ...
fuente
Python, Clojure, Javascript, Ruby: 4 idiomas, 113 bytes
Gracias a @ Sp3000 por la mayor parte del código. Sorprendentemente, ni siquiera tuve que hacerle nada a su original, solo tuve que anteponer el código Ruby.
fuente
///, SQL y JavaScript
La misma construcción que con ese otro políglota orientado a las vacaciones:
///
SQL
Javascript
fuente
Clojure / Common Lisp / PicoLisp, 39 bytes
Lisp familia aquí.
'()
se evalúa como verdadero en Clojure para que proceda a generar un símboloturkey
. PicoLisp y Common Lisp entra en una rama falsa;""
es verdadero en Common Lisp y, por lo tanto, imprime el símbolorolls
, la cadena vacía es falsa en PicoLisp y pasa alcorn
símbolo de impresión .Compruébalo en línea:
https://ideone.com/OD65LB - Clojure
https://ideone.com/M1H5gf - Common Lisp
https://ideone.com/B4x3ns - PicoLisp
fuente
CJam, Subcarga,> <>, 39 bytes
Lo que ve CJam
'v;
: Un carácter literal que se descarta inmediatamente"(Turkey)S";
: Un literal de cadena que se descarta inmediatamente"Gravy"
: Empuja la cadenaGravy
a la pila"\n'nroC'oooo;";
: Literal de cadena que se descarta inmediatamente.Al final de la ejecución, se genera la pila, lo que significa que se imprime "Gravy".
Qué subcarga ve
'v;"
: Algunos comandos no válidos que se ignoran(Turkey)S
: Empuja la cadena "Turquía" y la emite";"Gr
: Algunos comandos no válidos que se ignorana
: Esto causa una falla predeterminada en el intérprete TIO ya que la pila está vacía. La ejecución finaliza.Lo que> <> ve
'v;"(Turkey)S";"Gravy""
empuja un montón de caracteres a la pila (que se ignoran). La IP luego se envuelve nuevamente.v
envía la IP hacia abajo.>'nroC'oooo
empuja los caracteres en la cadena "Corn" y los saca.;
termina la ejecución. Todos los demás personajes son ignorados.fuente