Herausforderung:
Schreiben Sie einen Code, der bei Ausführung den Quellcode eines zweiten Programms ausgibt, das in einer anderen Sprache ausgeführt werden kann. Das zweite Programm sollte den Quellcode eines dritten Programms ausgeben, das in einer dritten Sprache usw. ausgeführt werden kann. Das letzte Programm sollte PPCG
mit einem optionalen einfachen Zeilenumbruch ausgegeben werden.
Gewinner ist die Einsendung mit den meisten Sprachen. Die Codelänge des ersten Programms ist der Unentschieden.
Wichtige Regeln:
- Kein Programm kann identisch sein
- Jede Sprache darf nur mit einem der Quellcodes funktionieren. Es sollte unmöglich sein, dieselbe Sprache an zwei Stellen in der Kette zu verwenden, ohne sie zu unterbrechen (siehe Beispiele) .
- Eine verkürzte Kette ist keine gebrochene Kette. Wenn Sie eine Sprache an einer anderen als der vorgesehenen Stelle verwenden können und das Endergebnis immer noch PPCG ist, ist sie ungültig
- Alle Versionen einer Sprache gelten als eindeutige Sprachen (beachten Sie jedoch Regel 2).
Beispiele:
Eine ungültige Einreichung:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
drucktprint'disp("PPCG")'
- Python 2:
print'disp("PPCG")'
drucktdisp("PPCG")
- Oktave:
disp("PPCG")
drucktPPCG
Das funktioniert einwandfrei, aber: Sie können sowohl den ersten als auch den zweiten Code in Python 2 ausführen, ohne die Kette zu unterbrechen, was gegen Regel 2 verstößt.
Eine gültige Einsendung mit Punktzahl 3:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
drucktprint'disp("PPCG")'
- Perl:
print'disp("PPCG")'
drucktdisp("PPCG")
- Oktave:
disp("PPCG")
drucktPPCG
Dies ist genau derselbe Code wie im ungültigen Beispiel. Der Unterschied besteht darin, dass wir Sprachen ausgewählt haben, die der Regel 2 entsprechen: Sie können den ersten Code nicht in Perl / Octave, den zweiten Code in Python 3 / Octave oder den letzten Code in Python 3 / Perl ausführen. Dies gilt auch, wenn Python 2 die beiden ersten Programme ausführen kann, da Python 2 nicht als eine der Sprachen verwendet wurde.
quelle
Antworten:
12 Sprachen, 64 Bytes
Charcoal -> tinylisp -> Python 3 -> /// -> Python 2 -> Perl -> QBasic -> Pip -> V -> Retina -> Python -> GolfScript
Holzkohle
Jede druckbare ASCII-Ausführung ist ein Zeichenfolgenliteral in Charcoal.
P
kann für multidirektionales Drucken verwendet werden, in diesem Fall wird die Zeichenfolge jedoch einfach nach rechts gedruckt.tinylisp
Die einzigen reservierten Zeichen in tinylisp (zum Zeitpunkt des Schreibens) sind Klammern und Leerzeichen. Jede andere Folge von Zeichen ist ein Token, auch so etwas wie
+"\'PPCG\'`">"""'*1
. Klammern definieren Listen. Dasq
eingebaute (Anführungszeichen) gibt sein Argument unbewertet zurück - in diesem Fall die verschachtelte Liste(print ('/x/print/x"""x q<?"`i.*":?CHR$ (34) +"\'PPCG\'`">"""'*1))
. (Fehlende Klammern am Ende werden automatisch vervollständigt.)Python 3
Da
print
es sich bei Python 3 um eine Funktion handelt, können wir sie problemlos in Klammern setzen. In Python 2, wo es sich um eine Anweisung handelt, handelt es sich um einen Syntaxfehler. Leider ist Perl mit den Klammern einverstanden, so dass wir dies auch tun*1
(String-Wiederholung in Python, Umwandlung in int und Multiplikation in Perl).///
/x/print/
ändertx
sichprint
im Rest des Programms, hat keine Schrägstriche und wird daher ohne weitere Änderungen ausgegeben.Python 2
Keine Klammern danach
print
, funktioniert in Python 3 nicht. Perl mag die dreifachen Anführungszeichen nicht.Perl
Die verschiedenen Möglichkeiten von Perl, einen String in Anführungszeichen zu setzen, sind hilfreich und unterscheiden sich von anderen Sprachen. Hier verwenden wir
q<...>
.QBasic
Einige print-Anweisungen (abgekürzt als
?
),CHR$(34)
um ein doppeltes Anführungszeichen zu erhalten.Pip
Ein einzelnes Pattern-Literal (Regex) in Backticks.
V
Wechseln Sie in den Einfügemodus und fügen Sie Text hinzu.
Retina
Passen Sie alles an und ersetzen Sie es durch die zweite Zeile.
Pyth
Pyth-Anführungszeichen müssen nicht übereinstimmen (daher ist dieses Programm in Pip nicht gültig).
GolfScript
quelle
echo '…'
am AnfangJava -> C -> Ruby -> /// -> Python 3 -> Batch -> JavaScript -> BrainFuck (8 Sprachen)
Klicken Sie bei jeder Ausführung auf die Namen der Sprachen für den Code, mit Ausnahme von Batch, da ich keinen Online-Dolmetscher dafür gefunden habe.
Erläuterung:
quelle
print()
funktioniert zwar in JavaScript, gibt aber nichts aus und versucht tatsächlich, die Seite zu drucken, daher denke ich, dass das nicht zählt..
inconsole.log
.Java -> BotEngine -> Treehugger -> Loader -> Batch -> Thue -> Microscript II -> BF -> ForceLang -> Javascript, 10 Sprachen
Java-Programm:
BotEngine Programm:
Treehugger-Programm:
Ladeprogramm:
Batch-Programm:
Das Programm:
Microscript II-Programm:
BF-Programm:
ForceLang-Programm:
Javascript-Programm:
quelle
11 Sprachen, 536 Bytes
Bash -> Python 3 -> Gehe zu -> Lua -> Rust -> Java -> C99 -> Python 2 -> JavaScript -> Ruby -> Batch
Bash:
Das
p
Funktion reduziert die Codegröße um 497 Byte im Vergleich zur manuellen Eingabe aller Backslashes.Python 3:
Die obligatorische Python 2/3 Differenzierung.
Gehen:
Lua:
Verwenden
if 1 == 1 then
die die Python-Kompatibilität verhindert.Rost:
Java:
C99:
Python 2:
JavaScript:
Rubin:
Stapel:
quelle
Befunge (5 Versionen)
Wir beginnen mit der neuesten Version, Befunge-109 (lauf mit
cfunge -s 109
):Welche gibt den folgenden Befunge-98- Code aus ( Online ausprobieren ! ):
Womit der folgende Befunge-97- Code ausgegeben wird ( Online ausprobieren ! ):
Welche Ausgabe die folgenden Womit Befunge-96- Code ( Online ausprobieren ! ):
Welches gibt die folgenden Befunge-93 ( online ! ):
Welche gibt den String aus:
PPCG
Jedes Programm wird nur in der Version von Befunge ausgeführt, auf die es abzielt. Wenn Sie versuchen, sie in einer anderen Version auszuführen, werden sie sofort ohne Ausgabe beendet.
Dank Dennis sind jetzt fast alle Befunge-Versionen online bei TIO erhältlich . Die einzige Ausnahme ist Befunge-109, für die Sie cfunge benötigen , das Sie hier finden .
quelle
11 Sprachen (102 Bytes)
Ich werde bald mehr hinzufügen.
Gelee -> Rubin ->> <> -> /// -> Batch -> Python 3 -> JavaScript -> J -> NEBEL -> Jolf -> Gestapelt
Jelly- Ausgaben ( Online testen! ):
Ruby- Ausgaben ( Online testen! ):
> <> (verwende diesen Interpreter; er gibt Leerzeichen anstelle von Null-Bytes für Leerzeichen aus)
/// ( Online ausprobieren ! ) Ausgänge:
Batch-Ausgaben:
Python 3 ( Online testen! ) Gibt Folgendes aus:
JavaScript- Ausgaben ( online ausprobieren! ):
J ( Versuchen Sie es online! - nur eine Annäherung) ergibt:
NEBEL druckt:
Jolf ( Versuchen Sie es hier! ) Ausgänge:
Schließlich gibt Stacked ( Try it here! ) Folgendes aus:
quelle
Windows Batch -> PowerShell -> Ruby -> Python 3 -> JavaScript -> SQL -> CJam : 7 Sprachen
Windows Batch
Power Shell
Rubin
Python 3
JavaScript
SQL
CJam
quelle
/// zu Jelly zu Javascript zu MS-SQL zu QBasic zu QBIC, 39 Bytes, 6 Sprachen
Erläuterung:
QBIC und QBasic haben viele Gemeinsamkeiten. Diese Codezeilen sind jedoch nicht kreuzkompatibel : QBasic akzeptiert die
?
Abkürzung fürPRINT
, weiß jedoch nicht, was mit dem@
und dem Backtick zu tun ist . QBIC interpretiert diePRINT
Zeile als Referenz auf 5 verschiedene Zeichenfolgenvariablen undP$R$I$N$T$
ist keine gültige Anweisung.quelle
blert
;-)9 Sprachen: Verarbeitung -> Java -> C -> Python 3 -> JavaScript (ES6) -> Oktave -> Bash -> sed -> V, 160 Bytes
Im Moment ist es mein Ziel, Sprachen zu finden und hinzuzufügen, in denen ich mich nicht vor Anführungszeichen und anderen Dingen schützen muss.
Verarbeiten von Ausgaben (Beachten Sie, dass das Java-Programm in Processing nicht ausgeführt wird und umgekehrt)
Java-Ausgaben:
C Ausgänge:
Python 3 (Beachten Sie, dass das Python-Programm aufgrund des Kommentars nicht in Processing funktioniert und umgekehrt) gibt Folgendes aus:
JavaScript-Ausgaben:
Oktavausgänge:
Bash-Ausgaben:
Sed Ausgänge:
V Ausgänge:
PPCG
quelle
Python 2 -> Bash -> MySQL -> PHP
int score = 4;
Auch wenn dies kein Codegolf ist, beträgt der Bytecount 49.
Python-Ausgänge:
Bash-Ausgaben:
MySQL-Ausgaben:
PHP-Ausgaben:
Es geht los!
quelle
Neu für Codegolf, nur um einen Eintrag zu machen. Ich versuche nicht zu gewinnen. Mache ich das richtig?
Bash -> Batch - 23 Bytes
Dadurch wird "echo PPCG" an eine .bat-Datei ausgegeben, die in Windows ausgeführt werden kann.
quelle