Wyzwanie to stanowi rozszerzenie „ Golfa wzajemnego quine ”.
Korzystając z trzech wybranych języków, utwórz program Ouroboros trzeciego rzędu .
Oznacza to, że w języku A napisz program pA, który wypisze program pB w języku B. Program pB powinien wypisać program pC w języku C, który z kolei wyprowadzi oryginalny program pA w języku A.
Żadne dwa języki w A, B i C nie mogą być takie same, ani ich podzbiory, ani nadzbiory. Żadne z pA, pB lub pC może być identyczne.
Na przykład program Haskell wyprowadza program Perl, który wypisuje program Java, który wypisuje oryginalny program Haskell.
Z drugiej strony program C # 4, który wysyła program C # 3, który wyprowadza program C # 2, jest nieprawidłowy. Nawet kombinacja Perla -> Ruby -> Bash byłaby nieprawidłowa, gdyby, powiedzmy, program Perl i program Ruby były identyczne.
To jest golf golfowy, więc wygrywa najkrótszy program pA.
Odpowiedzi:
Python -> Perl -> Ruby, 48 znaków
Dostosowanie mojej poprzedniej odpowiedzi . Bieganie
z Pythonem generuje ten fragment Perla
który generuje następujący kod Ruby
który następnie drukuje oryginalny fragment kodu w języku Python:
źródło
Perl -> PHP -> HTML + JavaScript, 105 znaków
Chciałem, aby łańcuch języków miał jakikolwiek sens, więc pomyślałem, że napiszę skrypt PHP, który generuje stronę HTML zawierającą JavaScript. Na trzeci język wybrałem Perla, tylko dlatego, że lubię Perla. :)
Niektórzy mogą brać pod uwagę te cztery języki, ale tak naprawdę nie liczę HTML jako oddzielnego od JavaScript - jest to język znaczników, a nie język programowania. Tak czy inaczej, oto trzy wersje:
Perl (105 znaków):
PHP (165 znaków):
HTML + JavaScript (235 znaków):
(Ps. Tak, wiem, że mogłem uczynić krok PHP niemal nieuchronnym, np. Po prostu generowanie kodu HTML + JS w Perlu i dołączanie
<?php
do niego, ale to zbytnio przypominało oszukiwanie. W tym rozwiązaniu kod jest w rzeczywistości przetwarzane w PHP zamiast po prostu kopiowane dosłownie.)źródło
Niedociążenie → sed → Perl, 23 bajty
Prawdopodobnie może to obniżyć dzięki lepszemu wyborowi języków. Prawdopodobnie niekonkurencyjny, ponieważ reguła „programy sed mogą przyjmować pusty wiersz jako argument”, oznacza datę konkursu.
Program niedociążenia:
generuje program sed:
który generuje program Perl:
(uwaga: są tu dwie końcowe znaki nowej linii), która ponownie generuje oryginalny program niedociążenia:
Głównym celem tutaj jest znalezienie języków, w których łańcuchy są zagnieżdżane (tzn. Możesz po prostu zacytować łańcuch, umieszczając go w ogranicznikach, zamiast konieczności ucieczki); Niedociążenie ma
()
, Perl maq()
, aw sed ciąg znaków jest kontynuowany aż do białych znaków (które można domyślnie zagnieździć, jeśli w programie nie ma białych znaków). Prawdopodobnie jest tam język esolang lub golfa z instrukcją „wydrukuj resztę bieżącej linii, bez instrukcji nowego wiersza”, która byłaby tutaj idealna, ale nie tyle czasu szukałem; w takim przypadku można zapisać 8 bajtów minus długość instrukcji. (Galaretka prawie działa, ale jej“
instrukcja się nie zacytowała. Poza tym odsyła wyzwanie.)Możesz zmniejszyć to do 22 bajtów następujący sposób:
(z jednym końcowym znakiem nowej linii, jak zwykły plik tekstowy, zamiast zera, który zwykle otrzymujesz w golfie). Wymaga to jednak interpretera niedociążenia, który jest w porządku, traktując znak nowej linii jako brak możliwości. Wypróbuj online !, ale wydaje mi się, że stanowi to wyzwanie.
źródło