O Dia de Ação de Graças nos Estados Unidos está chegando no dia 24 de novembro. Muitas pessoas terão um grande jantar com suas famílias, incluindo tradicionalmente a Turquia e muitos acompanhamentos. Isso normalmente significa que os membros da família devem coordenar quem vai levar cada um dos vários pratos. Neste desafio, o objetivo é escrever um poliglota que produza um prato diferente em cada idioma em que é executado.
Cardápio
(Selecionado da Wikipedia . Caso não seja óbvio, cada linha é um item.)
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
Regras
- Cada envio deve ser executado em pelo menos três idiomas , cada um dos quais deve gerar um item diferente no menu. Você não pode usar várias versões da mesma linguagem (por exemplo, Python 2 e Python 3 não podem ser usados na mesma resposta).
- Cada entrada deve ter os mesmos bytes na codificação de cada idioma. Por exemplo,
ɱ
é byte0x1D
na codificação de Jelly , o que corresponde a¢
na codificação de 05AB1E . - Idiomas diferentes podem usar métodos de saída diferentes, mas as entradas devem ser programas completos em todos os idiomas e seguir um dos nossos métodos de E / S permitidos padrão .
- Nenhum programa pode receber entrada, mas qualquer um dos programas pode imprimir em STDERR ou emitir erros e avisos em tempo de execução / compilação, desde que a saída correta ainda seja impressa em STDOUT ou em um arquivo.
- Caixa e espaço em branco não importam. Por exemplo, uma saída de
GreenbeAN S
ainda contaria comogreen beans
. - Como o prato central de cada uma refeição americano de Ação de Graças é o peru, uma saída de linguagem deve
turkey
(ignorando caso e espaços em branco).
Pontuação
A submissão que produz saídas válidas exclusivas na maioria dos idiomas vence. Em caso de empate, a menor das entradas empatadas em bytes vence.
1. Sim, a Turquia não é o único prato principal , mas vamos fingir que é.
code-challenge
kolmogorov-complexity
polyglot
ETHproductions
fonte
fonte
cornbread
Respostas:
Pyke, Pyth, Python 2, Foo, Brain ****, GolfScript, Na verdade, <> <, Gol <> <, Sério, Befunge, Fissão, Haystack, 13 idiomas, 546 bytes
Quando eu vi o outro
1011resposta linguagem 12 , eu tive que adicionar um extra deumdois3. Eu também estou considerando seriamente a cair Pyth se apenas para economizar em bytes. (no momento 162 deles)Pyke: Experimente aqui!
rolls
Linha de código relevante:
Pitão: Experimente aqui!
gravy
Linha de código relevante:
Todos
)
são para Pyth fazê-lo compilar sem erro em nenhuma entrada.Python 2:
corn
A linha 1 é um comentário completo
A linha 2 imprime "milho" e depois tem um comentário
A linha 3 tem uma string literal e, em seguida, um comentário
A linha 4 em diante são comentários
Foo: Experimente Online!
biscuits
O Foo imprime qualquer coisa entre aspas duplas (
"
). Nesse caso, tomei o cuidado de incluir apenas idiomas que pudessem lidar com outras formas de entrada de string (caso especial para Befunge). Se houvesse algum texto após a final"
, isso também seria impresso.Cérebro ****: Experimente Online!
salad
Copiei a saída do gerador de string constante. Eu tive que fugir de todos os
.
personagens.q
para jogar com Pyth ew.
jogar com Pyke. Adicionei alguns-
caracteres extras para que as células chegassem aos pontos certos antes de imprimir em outro.
caractere na terceira linhaGolfScript: Experimente Online!
cornbread
No GolfScript,
#
é um comentário até o final da linha.O que o intérprete GolfScript vê:
No GolfScript, por qualquer motivo,
print
pega uma string e a imprime sem uma nova linha. Basta ter obread
suficiente para imprimi-lo também.Na verdade: Experimente Online!
macandcheese
Linha relevante:
<> <: Copiar + Colar apenas
turkey
Gol <> <: Experimente Online!
stuffing
Como <> <exceto
`
pula o primeiro'
e gera apenas caracteres suficientes para imprimirstuffing
Sério: Try It Online!
macaroniandcheese
Linha relevante:
Befunge: Experimente Online!
sweettea
Código que é analisado
Fissão: Experimente Online!
dressing
O código olhou para:
Dos quais são utilizados:
Palheiro (2015) :
PECANPIE
(com novas linhas EXTRA!)Dos quais algo funcional:
Construo cada ponto de código ASCII maiúsculo para as letras em
PECANPIE
maiúsculas, porque elas estão abaixo de 100. Em seguida, imprimo todas como caracteres.fonte
macaroni and cheese
pode ser saída comomacaroniandcheese
)cornrolls
? Isso não estava no menu ...CJam , 05AB1E , Dip , V , 4 idiomas,
3634 bytes2 bytes salvos graças a @DrMcMoylex!
Código original de 36 bytes:
Após
&
e antes do,d
existe um<ESC>
, que é de 1 byte. Portanto, o código com os caracteres de largura zero revelados se parece com o seguinte:CJam
(
<ESC>
não é mostrado)Experimente online! saídas
turkey
05AB1E
(
<ESC>
não é mostrado)Experimente online! saídas:
corn
V
(
<ESC>
é mostrado)Experimente online! gera uma nova linha seguida por
salad
Mergulho
(
<ESC>
não é mostrado)Saídas
gravy
A melhor maneira de executar isso é editar o arquivo de origem, alterar a última linha em
dip.py
para
Certifique-se de incluir o caractere de escape literal !. Agora, o código tal como está é passado para o intérprete, para que ele possa entendê-lo (
"
precisa ser escapado\"
dessa maneira). Agora, se você executá-lo na linha de comando, ele interpreta o código e as saídas reaisgravy
.fonte
pop "corn"
na explicaçãoddi
paraS
MATL / Golfscript / 05AB1E / CJam : 4 idiomas,
3433 bytesTURKEY
.rolls
.corn
.cornbread
.fonte
tUrKEY
?C, sh, Python 3, Nim, Julia, Brainf ** k - 6 idiomas,
211209 bytesIdiomas para itens de menu:
turkey
gravy
biscuits
rolls
salad
corn
Adicionado Julia thanks para @kvill!
fonte
#include
(funciona emgcc
). Renomeie paraputs
println
todos os lugares, exceto paramain()
, adicione o abridor de comentários com várias linhas de julia#=
acimaa='''
e mude#*/
para# =##*/
.exit
e juntando as aspas simples à linha anterior (a=''''
).sh
emitirá avisos, mas isso é permitido pelo AFAIU. E oh,println[T](s:T)=echo"rolls"
trabalha para Nim. Boa resposta com todos os meus idiomas favoritos combinados!ferNANDo /> <> / Gol> <> / 05AB1E / 2sable, 5 idiomas, 178 bytes
turkey
salad
dressing
rolls
corn
fonte
Befunge-98 , > <> , V , Python 2, 05AB1E , Gol> <> , Foo , Haystack (versão de 2015) , GolfScript , BF, Fission , Minkolang 0,15 , sério , Axo : 14 idiomas, 381 bytes
Esta é uma resposta colaborativa com BlueEyedBeast
Eu decidi fazer uma abordagem 2D para esta pergunta ... Sim, existem 7 esolangs 2D!
Eu me inspirei em outros idiomas a serem adicionados pela resposta de BlueEyedBeast (Foo, GolfScript)
<ESC>
é o caractere literal de Escape .Befunge-98
Experimente online! saídas
corn
> <>
Os comandos são mostrados na ordem em que aparecem
Experimente online! (Apenas copiar e colar)
sweettea
V
Experimente online! saídas
applepie
(pode demorar 20 segundos para ser executado)Python 2
Experimente online! (Apenas copiar e colar)
biscuits
05AB1E
Experimente online! saídas
salad
Gol> <>
Os comandos são mostrados na ordem em que aparecem
Experimente online! saídas
turkey
Foo
Foo produz qualquer coisa entre aspas duplas, é por isso que tomei o cuidado de não usar aspas duplas nos outros idiomas. Como
"stuffing"
está entre aspas duplas, ele será impresso.Experimente online! saídas
stuffing
e, em seguida, tem um erroPalheiro (2015)
Isso usa o intérprete de 2015 do Haystack (não 2016), pois a versão mais recente é inválida. O intérprete para isso é
haystack.py
e nãohaystack_new.py
Os comandos são mostrados na ordem em que aparecem
Este programa gera
e uma nova linha após essa saída (ei, espaço em branco não importa!)
GolfScript
Experimente online! saídas
pecanpie
BF
Usei https://copy.sh/brainfuck/text.html para converter texto em BF. Embora existam muitas
,
instruções de entrada, o código BF é executado independentemente.Experimente online! saídas
gravy
Fissão
Para que um programa de fissão comece, um átomo precisa ser gerado. Vemos isso acontecendo na terceira linha:
Experimente online! saídas
cornbread
Minkolang v0.15
Experimente online! saídas
applecider
A sério
Experimente online! saídas
dressing
Axo
(Os comandos são mostrados na ordem em que são encontrados)
Experimente online! saídas
pumpkinpie
fonte
$,,,,
, em vez de não saída1
(sem alterar o bytecount), mas então eu teria que mudar todos os permalinks ... :)Pushy , Python e Brainfuck
Este é o meu primeiro poliglota, portanto, não seja muito duro comigo ... Para aqueles que reclamam da contagem de bytes, são 77 bytes, mas isso é relevante apenas para o desempatador.
Pushy imprime 'turkey' com uma nova linha de frente (assim como uma mensagem para
STDERR
):Python imprime 'molho' , pois a primeira e a última linha são tratadas como comentários.
Brainfuck ignora todos os outros caracteres, exceto os da linha final, que criam e imprimem a palavra 'milho' .
fonte
Pip , BF , oOo CODE , > <> , Befunge-93 ( implementação Quirkster ), Ouroboros , /// : 7 idiomas, 175 bytes
Pip
Experimente online
Um monte de expressões que são descartadas silenciosamente (a maioria gera avisos, se os avisos estiverem ativados), com a expressão
"sTufFINg"
no final impressa.BF
Experimente online
Tudo, exceto
>-[--[<]>+>-]<.++++++++++++.+++.----.,,,,
comentários. Este código gera99
(o código de caracteres parac
) através do método mais curta listada na esolangs.org , em seguida, modifica-o parao
,r
en
. A,,,,
tentativa de inserir quatro caracteres, mas isso não afeta nada.oOo CODE
Tudo, exceto as letras, é ignorado. Agrupando as letras em três, os códigos são assim:
e traduz para este código BF ( tente usando o tradutor Martin's Retina ):
quais saídas
rolls
. (E, curiosamente, é menor que o BF acima para saídacorn
, mesmo com um><
no-op adicionado para fazer a capitalização alinhar corretamente.)> <>
Execute o código> <> aqui
A parte importante do código:
O IP é refletido para cima, envolve e é enviado para a direita.
"YVaRg"
envia os códigos de caracteres degRaVY
.ooooo
produz cinco letras e;
finaliza o programa.Befunge-93
O código depende de um comportamento indefinido e provavelmente só funciona nesta implementação .
A parte importante do código:
/
é divisão. A pilha está vazia, então a implementação JavaScript que estou usando divide0
por0
e empurrõesNaN
.'
é um caractere não reconhecido. A implementação que estou usando, convenientemente, trata caracteres não reconhecidos como comandos Reflect. (Para uma versão menos dependente da implementação, uma possível substituição seria1_
.) Portanto, o IP fica novamente à esquerda, divideNaN
por0
(obtendoNaN
) e passa para o outro extremo da linha.Agora
"yekRut"
(mover RTL) pressiona os códigos de caracterestuRkey
e os,,,,,,
gera. Por fim,@
finaliza o programa.Ouroboros
Experimente aqui
Cada linha do código é uma "cobra" que é executada independentemente.
Cobra 1
Como não há instruções de saída, a única parte importante do código é
f(
:f
empurra15
e(
engula muitos caracteres do final da serpente. O código agora é considerado finalizado depois.O
. A execução continua até o final da cobra e volta ao início. A cada vez, a cobra fica mais curta, até que(
seja engolida. Desde que o IP acabou de ser comido, a cobra interrompe a execução.Cobra 2
"saLaD"
empurra seus códigos de caracteres do penúltimo para o primeiro;1/
divide o código der
por1
, deixando-o inalterado eooooo
gera cinco caracteres.;
descarta um item (no-op porque a pilha já está vazia).1(
engole o ponteiro da instrução e pára.Cobra 3
"YVaRg"
empurra alguns códigos; em seguida,(
engole um número de caracteres igual ao topo da pilha, que passa a ser89
, o código de caracteres deY
. Comer 89 caracteres é suficiente para engolir o IP e interromper a execução.///
Experimente on-line usando minha implementação Pip de ///
/'//
exclui todas as aspas simples do restante do programa (o que não faz nada porque não há nenhuma). Em seguida,bisCuItS
sai como está. Por fim, o restante do código é uma substituição incompleta - há apenas duas das três barras necessárias -, portanto, não faz nada.fonte
Cubix, Pushy, Brainfuck, V, Python 2 - 5 idiomas,
8985 bytesMeu segundo poliglota - nunca muito jogado, mas funciona:
(observe que
␛
representa o byte de escape literalx1B
)corn
turkey
ROLLS
gravy
salad
Cubix
Teste o programa online!
Cubix é uma linguagem do autor do desafio, ETHproductions. O intérprete Cubix lê o código assim:
O código é executado da seguinte maneira:
'salad
- faz algumas operações XOR irrelevantes na pilha, resulta em115, 0, 0
'#;
- pressione o código de e#
, em seguida, digite -o novamente (sem operação )"nroc"
- pressione os códigos para "milho"w
- move o IP para fazer um loop na próxima linha abaixo:!@o;
- imprima e pop o último item (termine se o item for 0)"-[--";;;;
- pressione esses caracteres e exclua-os (no-op){{
- no-opPushy
Teste o programa online!
Pushy é minha própria linguagem e executa o código da seguinte maneira:
Brainfuck
Teste o programa online!
O Brainfuck ignora todos os caracteres que não estão na sua lista de instruções, resultando em:
Que imprime
ROLLS
. Observe que isso requer um intérprete com células de quebra automática, como a fornecida.V (idioma Vim)
Teste o programa online!
V foi criado por DJMcMayhem, um dos nossos principais jogadores de código.
V é uma versão baseada em programa do editor de texto Vim. A maioria dos caracteres antes do
ESC
texto é gravada no "arquivo", mas␛ddgigravy
exclui tudo isso e insere "molho". O conteúdo do arquivo no final do programa é impresso.Python 2
Teste o programa online!
Python é uma das minhas linguagens práticas favoritas. Por
#
ser um comentário em Python, a maior parte do programa é ignorada. O código é lido assim:fonte
'salad'#
na verdade, empurra o código des
0, 0 e o código de#
, então;
aparece e deixa a pilha em115,0,0
.Python / QBasic / Pip , 3 idiomas, 41 bytes
Mais idiomas, possivelmente TBA.
Python
1
é apenas uma expressão que é descartada.#
inicia um comentário.print("turkey")
faz o que diz e"salad"
é outra expressão que é descartada.QBasic
1#
é um número de linha (precisão dupla).print"corn"
faz o que diz.end
finaliza o programa. A segunda linha é sintaticamente válida, mas nunca executada.Pip
Quase tudo são expressões que são descartadas.
"corn":e
tenta atribuir a uma cadeia literal, que falha silenciosamente (a menos que os avisos estejam ativados)."salad"
é a última expressão no programa e, portanto, é impressa.fonte
PHP, JavaScript e BrainF * ck, 178 bytes
A primeira vez que experimentei um poliglota - não vou mentir, estou louca aqui ...
Golfe:
(Não ousei escrever um alimento de Ação de Graças no código HTML e contar isso como outra linguagem ...)
Explicação:
O código precisa ser salvo em um arquivo .php para as partes PHP e JavaScript.
PHP:
Quando executada em um servidor PHP, a parte do código PHP é lida:
Isso gera:
JavaScript:
Você pode chamar a
A()
função JavaScript no console do navegador:Isso gera:
Brainf * cK
A parte Brainf * ck está bem oculta nos comentários na seção JavaScript, portanto é ignorada pelas partes PHP e JavaScript:
Quando o arquivo inteiro é colado em um IDE , isso gera:
Eu não poderia ter feito a parte Brainf * ck sem este site de texto para BF. Originalmente, consegui gerar código para "corn" e, em uma tentativa de aprender algo sobre essa linguagem maluca, converti-a em "molho" ... ou melhor, "graVY" ...
fonte
Python, Clojure, Javascript, Ruby: 4 idiomas, 113 bytes
Obrigado a @ Sp3000 pela maior parte do código. Surpreendentemente, eu nem precisei fazer nada com o original, apenas precisei acrescentar o código Ruby.
fonte
///, SQL e JavaScript
Mesma construção que a outra poliglota orientada para férias:
///
SQL
Javascript
fonte
Clojure / Lisp comum / PicoLisp, 39 bytes
Família Lisp aqui.
'()
é avaliada como verdadeira no Clojure, para que ele produza um símboloturkey
. PicoLisp e Common Lisp entram em ramificação falsa;""
é verdadeiro no Common Lisp e, portanto, imprime o símbolorolls
, a string vazia é falsa no PicoLisp e, portanto, passa para a impressão docorn
símbolo.Verifique on-line:
https://ideone.com/OD65LB - Clojure
https://ideone.com/M1H5gf - Lisp comum
https://ideone.com/B4x3ns - PicoLisp
fonte
CJam, Subcarga,> <>, 39 bytes
O que o CJam vê
'v;
: Um literal de caractere que é descartado imediatamente"(Turkey)S";
: Uma literal de cadeia que é imediatamente descartada"Gravy"
: Empurra a stringGravy
para a pilha"\n'nroC'oooo;";
: Uma literal de cadeia que é imediatamente descartada.No final da execução, a pilha é impressa, o que significa que "Molho" é impresso.
O que Underload vê
'v;"
: Alguns comandos inválidos que são ignorados(Turkey)S
: Empurra a string "Turkey" e a produz";"Gr
: Alguns comandos inválidos que são ignoradosa
: Isso causa um segfault no interpretador TIO, pois a pilha está vazia. A execução é encerrada.O que> <> vê
'v;"(Turkey)S";"Gravy""
envia vários caracteres para a pilha (que são ignorados). O IP então volta.v
envia o IP para baixo.>'nroC'oooo
empurra os caracteres na string "Corn" e os produz.;
finaliza a execução. Todos os outros caracteres são ignorados.fonte