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.