Suponha que você tenha 2 idiomas A
e B
. Uma cadeia de caracteres s
é uma semiquina A
e B
se satisfaz as seguintes condições:
s
é um quine na linguagemA
.s
é um poliglota emA
eB
.- A saída da execução
s
como umB
programa é uma sequência diferentes'
, que é uma soluçãoB
.
O objetivo deste desafio é escrever uma semiquina em dois idiomas distintos. Este é o código-golfe , o código mais curto vence, com a resposta mais antiga usada como desempate.
Regras para Quines
Somente quines verdadeiros são aceitos. Ou seja, você precisa imprimir todo o código fonte literalmente para STDOUT, sem :
- lendo seu código fonte, direta ou indiretamente.
- confiando em um ambiente REPL que simplesmente avalia e imprime todas as expressões que você alimenta.
- confiando em recursos de idioma que apenas imprimem a fonte em certos casos.
- usando mensagens de erro ou STDERR para escrever a totalidade ou parte da solução. (Você pode escrever coisas para STDERR ou produzir avisos / erros não fatais, desde que STDOUT seja uma solução válida e as mensagens de erro não façam parte dela.)
Além disso, seu código-fonte não deve consistir apenas de literais (sejam literais de seqüência de caracteres, literais numéricos etc.) e / ou NOPs. Por exemplo, `12
é um poliglota em Jelly e Pyth, mas em Jelly é um NOP e um literal numérico, portanto, não é válido.
Qualquer saída não suprimível (como avisos de direitos autorais, mensagens de inicialização / desligamento ou um avanço de linha à direita) pode ser ignorada na saída para garantir a validade do quine.
Regras para poliglotas
Os dois idiomas usados devem ser distintamente diferentes. Em particular:
- Eles não devem ter versões diferentes da mesma linguagem (por exemplo, Python 2 vs. Python 3).
- Eles não devem ter dialetos diferentes do mesmo idioma (por exemplo, Pascal vs. Delphi).
- Um idioma pode não ser um subconjunto do outro (por exemplo, C vs. C ++ 1 ).
- Um idioma pode não ser um derivado trivial do outro (por exemplo, Matlab vs. Octave 2 , brainfuck vs boolfuck vs TinyBF vs ShadyAsFuck vs todos os outros derivados triviais do brainfuck).
Regras Diversas
- Você não pode aceitar entradas do STDIN (ou de qualquer outra fonte). Se o idioma escolhido precisar receber entrada, a entrada deverá estar vazia (sequência vazia, canalizada a partir de
/dev/null
etc.) ou a saída do programa não deverá depender da entrada. - Para esse desafio, você deve escrever um programa completo. Não é permitido exigir código adicional para executar a solução (como atribuir e chamar uma função lambda definida na solução).
1: Sim, eu sei que C não é realmente um subconjunto de C ++. É perto o suficiente para ser considerado um com o objetivo de poliglotas, então, estou contando isso para este desafio.
2: Como o ponto 1 acima, embora o Octave tecnicamente não seja 100% compatível com o Matlab, ele foi projetado para ser compatível e está próximo o suficiente para permitir que um poliglota do Matlab / Octave trivialize o desafio.