Tek bir dosyaya, girdi gerektirmeyen ve çıktı üretmeyen bir program yazın. Çalıştırırken , kodu değiştirmeden veya diğer kalıcı yan etkiler üretmeden , adından bağımsız olarak içinde bulunduğu dosyanın adını tersine çevirmelidir.
Bunu başarmanın herhangi bir yolu iyi. Bu sadece program çalıştırıldığında, kalıcı olan tek değişikliğin dosya adının tersine çevrilmiş olmasıdır. örneğin, dizinde yeni dosyalar olmamalıdır.
Programı tekrar çalıştırmak, adı geri çevirmelidir. Gerçekten de, programın birçok kez keyfi olarak çalıştırılabilmesi gerekir.
Bu zorluğun amaçları için:
- Dosya adlarının her zaman 1 ila 127 karakter uzunluğunda küçük harflerden (az) oluşan dizeler olduğunu varsayabilirsiniz. (Dilinizde dosyaların çalışması için uzantıların olması gerekiyorsa, uzantıdan önceki kısmı ters çevirin, örneğin
mycode.bat
→edocym.bat
.) - Kod dosyasının kendi başına bir dizinde olduğunu varsayabilir, böylece adlandırma çakışmaları olmaz (kendisi hariç).
- Sen olabilir değil , dosya adı bir palindrom değil varsayalım tersine aynı yani. Palindrom olan dosya isimleri tıpkı olmayanlar gibi çalışmalıdır.
- Dosyanızın içeriğini veya meta verilerini okuyabilirsiniz. Hiçbir vardır quine burada kısıtlamalar.
- Programınızın belirli, modern, yaygın bir işletim sisteminde (örneğin, Windows / Linux) çalıştırılacağını varsayabilirsiniz, çünkü tüm mermiler aynı komut setine sahip değildir.
Somut bir örnek olarak,
mycode
kendi dizininde adı verilen bir dosyada bir Python programınız olduğunu varsayalım. Koşupython mycode
Terminalde dosya adının tersine çevrilmesiyle sonuçlanmalıdır
edocym
. Dosyaedocym
kendi dizininde yalnız olmalıdır - adlandırılmış dosyamycode
artık bulunmamalıdır. Koşupython edocym
adı geri dönecek
mycode
, bu noktada işlem süresiz olarak tekrarlanabilecektir.Aynı Python dosyası yeniden adlandırılmışsa
racecar
(kodu değiştirmeden) ve sonra çalıştırpython racecar
"yarış arabası" bir palindrom olduğundan, hiçbir şey gözle görülür biçimde değişmemelidir. Dosya adı diyelim ki vardı, eğer Aynı gider
a
yaxx
.
Bayt cinsinden en kısa kod kazanır. Tiebreaker daha yüksek oyla cevap verdi.