Supponiamo di avere 2 lingue A
e B
. Una stringa s
è una semiquina in A
e B
se soddisfa le seguenti condizioni:
s
è un quine in linguaA
.s
è un poliglotta inA
eB
.- L'output di esecuzione
s
comeB
programma è una stringa diversas'
, che è un quine inB
.
L'obiettivo di questa sfida è scrivere una semiquina in due lingue distinte. Si tratta di code-golf , quindi vince il codice più breve, con la prima risposta utilizzata come tiebreaker.
Regole per Quines
Sono accettate solo vere quine. Cioè, è necessario stampare l'intero codice sorgente su STDOUT, senza :
- leggendo il codice sorgente, direttamente o indirettamente.
- basandosi su un ambiente REPL che semplicemente valuta e stampa ogni espressione che gli dai da mangiare.
- basandosi su funzionalità linguistiche che in alcuni casi stampano semplicemente l'origine.
- usando messaggi di errore o STDERR per scrivere tutto o parte del quine. (È possibile scrivere elementi su STDERR o produrre avvisi / errori non fatali purché STDOUT sia un quine valido e i messaggi di errore non ne facciano parte.)
Inoltre, il codice sorgente non deve essere costituito esclusivamente da valori letterali (siano essi valori letterali stringa, valori letterali numerici, ecc.) E / o NOP. Ad esempio, `12
è un poliglotta in Jelly e Pyth, ma in Jelly è un NOP e un valore letterale numerico, quindi non è valido.
Qualsiasi output non sopprimibile (come avvisi sul copyright, messaggi di avvio / arresto o un feed di riga finale) può essere ignorato nell'output per motivi di validità del quine.
Regole per poliglotti
Le due lingue utilizzate devono essere nettamente diverse. In particolare:
- Non devono essere versioni diverse della stessa lingua (ad esempio Python 2 vs. Python 3).
- Non devono essere dialetti diversi della stessa lingua (ad es. Pascal vs. Delphi).
- Una lingua potrebbe non essere un sottoinsieme dell'altra (ad es. C vs. C ++ 1 ).
- Una lingua potrebbe non essere una derivata banale dell'altra (ad esempio Matlab vs Octave 2 , brainfuck vs boolfuck vs TinyBF vs ShadyAsFuck vs tutte le altre banali derivate brainfuck).
Regole varie
- Non è possibile accettare input da STDIN (o da qualsiasi altra fonte). Se la lingua scelta deve accettare input, l'input deve essere vuoto (stringa vuota, reindirizzato da
/dev/null
, ecc.) Oppure l'output del programma non deve dipendere dall'input. - Per questa sfida, è necessario scrivere un programma completo. Non è necessario richiedere codice aggiuntivo per eseguire la soluzione (come assegnare e chiamare una funzione lambda definita nella soluzione).
1: Sì, so che C non è in realtà un sottoinsieme di C ++. È abbastanza vicino per essere considerato uno ai fini dei poliglotti, quindi lo conto per questa sfida.
2: Come il punto 1 sopra, sebbene Octave non sia tecnicamente compatibile al 100% con Matlab, è stato progettato per essere compatibile ed è abbastanza vicino da consentire a un poliglotta Matlab / Octave di banalizzare la sfida.