Wyzwanie:
Napisz kod, który po uruchomieniu wyświetli kod źródłowy drugiego programu, który można wykonać w innym języku. Drugi program powinien wypisać kod źródłowy trzeciego programu, który można wykonać w trzecim języku i tak dalej. Ostatni program powinien wypisać PPCG
z opcjonalnym pojedynczym znakiem nowej linii.
Zwycięzcą zostanie zgłoszenie w największej liczbie języków. Długość kodu pierwszego programu będzie rozstrzygaczem.
Ważne zasady:
- Żaden program nie może być identyczny
- Każdy język musi działać tylko na jednym z kodów źródłowych. Używanie tego samego języka w dwóch miejscach w łańcuchu powinno być niemożliwe bez jego zerwania (patrz przykłady) .
- Skrócony łańcuch nie jest łańcuchem zerwanym. Jeśli możesz używać języka w innym miejscu niż zamierzone, a wynikiem końcowym jest nadal PPCG, to jest on nieprawidłowy
- Wszystkie wersje języka liczą się jako języki unikalne (ale pamiętaj o regule numer 2)
Przykłady:
Nieprawidłowe zgłoszenie:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
drukujeprint'disp("PPCG")'
- Python 2:
print'disp("PPCG")'
drukujedisp("PPCG")
- Oktawa:
disp("PPCG")
odbitkiPPCG
Działa to poprawnie, ale: możesz uruchomić zarówno pierwszy, jak i drugi kod w Pythonie 2 bez przerywania łańcucha, więc narusza to zasadę numer 2.
Prawidłowe zgłoszenie z wynikiem 3:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
drukujeprint'disp("PPCG")'
- Perl:
print'disp("PPCG")'
drukujedisp("PPCG")
- Oktawa:
disp("PPCG")
odbitkiPPCG
To jest dokładnie ten sam kod co niepoprawny przykład. Różnica polega na tym, że wybraliśmy języki zgodne z regułą nr 2: Nie możesz uruchomić pierwszego kodu w Perl / Octave, drugiego kodu w Python 3 / Octave ani ostatniego kodu w Python 3 / Perl. Jest to ważne, mimo że Python 2 może uruchamiać dwa pierwsze programy, ponieważ nie użyliśmy Python 2 jako jednego z języków.
źródło
Odpowiedzi:
12 języków, 64 bajty
Węgiel drzewny -> tinylisp -> Python 3 -> /// -> Python 2 -> Perl -> QBasic -> Pip -> V -> Retina -> Pyth -> GolfScript
Węgiel drzewny
Każda seria drukowalnego ASCII jest literałem łańcuchowym w Charcoal.
P
może być używany do drukowania wielokierunkowego, ale w tym przypadku po prostu drukuje ciąg idący w prawo.tinylisp
Jedynymi zastrzeżonymi znakami w tinylisp (od tego pisania) są nawiasy i białe znaki. Każdy inny ciąg znaków jest tokenem, a nawet czymś podobnym
+"\'PPCG\'`">"""'*1
. Nawiasy definiują listy.q
(Cytat) wbudowane zwraca jej argument unevaluated - w tym przypadku, na liście zagnieżdżonej(print ('/x/print/x"""x q<?"`i.*":?CHR$ (34) +"\'PPCG\'`">"""'*1))
. (Brakujące nawiasy na końcu są uzupełniane automatycznie).Python 3
Ponieważ
print
jest to funkcja w Pythonie 3, bez problemu możemy ją owinąć w nawiasy. W Pythonie 2, gdzie jest to instrukcja, jest to błąd składniowy. Niestety, Perl jest w porządku z nawiasami, więc robimy to*1
(powtarzanie ciągów w Pythonie, rzutowanie na int i mnożenie w Perlu).///
/x/print/
zmieniax
sięprint
w pozostałej części programu, który nie ma ukośniki i dlatego jest wyprowadzana bez dalszych zmian.Python 2
Żadnych nawiasów po
print
, nie działa w Pythonie 3. Perl nie lubi potrójnych cytatów.Perl
Różne sposoby cytowania łańcucha przez Perla są pomocne i różnią się od innych języków. Tutaj korzystamy
q<...>
.QBasic
Kilka wyciągów drukowanych (w skrócie
?
), używanychCHR$(34)
do uzyskania podwójnej oferty.Pypeć
Pojedynczy literał Pattern (regex) w backticks.
V.
Przejdź do trybu wstawiania, dodaj tekst.
Siatkówka oka
Dopasuj wszystko i zastąp go drugim wierszem.
Pyt
Cytaty w Pythonie nie muszą być dopasowywane (co sprawia, że nie jest to prawidłowy program w Pipie).
GolfScript
źródło
echo '…'
na początkuJava -> C -> Ruby -> /// -> Python 3 -> Batch -> JavaScript -> BrainFuck (8 języków)
Kliknij nazwy języka dla każdego wykonania, z wyjątkiem Batch, ponieważ nie mogłem znaleźć dla niego tłumacza online.
Wyjaśnienie:
źródło
print()
działa w JavaScript, nic nie wyświetla, a tak naprawdę próbuje wydrukować stronę, więc nie sądzę, żeby to się liczyło..
inconsole.log
.Java -> BotEngine -> Treehugger -> Loader -> Batch -> Thue -> Microscript II -> BF -> ForceLang -> JavaScript, 10 języków
Program Java:
Program BotEngine:
Program Treehugger:
Program ładujący:
Program wsadowy:
Czwarty program:
Program Microscript II:
Program BF:
Program ForceLang:
Program Javascript:
źródło
11 języków, 536 bajtów
Bash -> Python 3 -> Go -> Lua -> Rust -> Java -> C99 -> Python 2 -> JavaScript -> Ruby -> Pakiet
Grzmotnąć:
The
p
funkcja zmniejsza rozmiar kodu o 497 bajtów w porównaniu do ręcznego wpisywania wszystkich odwrotnych ukośników.Python 3:
Obowiązkowe zróżnicowanie Python 2/3.
Udać się:
Lua:
Za pomocą
if 1 == 1 then
zapobiega kompatybilności z PythonRdza:
Jawa:
C99:
Python 2:
JavaScript:
Rubin:
Partia:
źródło
Befunge (5 wersji)
Zaczynamy od najnowszej wersji Befunge-109 (działającej z
cfunge -s 109
):Które generuje następujący kod Befunge-98 ( Wypróbuj online! ):
Które generują następujący kod Befunge-97 ( Wypróbuj online! ):
Które generują następujący kod Befunge-96 ( Wypróbuj online! ):
Które generuje następujące Befunge-93 ( Wypróbuj online! ):
Który wyprowadza ciąg:
PPCG
Każdy program będzie działał tylko w wersji Befunge, do której jest przeznaczony. Jeśli spróbujesz uruchomić je w innej wersji, natychmiast zakończą pracę bez wysyłania żadnych danych.
Dzięki Dennisowi prawie wszystkie wersje Befunge są teraz dostępne online w TIO . Jedynym wyjątkiem jest Befunge-109, do którego potrzebujesz cfunge , który można znaleźć tutaj .
źródło
11 języków (102 bajty)
Wkrótce dodam więcej.
Galaretka -> Ruby ->> <> -> /// -> Batch -> Python 3 -> JavaScript -> J -> FOG -> Jolf -> Stacked
Wyjścia Jelly ( Wypróbuj online! ):
Wyniki Rubiego ( wypróbuj online! ):
> <> (użyj tego interpretera; wyświetla spacje zamiast pustych bajtów dla spacji):
Wyjścia /// ( Wypróbuj online! ):
Dane wyjściowe partii:
Dane wyjściowe w języku Python 3 ( wypróbuj online! ):
Wyjścia JavaScript ( wypróbuj online! ):
J ( Wypróbuj online! - tylko przybliżenie) daje:
Odbitki FOG :
Wyjście Jolfa ( wypróbuj tutaj! ):
Wreszcie dane wyjściowe Stacked ( wypróbuj tutaj! ):
źródło
Pakiet wsadowy Windows -> Powershell -> Ruby -> Python 3 -> JavaScript -> SQL -> CJam : 7 języków
Pakiet Windows
PowerShell
Rubin
Python 3
JavaScript
SQL
CJam
źródło
/// do Jelly, JavaScript, MS-SQL, QBasic, QBIC, 39 bajtów, 6 języków
Wyjaśnienie:
QBIC i QBasic mają wiele podobieństw. Jednak te wiersze kodu nie są kompatybilne krzyżowo: QBasic akceptuje to
?
jako skrótPRINT
, ale nie wie, co zrobić z@
i backstick. QBIC zinterpretujePRINT
wiersz jako odniesienie do 5 różnych zmiennych łańcuchowych iP$R$I$N$T$
nie jest prawidłową instrukcją.źródło
blert
;-)9 języków: Przetwarzanie -> Java -> C -> Python 3 -> JavaScript (ES6) -> Octave -> Bash -> sed -> V, 160 bajtów
Obecnie moim celem jest znalezienie i dodanie języków, w których nie muszę uciekać się od cudzysłowów i innych rzeczy.
Przetwarzanie danych wyjściowych (zwróć uwagę, że program Java nie działa w trybie Przetwarzanie i odwrotnie)
Wyjścia Java:
Wyjścia C:
Python 3 (zwróć uwagę, że program python nie działa w Przetwarzaniu z powodu komentarza i odwrotnie) generuje:
Dane wyjściowe JavaScript:
Wyjścia oktawowe:
Wyjścia Bash:
wyjścia sed:
Wyjścia V:
PPCG
źródło
Python 2 -> Bash -> MySQL -> PHP
int score = 4;
Mimo że nie jest to golf golfowy, liczba bajtów wynosi 49.
Wyjścia w języku Python:
Wyjścia Bash:
Dane wyjściowe MySQL:
Wyjścia PHP:
Proszę bardzo!
źródło
Nowy w codegolf, tylko próbuje zrobić wpis. Nie próbuję wygrać. Czy robię to dobrze?
Bash -> Batch - 23 bajty
Spowoduje to wysłanie „echo PPCG” do pliku .bat, który można wykonać w systemie Windows.
źródło