Quine Relay!
Quine przekaźnik rzędu jest serią programów P 1 … P n w różnych językach, tak że każdy program P i wyprowadza P i + 1 i P n wyprowadza P 1 .
Na przykład, przekaźnik 2-quine można zobaczyć tutaj:
Ruby → Perl 6:
$><<"print ("
p (DATA.read*2).chars.map(&:ord)
$><<".map: &chr).join"
__END__
$><<"print ("
p (DATA.read*2).chars.map(&:ord)
$><<".map: &chr).join"
__END__
wypisuje ten program w Perlu 6 :
print ([36, 62, 60, 60, 34, 112, 114, 105, 110, 116, 32, 40, 34, 10, 112, 32, 40, 68, 65, 84, 65, 46, 114, 101, 97, 100, 42, 50, 41, 46, 99, 104, 97, 114, 115, 46, 109, 97, 112, 40, 38, 58, 111, 114, 100, 41, 10, 36, 62, 60, 60, 34, 46, 109, 97, 112, 58, 32, 38, 99, 104, 114, 41, 46, 106, 111, 105, 110, 34, 10, 10, 95, 95, 69, 78, 68, 95, 95, 10, 36, 62, 60, 60, 34, 112, 114, 105, 110, 116, 32, 40, 34, 10, 112, 32, 40, 68, 65, 84, 65, 46, 114, 101, 97, 100, 42, 50, 41, 46, 99, 104, 97, 114, 115, 46, 109, 97, 112, 40, 38, 58, 111, 114, 100, 41, 10, 36, 62, 60, 60, 34, 46, 109, 97, 112, 58, 32, 38, 99, 104, 114, 41, 46, 106, 111, 105, 110, 34, 10, 10, 95, 95, 69, 78, 68, 95, 95, 10]
.map: &chr).join
który z kolei generuje oryginalny program Ruby.
Wyzwanie
Pierwszą odpowiedzią będzie przekaźnik rzędu quine: normalny quine. Może być w dowolnym języku.
Następna odpowiedź wybierze inny język i utworzy zamówienie przekaźnik rzędowy, używając tych dwóch języków.
I tak dalej. Na -tego odpowiedź stworzy zamówienie k Quine przekaźnik przy użyciu poprzedniej k - 1 językach i nowy, inny język.
Zwycięski
Jeśli po 2 tygodniach nie zostaną dodane żadne odpowiedzi, zwycięzcą jest osoba, która odpowiedziała przekaźnikiem Quine najwyższego rzędu.
Więcej zasad
- Żadna osoba nie może odpowiadać dwa razy z rzędu.
- Żadna osoba nie może odpowiedzieć w ciągu godziny od ostatniego postu.
- Języki różniące się wersją są uważane za odrębne. Zatem zarówno Python 2, jak i Python 3 mogą być częścią łańcucha.
- Języki różniące się kompilatorem lub tłumaczem nie są uważane za odrębne. Tak, Python 3 (Cython) i Python 3 są traktowane zamiennie , ale nie wyraźne.
- Każda odpowiedź może uporządkować języki w jakikolwiek sposób. Jeśli trzecia odpowiedź ma kolejność Ruby → Perl 6 → JavaScript, nie jesteś ograniczony do dodawania języka na końcu. Jeśli dodajesz Javę do miksu, możesz napisać JavaScript → Ruby → Java → Perl 6, jeśli chcesz.
Format odpowiedzi
n. Język 1 → Język 2 →… → Język n
Język 1
language 1 code
Język 2
language 2 code
Język 3
language 3 code
…
Język n
language n code
Dodaj wyjaśnienia w dowolnym miejscu w swoich odpowiedziach.
źródło
Odpowiedzi:
10. Javascript → Foo → brainfuck → Wumpus → Gol> <> → RAD →> <> → Python 2 → Brain-Flak → 4
Edit: Na kolejnej odpowiedzi, ja grałem jak Python generuje Brain-Flak trochę więcej tutaj , ale nie przeszkadza mi aktualizacja linków.
Dodano Gol> <>. Krótko
rpH
po kodzie Wumpus. Zoptymalizowałem też nieco pieprzenie mózgu i kod Brain-Flak. Weryfikacja!JavaScript (Node.js)
Wypróbuj online!
bla
Wypróbuj online!
pieprzenie mózgu
Wypróbuj online!
Wumpus
Wypróbuj online!
Gol> <>
Wypróbuj online!
RAD
Wypróbuj online!
> <>
Wypróbuj online!
Python 2
Wypróbuj online!
Brain-Flak
Wypróbuj online!
4
Wypróbuj online!
źródło
3. JavaScript → Python 2 → Foo
JavaScript
Klasyczna Quine JS. Jest to pełny program, który wyświetla na konsolę:
Wypróbuj online!
Python 2
Kod Pythona zasadniczo wypisuje kod JS z cudzysłowami:
Wypróbuj online!
bla
Kod Foo to kod JS z cytatami:
Wypróbuj online!
źródło
String.fromCharCode(39,34)
Zaoszczędzić na powtarzających się inwokacjach?String.fromCharCode(39)+String.fromCharCode(34)
trochę zaoszczędzić ;-)1. Foo
bla
Prosta Quine Foo:
Wypróbuj online!
źródło
2. Python 2 → Foo
użyłem podstawowego quina Pythona, a następnie dodałem cytaty
pyton:
Wypróbuj online!
bla:
Wypróbuj online!
źródło
5.> <> → JavaScript → pieprzenie mózgu → Python 2 → Foo
Obowiązkowa odpowiedź od pieprzenia mózgu.
> <>
Wypróbuj online!
JavaScript
Wypróbuj online!
pieprzenie mózgu
Wypróbuj online!
Python 2
Wypróbuj online!
bla
Wypróbuj online!
źródło
9. JavaScript → Foo → Brainfuck → Wumpus → RAD →> <> → Python 2 → Brain-Flak → 4
To… było… zabawne.
Nie mam pojęcia, dlaczego zdecydowałem, że należy dodać 4, nie mam pojęcia, dlaczego przerobiłem całą rzecz (oczywiście kopiowanie i wklejanie), ale zrobiłem to: D
JavaScript
Wypróbuj online!
Ponieważ wynik jest zbyt duży, aby mógł zwrócić TIO, oto tester, który cyklicznie wyświetla wszystkie języki.
bla
Wypróbuj online!
pieprzenie mózgu
Wypróbuj online!
Wumpus
Wypróbuj online!
RAD
Wypróbuj online!
> <>
><>
wypisuje nowy wiersz pośrodku, dzięki'a'
czemu funkcja python zostanie oddzielona od reszty kodu.Wypróbuj online!
Python 2
Wypróbuj online!
Python generuje wyładowania mózgowe nieco zoptymalizowane, ponownie wykorzystując poprzedni element na stosie, ponieważ w przeciwnym razie kod wyładowań mózgowych byłby około megabajta.
Brain-Flak
Wypróbuj online!
4
Wypróbuj online!
źródło
4.> <> → JavaScript → Python 2 → Foo
> <>
Wypróbuj online!
Dodałem klasyczny literał owijającego łańcucha, dołączając
'rpp>o<
na początku i edytując go również w środkowej części.JavaScript (Node.js)
Wypróbuj online!
Skróciłem
String.fromCharCode
część zgodnie z komentarzami do ostatniej odpowiedzi. Wiem, że to wyzwanie nie jest golfem, ale poprawia mi humor.Python 2
Wypróbuj online!
Dodano
\'
na początek quine> <>.bla
Wypróbuj online!
źródło
6.> <> → JavaScript → pieprzenie mózgu → Python 2 → Brain-Flak → Foo
Obowiązkowa odpowiedź Brain-Flak.
> <>
Wypróbuj online!
JavaScript (Node.js)
Wypróbuj online!
pieprzenie mózgu
Wypróbuj online!
Python 2
Wypróbuj online!
Brain-Flak
Wypróbuj online!
Wykluczyłem kod, ponieważ ma on 41568 bajtów i osiąga limit znaków w odpowiedzi. Kod jest podobny do kodu typu „błądzący mózg” i ma format:
bla
Wypróbuj online!
źródło
7.> <> → JavaScript → RAD → pieprzenie mózgu → Python 2 → Brain-Flak → Foo
> <>
Wypróbuj online!
JavaScript
Wypróbuj online!
RAD
Wypróbuj online!
pieprzenie mózgu
Wypróbuj online!
Python 2
Wypróbuj online!
Brain-Flak
Wypróbuj online!
bla
Wypróbuj online!
źródło
8.> <> → Wumpus → JavaScript → RAD → brainfuck → Python 2 → Brain-Flak → Foo
Dodanie w innym języku 2D, Wumpus.
> <>
Wypróbuj online!
Spowoduje to teraz wydrukowanie dodatkowego
"
kodu przed kodem Wumpus.Wumpus
Wypróbuj online!
Podobnie jak w przypadku
><>
quine, owija on literał ciąg znaków wokół kodu i drukuje tylko sekcję javascriptJavaScript (Node.js)
Wypróbuj online!
RAD
Wypróbuj online!
Wykluczam z łańcucha bardzo długie sekcje kodu, aby nie wypełnić odpowiedzi.
pieprzenie mózgu
Wypróbuj online!
Python 2
Wypróbuj online!
Brain-Flak
Wypróbuj online!
bla
Wypróbuj online!
To była najbardziej denerwująca część kodu. Foo obsługuje z jakiegoś powodu tylko literały łańcuchowe o długości 254, więc musiałem trochę zagrać w golfa i oddzielić kod JavaScript od kodu 2D, aby był krótki. Następna osoba prawdopodobnie będzie musiała podzielić Javascript.
źródło