Écrivez un programme qui, lorsqu'il est exécuté dans différentes langues, génère une permutation d'octets différente du code dans chaque langue. Le code source exact est compté comme une permutation.
Ici, «langue différente» peut être une version différente (Py 2 et Py 3) ou différents drapeaux standard. C'est une sortie différente qui force une version différente.
Des règles de quine appropriées s'appliquent au programme dans chaque langue. Votre score est calculé comme (Language count)^6/(Code length in bytes)
, un score plus élevé étant meilleur.
Échantillon:
Si votre code est AAB
et s'exécute dans trois langues différentes retourne ABA
, AAB
et AAB
, alors son score est 2^6/3
(un seul des deux AAB
compte). C'est bien si ça ABA
n'a pas de sens.
AAB
s'imprimeAAB
en langue-1 etABA
en langue-2, je suppose qu'il doit être un quine approprié lorsqu'il est considéré comme un programme de langue-1, et il n'y a pas d'autres restrictions impliquant son interprétation comme un programme de langue 2. Est-ce correct?Réponses:
Befunge-98 , > <> , Gol> <> , Fission , Wumpus , Cardinal , cire d' abeille et Alice Score: 8 6 /88 = 2978,909
Essayez-le dans Befunge! Essayez-le dans> <>! Essayez-le dans Gol> <>! Essayez-le dans Fission! Essayez-le dans Wumpus! Essayez-le dans Cardinal! Essayez-le dans la cire d'abeille! Essayez-le dans Alice!
Vérification!
Beaucoup de langages 2D, tous abusant des littéraux de chaîne enveloppants. Les différences de sorties sont donc:
> <>, Gol> <> et Befunge-98 tous les imprimer en arrière de code (sauf pour le
"
), les trois derniers caractères dans des positions différentes,R*"
,O"*
et"R*
respectivement. La cire d'abeille a également le code à l'envers, mais les trois derniers caractères sont entrecoupés dans la première section de la sortie. Alice est principalement en arrière, à l'exception de tous les caractères échappés ('
,\
et"
) déplacés vers l'avant.Wumpus est le seul quine réel, Fission place le
"
à la fin du code au lieu du début, et Cardinal place le"
entre le0
et le5
près du début.Preuve de différentes permutations
Explications:
Befunge-98:
> <> et Gol> <>:
Pour être honnête, je n'ai pas fait grand-chose ici. La seule différence entre l'exécution de ces deux langues est la
@
commande, qui fait tourner les trois premières valeurs de la pile de différentes manières pour chaque langue.Fission:
Wumpus:
Cardinal:
Cire d'abeille:
Alice:
la source
Perl 5 , Ruby , JavaScript (chrome), PHP , Python 2 , python 3 , 1206 octets, le score de 6 6 /1 206 = 38,6865671641791
Validez Perl, Ruby, PHP, Python 2 et Python 3 en ligne!
Remarque : l'exécution du programme ci-dessus dans la console Inspector dans Chrome (qui semble prendre en charge les arguments de position
console.log
) renvoie le programme correct.Explication
Cela s'est avéré beaucoup plus long que je ne l'avais espéré et j'ai rendu ma vie un peu plus difficile aussi, donc je vais probablement continuer à la bricoler. J'aimerais aussi ajouter plus de langues, mais je dois trouver quelque chose qui ne me dérange pas un
$
sceau ...Ceci est à peu près un format standard Quine où le calcul de la citation à utiliser est un peu différent pour chaque langue: Ruby
%q&
est utilisé, utilise PHP'
, JavaScript (Node.js) utilise`
et Perl 5 Utiliseq(
...)
. Étant donné que seules les guillemets changent, le reste du programme est toujours une syntaxe exécutable et valide dans chaque langue. Python 2 et 3 sont enroulés autour du programme précédent en utilisant"""
pour Python 2 et'''
pour Python 3.Les programmes Perl et Ruby résultants ne sont pas des quines standard, des
q
/%q
s supplémentaires sont ajoutés à chaque itération, mais le premier programme revient correctement.Les résultats sont:
eval($_=q&
...q&);printf($x=q&
...q&,
...);//#'%`'%`'%`'%`''''''''''''"""
...eval($_=%q&
...%q&);printf($x=%q&
...%q&,
...);//#`'`'`'`'''''''''''''"""
...eval($_=`
...`);printf($x=`
...`,
...);//#%q&'%q&'%q&'%q&'''''''''''''"""
...eval($_='
...');printf($x='
...',
...);//#`q&%`q&%`q&%`q&%''''''''''''"""
......
_="""
...""";
...q="""
...''''''''''''""";print(_.format(Q,_,q[0:-12]+R,"%"))
...
_='''
...''';
...q='''
...""""""""""""''';print(_.format(Q,_,q[0:-12]+R,"%"))
J'ai beaucoup retravaillé cela, j'espère que je n'ai rien oublié de clé ici. Il me reste encore beaucoup de chemin à parcourir pour être proche du score de Jo King ...
la source
Gelée , et M , 2 6 /14 = 4,57
Essayez-le dans Jelly!
Essayez-le en M!
Ɗṙ@ȮṾ1“Ɗṙ@ȮṾ1”
à Jelly1Ɗṙ@ȮṾ“1Ɗṙ@ȮṾ”
dans Mla source
Quine
en PHP?Python 2 et Python 3 , 2 six / 61 = 1,05
Essayez-le en Python 2!
Essayez-le en Python 3!
Enregistré 12 octets grâce à Jo King.
Impressions Python 2
Impressions Python 3
Cela utilise le fait que
1/2
c'est.5
en Python 3 et0
en Python 2.la source
Bash / GolfScript, 72 octets, score 2 6 /72 = 8/9 (~ 0,888 ...)
Contient un seul espace de fin sur les deux premières lignes.
Essayez-le en ligne dans Bash.
Essayez-le en ligne dans GolfScript.
Simplement modification de la réponse de @ jimmy23013 pour le challenge " Ecrire une Polyquine " . La modification qui a été effectuée supprimait l'espace de fin après la troisième ligne et passait
\n"+@n.;
à\n "+@n;
.Bash imprimera les lignes 1 et 2 comme ceci:
Et GolfScript imprimera les lignes 1 et 2 comme ceci:
Voici le programme de base, la sortie Bash et les sorties GolfScript respectivement avec les nouvelles lignes remplacées par
\n
:la source