(Zainspirowany tym komentarzem do starego pytania).
tło
Quine błąd (znany również jako „Kimian Quine'a”) to program, który po opracowaniu lub uruchomić, powoduje kompilator / interpreter / wykonawcze, aby wydrukować komunikat o błędzie, który ma identyczny tekst do samego programu i nic więcej. Na potrzeby tego wyzwania definiujemy szeroko „błąd”, aby uwzględnić także ostrzeżenia.
Zadanie
W tym wyzwaniu szukamy quinektóry jest również quine błędu. Po uruchomieniu program musi normalnie wydrukować własny kod źródłowy (tj. Nie jako komunikat błędu / ostrzeżenia); musi to być odpowiednia liczba (tzn. pewna część programu musi zakodować inną część wyniku). Dodatkowo, kompilacja i wykonanie programu musi również spowodować, że kod źródłowy programu - i nic więcej - zostanie wydrukowany jako komunikat błędu lub ostrzeżenia przez implementację. (Zauważ, że oznacza to, że nie będziesz w stanie używać błędów czasu kompilacji w językach, w których uniemożliwiają one normalne działanie programu.) Innymi słowy, kod źródłowy programu zostanie wydrukowany dwukrotnie, raz dla każdej metody.
Wyjaśnienia
- W większości przypadków oczywiste będzie, co oznacza komunikat o błędzie / ostrzeżeniu; nie rozróżniamy tych dwóch tutaj. W niejednoznacznych przypadkach zdefiniuj komunikat błędu / ostrzeżenia jako dowolny tekst, który jest generowany przez implementację: 1. w wyniku czegoś innego niż wykonanie polecenia (lub cokolwiek najbliższego odpowiednika w języku); lub 2. nie było to częścią danych wejściowych polecenia, które wygenerowało je jako dane wyjściowe.
- Część błędu / ostrzeżenia w quinie nie musi być poprawną quiną (chociaż w większości przypadków będzie to przypadek, ponieważ większość komunikatów o błędach i ostrzeżeniach zawiera znaczne ilości stałego tekstu).
- Dopuszczalne jest, aby program wyświetlał wiele błędów / ostrzeżeń, które tworzą źródło programu po połączeniu. Niedopuszczalne jest wyświetlanie błędów / ostrzeżeń, które nie pojawiają się w źródle.
- W przeciwieństwie do wielu wyzwań, przełączniki przekazane kompilatorowi i nazwa pliku programu mogą być bardzo istotne w tym wyzwaniu. Biorąc pod uwagę, że w przeciwnym razie wyzwanie może nie być możliwe, jestem chętny do elastyczności tutaj, chociaż jeśli uruchomisz implementację w nietypowy sposób, pamiętaj, że reguły PPCG nakładają za to karę bajtową (równą liczbie dodatkowych znaków, które musisz dodać w wierszu poleceń najkrótszy „normalny” sposób uruchomienia programu), a zatem musisz określić wielkość kary w swoim poście. (Na przykład, jeśli używany interpreter odczytuje program z pliku i nie ma szczególnych ograniczeń w nazwie pliku, najkrótszym normalnym sposobem uruchomienia programu byłby plik z 1-znakową nazwą pliku; w związku z tym
- Wersja kompilatora / tłumacza, której używasz, może być odpowiednia, dlatego w ramach zgłoszenia prosimy podać konkretny kompilator lub tłumacz, na którym działa Twój program i która wersja jest wymagana. (Na przykład przesłanie C może zawierać w nagłówku „C (gcc 6.2.0)”).
- Pamiętaj, że to zadanie może nie być możliwe we wszystkich językach. W językach, w których się znajduje, najłatwiejszą metodą będzie znalezienie komunikatu o błędzie lub ostrzeżenia, dla którego można dostosować część podzbioru tekstu (poprzez zmianę nazwy czegoś, co jest cytowane w wiadomości; nazwy plików są częstym wyborem tutaj, ale nie jedyny). Będę pod szczególnym wrażeniem (i zaskoczeniem), jeśli ktoś znajdzie sposób, aby to zrobić, używając tylko komunikatów o błędach i ostrzeżeń, których tekst jest naprawiony.
Warunek zwycięstwa
To jest golf-golfwyzwanie, więc wpis jest uważany za lepszy, jeśli ma mniejszą liczbę bajtów. W związku z tym, gdy w ogóle twój program działa, chcesz go zoptymalizować, aby maksymalnie zmniejszyć liczbę bajtów. (Jednak nie zniechęcaj się, jeśli jest już krótszy wpis, szczególnie jeśli jest on w innym języku; tak naprawdę szukamy tutaj skrócenia określonego algorytmu lub idei programu w jak największym stopniu, ale widząc wiele zawsze warto skorzystać z rozwiązań w różnych językach lub opartych na różnych zasadach.)