Twoje zadanie jest proste: Napisz program, który można uruchomić w dwóch językach. Powinien to być normalny quine (drukuje własny kod źródłowy) w języku 1, i powinien być quine błędu (generuje komunikat o błędzie identyczny z własnym kodem źródłowym) w języku 2.
To jest golf golfowy , więc wygrywa najkrótsze prawidłowe przesłanie (w bajtach).
Zasady:
- Języki mogą być dowolnie podobne. Supersety / podobne wersje / podobne dialekty nie są niedozwolone.
- Reguły wyszukiwania błędów są takie same, jak te w sekcji Tworzenie zapytania o błędzie! .
code-golf
quine
polyglot
error-message
Esolanging Fruit
źródło
źródło
Odpowiedzi:
Befunge-93 (FBBI) / C (tcc) , 93 + 62 = 155 bajtów
Wypróbuj online !: Befunge-93 , C
Dzięki randomdude999 za zauważenie, że nazwa pliku wymaga pasujących cudzysłowów do działania.
Musi być zapisany pod nazwą pliku
^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p
, gdzie\n
jest nowa linia. Z tego powodu TIO dla C nie działa dokładnie tak, jak powinien. Testowany do pracy na Lubuntu.Objaśnienie (C):
Program nie kompiluje się, a tcc z przyjemnością wyświetla nazwę pliku jako część komunikatu o błędzie. Istnieje wiele błędów kompilacji, które można uzyskać na podstawie początku kodu.
^
na początku daje namdeclaration expected
krótki, który nie zawiera żadnych problematycznych znaków"
. Z drugiej strony programiści gcc i clang są bardzo pesymistyczni i postanowili wypisać wiele błędów na raz, co nie jest zbyt przyjemne, więc nie używamy ich kompilatorów.Objaśnienie (Befunge-93):
Befunge jest wygodny dla quinesów, ponieważ jego kod może być również wykorzystywany jako dane znakowe, dzięki
"
poleceniu, które przełącza tryb ciągów znaków. Na początku wykonujemy kilka bezużytecznych operacji na stosie, a następnie wydajemyp
polecenie (put), które umieszcza znak NUL na (0, 1). Następnie odbijamy wskaźnik instrukcji po lewej stronie i zaczynamy czytać wszystko jako ciąg znaków. Należy to zrobić po lewej stronie, ze względu na naturę stosu LIFO. Po owinięciu i"
ponownym dotarciu do postaci sznurek się kończy. Zauważ, że znak NUL zastąpił znak$
znak, tworząc separator w połowie ciągu. Następnie wciskamy 3 cyfry na stos i przeskakujemy przez NUL (ponieważ niestety zawiesza się interpreter podczas uruchamiania jako instrukcja). Tutaj należy wykonać część statyczną komunikatu o błędzie. Większość jego znaków to brak operacji, alep
polecenie zużywa trzy argumenty (dlatego wypchnęliśmy 3 liczby, w przeciwnym razie zjedzilibyśmy tutaj część łańcucha), a:
& i1
znaki wypychają łącznie 4 wartości na stos, które przeciwdziałamy z instrukcjąp
a$
(pop i odrzuć). Następnie wykonywana jest pewna arytmetyka w celu wypchnięcia kodów ASCII,^"\n>#001p#"
a na końcu pętla wypisuje wszystkie wartości na stosie jako znaki, aż znajdzie znak NUL i zakończy się.źródło
/
. Nie mogę teraz tego przetestować.<define>:1: error: missing terminating " character
.Applesoft BASIC / Commodore LCD BASIC , 13 bajtów
W emulatorze Apple] [naciśnij RESETklawisz, aby przejść do trybu BASIC.
W emulatorze Commodore LCD naciśnij, RightArrowEnteraby dostać się do aplikacji BASIC.
W obu przypadkach nie wpisuj
?SYNTAX ERROR
wszystkich wielkich liter, ponieważ są one automatycznie pisane wielkimi literami.źródło