Défi:
Écrivez un code qui, une fois exécuté, produira le code source d'un deuxième programme qui peut être exécuté dans une autre langue. Le deuxième programme doit sortir le code source d'un troisième programme qui peut être exécuté dans une troisième langue et ainsi de suite. Le dernier programme devrait sortir PPCG
avec un retour à la ligne unique facultatif.
Le gagnant sera la soumission avec le plus de langues. La longueur de code du premier programme sera le bris d'égalité.
Règles importantes:
- Aucun programme ne peut être identique
- Chaque langue ne doit fonctionner qu'avec l'un des codes sources. Il devrait être impossible d'utiliser la même langue à deux endroits de la chaîne sans la casser (voir exemples) .
- Une chaîne raccourcie n'est pas une chaîne cassée. Si vous pouvez utiliser une langue dans un endroit différent de celui prévu et que le résultat final est toujours PPCG, alors il n'est pas valide
- Toutes les versions d'une langue comptent comme langues uniques (mais gardez à l'esprit la règle numéro 2)
Exemples:
Une soumission invalide:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
impressionsprint'disp("PPCG")'
- Python 2:
print'disp("PPCG")'
impressionsdisp("PPCG")
- Octave:
disp("PPCG")
estampesPPCG
Cela fonctionne correctement, mais: vous pouvez exécuter le premier et le deuxième code en Python 2 sans casser la chaîne, donc cela viole la règle numéro 2.
Une soumission valide avec un score de 3:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
impressionsprint'disp("PPCG")'
- Perl:
print'disp("PPCG")'
impressionsdisp("PPCG")
- Octave:
disp("PPCG")
estampesPPCG
Il s'agit du même code exact que l'exemple non valide. La différence est que nous avons choisi des langues qui respectent la règle numéro 2: vous ne pouvez pas exécuter le premier code en Perl / Octave, le deuxième code en Python 3 / Octave ni le dernier code en Python 3 / Perl. Ceci est valide même si Python 2 peut exécuter les deux premiers programmes, car nous n'avons pas utilisé Python 2 comme l'un des langages.
la source
Réponses:
12 langues, 64 octets
Charbon de bois -> tinylisp -> Python 3 -> /// -> Python 2 -> Perl -> QBasic -> Pip -> V -> Retina -> Pyth -> GolfScript
charbon
Toute séquence ASCII imprimable est un littéral de chaîne en anthracite.
P
peut être utilisé pour l'impression multidirectionnelle, mais dans ce cas, il imprime simplement la chaîne vers la droite.tinylisp
Les seuls caractères réservés dans tinylisp (à ce jour) sont les parenthèses et les espaces. Toute autre série de personnages est un jeton, même quelque chose comme
+"\'PPCG\'`">"""'*1
. Les parenthèses définissent des listes. La fonctionq
(quote) renvoie son argument non évalué - dans ce cas, la liste imbriquée(print ('/x/print/x"""x q<?"`i.*":?CHR$ (34) +"\'PPCG\'`">"""'*1))
. (Les parenthèses manquantes à la fin sont remplies automatiquement.)Python 3
Puisque
print
s'agit d'une fonction en Python 3, nous pouvons l'encapsuler entre parenthèses sans problème. En Python 2, où il s'agit d'une instruction, il s'agit d'une erreur de syntaxe. Malheureusement, Perl est bien avec les parenthèses, donc nous le faisons aussi*1
(répétition de chaîne en Python, transtypée en int et multipliée en Perl).///
/x/print/
changementsx
àprint
la suite du programme, qui n'a pas de barres obliques et est donc sortie avec aucune autre modification.Python 2
Aucune parenthèse après
print
, ne fonctionne pas en Python 3. Perl n'aime pas les guillemets triples.Perl
Les différentes manières de Perl de citer une chaîne sont utiles et distinctes des autres langages. Ici, nous utilisons
q<...>
.QBasic
Un couple d'instructions d'impression (abrégé en
?
), en utilisantCHR$(34)
permettant d'obtenir un double devis.Pépin
Un seul motif (regex) littéral en guillemets.
V
Passez en mode insertion, ajoutez du texte.
Rétine
Faites correspondre n'importe quoi et remplacez-le par la deuxième ligne.
Pyth
Les guillemets Pyth n'ont pas besoin d'être mis en correspondance (ce qui en fait un programme non valide dans Pip).
GolfScript
la source
echo '…'
au débutJava -> C -> Ruby -> /// -> Python 3 -> Batch -> JavaScript -> BrainFuck (8 langues)
Cliquez sur les noms de langue pour le code à travers chaque exécution, à l'exception de Batch, car je n'ai pas pu trouver d'interprète en ligne pour celui-ci.
Explication:
la source
print()
fonctionne en JavaScript, il ne produit rien et essaie en fait d'imprimer la page, donc je ne pense pas que cela compte..
enconsole.log
.Java -> BotEngine -> Treehugger -> Loader -> Batch -> Thue -> Microscript II -> BF -> ForceLang -> Javascript, 10 langues
Programme Java:
Programme BotEngine:
Programme Treehugger:
Programme de chargement:
Programme batch:
Thue programme:
Programme Microscript II:
Programme BF:
Programme ForceLang:
Programme Javascript:
la source
11 langues, 536 octets
Bash -> Python 3 -> Aller -> Lua -> Rust -> Java -> C99 -> Python 2 -> JavaScript -> Ruby -> Batch
Frapper:
le
p
fonction réduit la taille du code de 497 octets par rapport à la saisie manuelle de toutes les barres obliques inverses.Python 3:
La différenciation Python 2/3 obligatoire.
Aller:
Lua:
En utilisant
if 1 == 1 then
empêche la compatibilité Python.Rouille:
Java:
C99:
Python 2:
JavaScript:
Rubis:
Lot:
la source
Befunge (5 versions)
Nous commençons avec la version la plus récente, Befunge-109 (run with
cfunge -s 109
):Qui génère le code Befunge-98 suivant ( Essayez-le en ligne! ):
Qui génère le code Befunge-97 suivant ( Essayez-le en ligne! ):
Qui produit le code Befunge-96 suivant ( Essayez-le en ligne! ):
Qui sort le Befunge-93 suivant ( Essayez-le en ligne! ):
Qui sort la chaîne:
PPCG
Chaque programme ne fonctionnera que dans la version de Befunge qu'il cible. Si vous essayez de les exécuter dans une autre version, ils se fermeront immédiatement sans rien produire.
Grâce à Dennis , presque toutes les versions de Befunge sont désormais disponibles en ligne sur TIO . La seule exception est Befunge-109, pour lequel vous aurez besoin de cfunge , qui peut être trouvé ici .
la source
11 langues (102 octets)
Je vais en ajouter plus bientôt.
Gelée -> Ruby ->> <> -> /// -> Lot -> Python 3 -> JavaScript -> J -> FOG -> Jolf -> Stacked
Jelly ( Essayez-le en ligne! ) Affiche:
Sorties Ruby ( Essayez-le en ligne! ):
> <> (utilisez cet interpréteur; il génère des espaces au lieu d'octets nuls pour les espaces) génère:
/// ( Essayez-le en ligne! ) Affiche:
Sorties par lots:
Sorties Python 3 ( Essayez-le en ligne! ):
Sorties JavaScript ( essayez-le en ligne! ):
J ( Essayez-le en ligne! - seulement une approximation) donne:
Impressions de brouillard :
Sorties de Jolf ( Essayez-le ici! ):
Enfin, Stacked ( essayez-le ici! ) Sort:
la source
Windows Batch -> Powershell -> Ruby -> Python 3 -> JavaScript -> SQL -> CJam : 7 langues
Lot Windows
Powershell
Rubis
Python 3
Javascript
SQL
CJam
la source
/// vers Jelly vers Javascript vers MS-SQL vers QBasic vers QBIC, 39 octets, 6 langues
Explication:
QBIC et QBasic présentent de nombreuses similitudes. Cependant, ces lignes de code ne sont pas compatibles entre elles: QBasic accepte le
?
raccourci pourPRINT
, mais ne sait pas quoi faire avec le@
et le backtick. QBIC interprétera laPRINT
ligne comme une référence à 5 variables de chaîne différentes etP$R$I$N$T$
n'est pas une déclaration valide.la source
blert
;-)9 langues: Traitement -> Java -> C -> Python 3 -> JavaScript (ES6) -> Octave -> Bash -> sed -> V, 160 octets
En ce moment, mon objectif est de trouver et d'ajouter des langues où je n'ai pas besoin d'échapper aux citations et autres choses.
Traitement des sorties (notez que le programme Java ne s'exécute pas dans Traitement et vice-versa)
Sorties Java:
Sorties C:
Python 3 (notez que le programme python ne fonctionnera pas dans Processing à cause du commentaire et vice-versa) sort:
Sorties JavaScript:
Sorties octave:
Sorties Bash:
sorties sed:
Sorties V:
PPCG
la source
Python 2 -> Bash -> MySQL -> PHP
int score = 4;
Même si ce n'est pas du golf de code, le bytecount est de 49.
Sorties Python:
Sorties Bash:
Sorties MySQL:
Sorties PHP:
Voilà!
la source
Nouveau sur codegolf, essayant juste de faire une entrée. Ne pas essayer de gagner. Suis-je en train de faire ça?
Bash -> Lot - 23 octets
Cela produira "echo PPCG" dans un .bat qui peut être exécuté dans Windows.
la source