Döngüsel Polyglot Mücadelesi
Bu polisler iş parçacığı. Soyguncular dizisini burada bulabilirsiniz .
Devirli Poliglot
N elementli siklik çok dilli N farklı dilde çalıştırılabilen eksiksiz bir programdır. Her dilde, program herhangi bir girdi olmadan çalıştırıldığında (muhtemelen bu istisnaya tabi ), bir dilin adını STDOUT'a yazdırmalıdır. Özellikle, program Kth dilinde çalıştırılıyorsa, (K + 1). Dilin adını yazdırmalıdır. Program, N'inci dilde (yani, N öğesi döngüsünde son dil) çalıştırılıyorsa, ilk dilin adını yazdırmalıdır.
Bir örnek faydalı olabilir.
a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3 9
--7 *
--^,:-5<
Bu programı Lua ile çalıştırmak "Ruby" dizesini basar. Bu programı Ruby'de çalıştırmak "Befunge" dizesini yazdırır. Bu programı Befunge'de çalıştırmak, döngüyü tamamlayarak "Lua" dizesini yazdırır. Bu program Lua, Ruby ve Befunge'den oluşan 3 döngüyü oluşturur.
Aynı dil bir döngüde iki kez görünemez ve aynı dilin farklı sürümleri (Python 2 ve Python 3 gibi) birbiriyle aynı döngüde görünemez.
Polisler
Zorluğunuz, N'nin en az 2 olduğu bir N-siklik poliglot yazmaktır. Ardından, M'den kesinlikle N'den büyük olduğu bir M-siklik çokglot üretmek için programa bazı karakterleri eklemeniz, değiştirmeniz ve silmeniz gerekir. Daha sonra, daha kısa N-siklik çokgeni (ve içinde çalıştığı dilleri) ve daha uzun çokgeni oluşturmak için değiştirdiğiniz karakter sayısını göndermelisiniz. Puanınız N, kısa döneminizdeki dil sayısıdır.
Soyguncular daha uzun döngünüzü belirlemeye çalışacaktır. Yedi gün sonra hiç kimse çözümünüzü başarıyla çözemediyse, cevabınızı güvenli olduğunu bildirerek düzenlemelisiniz. Ayrıca şu anda daha uzun M-siklik poliglotunuzu da göndermelisiniz.
soyguncuları
Bir polisin N-siklik çokgeni ve daha büyük bir çokgrup döngüsü oluşturmak için ekledikleri karakter sayısı göz önüne alındığında, hedefiniz daha büyük bir döngü oluşturmaktır. Polisin yaptığı kadar çok karakter veya daha az karakter ekleyerek, silerek veya değiştirerek daha uzun bir döngü üretebiliyorsanız , polisin çok dilini kırmış olursunuz. Puanınız, oluşturduğunuz yeni döngünün uzunluğudur. Yeni çok dilenizin, polisin gizli çok dileniyle aynı hatta ona benzer olması gerekmez; sadece mevcut olanlardan daha büyük olması gerekir.
Çözümünüz de çatlamış olabilir. Eğer başka bir soyguncu gelir ve aynı polisin çok dibinden başlayarak sizinkinden kesinlikle daha uzun bir döngü üretirse, puanlarınızı çaldılar.
Geçerli Programlama Dilleri
Bu zorluk dolaylı olarak diğer katılımcıların kullandığı programlama dillerini tahmin etmeyi içerdiğinden, bu zorluğun amaçları için bir programlama dilinin tanımı olağan tanımdan biraz daha katı olacaktır. Bu zorlukta kullanılan bir programlama dili aşağıdaki koşulların tümünü karşılamalıdır.
- Dil , bir programlama dili için gereken genel PPCG'yi karşılamalıdır .
- Bu mücadelenin yayınlandığı sırada dilin bir Wikipedia makalesi , bir Esolangs makalesi veya bir Rosetta Kodu makalesi olmalıdır .
- Dilin serbestçe kullanılabilen bir tercümanı veya derleyicisi olmalıdır.
Son Notlar
- Yazdığınız kodun çalıştırılması amaçlanan her dilde bağımsız bir program olması gerekir. İşlevlere veya kod snippet'lerine izin verilmez.
- Programınıza STDIN üzerinden giriş yapılmayacaktır. Benzer şekilde, programınız STDERR'a hiçbir şey yazdırmamalıdır.
- Bir polisin puanı, yayınladıkları çokglot döngüsünde dillerin sayısıdır. Polis, postalanan çokgrupun düzgün çalıştığı dilleri ve daha uzun çok çokglot oluşturmak için ekledikleri karakter sayısını kaydetmelidir. Bunlar değil onların cevabı güvende olana kadar dillerin artık, gizli dil bilen çalışır gönderme sorumlu.
- Bir soyguncunun puanı, değiştirilmiş çok dilli grubun çalıştığı dillerin sayısıdır. Poliste olduğu gibi, soyguncu çok dilli grubun düzgün çalıştığı dillerin listesini yayınlamalıdır.
- Değiştirilen karakter sayısı Levenshtein mesafesinden hesaplanmalıdır.