Wyzwanie polega na znalezieniu ciągu znaków, który nie może pojawić się w żadnym legalnym programie w wybranym języku programowania. Obejmuje to komentarze, ciągi znaków lub inne części „niewykonywalne”.
Wyzwanie
- Twój program może być specyficzny dla konkretnej wersji lub implementacji kompilatora / interpretera / środowiska wykonawczego Twojego języka. Jeśli tak, proszę podać dane szczegółowe.
- Dozwolone są tylko standardowe opcje kompilatora / interpretera / środowiska wykonawczego. Nie można przekazać dziwnej flagi do kompilatora, aby uzyskać określony wynik (np. Przekazanie flagi w celu konwersji ostrzeżeń na błędy).
- Jeśli Twój język programowania wymaga specyficznego kodowania (np. UTF-8), łańcuch znaków również musi być poprawnie zakodowany (tzn. Łańcuchy, które zawodzą wyłącznie z powodu błędów dekodowania znaków, nie są dozwolone).
- Każda indywidualna postać w twoim zgłoszeniu musi być dopuszczalna w legalnym programie; to znaczy, nie możesz po prostu użyć postaci, która jest zawsze odrzucana.
- Kompilator / interpreter / środowisko wykonawcze musi dawać błąd, gdy podany zostanie dowolny kod źródłowy zawierający ciąg znaków jako podłańcuch. Błąd nie musi być taki sam we wszystkich programach - jedno osadzenie łańcucha może powodować błąd składniowy, a inne może powodować błąd w czasie wykonywania.
Punktacja
- Najkrótszy ciąg niedozwolony dla każdego języka wygrywa.
- Powinieneś wyjaśnić, dlaczego twój ciąg jest nielegalny (dlaczego nie może pojawić się nigdzie w legalnym programie).
- Spory dotyczące niewłaściwych rozwiązań w komentarzach. Mówiąc dokładniej, powinieneś podać link do TIO lub równoważnego programu demonstrującego legalny program (tj. Taki, który nie powoduje żadnych błędów), który zawiera proponowane podciągi.
- Niektóre języki (np. Bash, Batch, Perl) pozwalają na dołączanie dowolnych danych binarnych do programu bez wpływu na ważność (np. Używanie
__DATA__
w Perlu). W przypadku takich języków możesz przesłać rozwiązanie, które może pojawić się tylko w takiej końcowej sekcji. Zanotuj to w swojej odpowiedzi. (Definicja tej „końcowej sekcji” jest zależna od języka, ale ogólnie oznacza dowolny tekst po całkowitym zaprzestaniu czytania skryptu przez analizator składni).
Przykład
W Pythonie mogę się przesłać
x
"""
'''
ale można to osadzić w większym programie
"""
x
"""
'''
y
'''
więc nie jest to dopuszczalne.