W jednym pliku napisz program, który nie wymaga danych wejściowych i nie generuje danych wyjściowych. Po uruchomieniu powinien odwrócić nazwę pliku, w którym się znajduje, bez względu na nazwę , bez zmiany kodu lub wywoływania innych trwałych skutków ubocznych.
Każdy sposób osiągnięcia tego jest w porządku. Liczy się tylko to, że po uruchomieniu programu jedyną trwałą zmianą jest odwrócenie nazwy pliku. np. żadne nowe pliki nie powinny znajdować się w katalogu.
Ponowne uruchomienie programu powinno odwrócić nazwę. Rzeczywiście, program powinien być w stanie być uruchamiany dowolnie wiele razy.
Na potrzeby tego wyzwania:
- Możesz założyć, że nazwy plików to zawsze ciągi małych liter (az) o długości od 1 do 127 znaków. (Jeśli twój język wymaga, aby pliki miały rozszerzenia do uruchomienia, po prostu odwróć część przed rozszerzeniem, np .
mycode.bat→edocym.bat). - Możesz założyć, że plik kodu jest sam w katalogu, więc nie będzie miał konfliktów nazw (z wyjątkiem samego siebie).
- Być może nie zakładamy, że nazwa pliku nie jest palindrom, czyli tyle samo, gdy odwrócony. Nazwy plików, które są palindromami, powinny działać tak samo dobrze, jak te, które nie są.
- Możesz przeczytać zawartość pliku lub metadane. Brak Quine ograniczenia tutaj.
- Możesz założyć, że twój program będzie działał na określonym, nowoczesnym, powszechnym systemie operacyjnym (np. Windows / Linux), ponieważ nie wszystkie powłoki mają ten sam zestaw poleceń.
Jako konkretny przykład, powiedzmy, że masz program w języku Python w pliku o nazwie
mycodew jego własnym katalogu. Bieganiepython mycodew terminalu powinno spowodować odwrócenie nazwy pliku
edocym. Plikedocympowinien być sam w swoim katalogu - żaden nazwany plik niemycodepowinien już istnieć. Bieganiepython edocymodwróci nazwę z powrotem do
mycode, w którym to momencie proces można powtarzać w nieskończoność.Jeśli nazwa tego samego pliku Python została zmieniona
racecar(bez zmiany kodu), a następnie uruchompython racecarnic nie powinno się wyraźnie zmienić, ponieważ „samochód wyścigowy” to palindrom. To samo dotyczy, jeśli nazwa pliku to, powiedzmy,
alubxx.
Najkrótszy kod w bajtach wygrywa. Tiebreaker jest wyżej głosowaną odpowiedzią.