Meydan okuma
Bu zorlukta bir kaynak dil S
ve bir hedef dil belirtirsiniz T
. Göreviniz aşağıdaki programı P
dilde yazmaktır S
. Geçerli bir programı varsa Q
dilinde T
için girdi olarak verilir P
, bu çıkış geçerli bir programı olacak R
dilinde T
hiçbir giriş ve çıkışlarını sürer Q(R)
olduğunu, programın Q
kaynak koduna uygulanan R
. Buna ek olarak , cevabınızda önemsiz olmayan bir örnek program Q
(daha ilginç, daha iyi, bunun için puan kazanmasanız da ), ortaya çıkan program R
ve çıktısını sunmalısınız R
. Bu kod golf, yani P
kazanma için en kısa kod .
Başka bir deyişle, bu, keyfi genelleştirilmiş tırnak türleri oluşturabilen bir "evrensel kine yapıcısı" yazmakla ilgili bir sorundur.
Açıklamalar
- Kaynak ve hedef dilleriniz aynı olabilir.
- Program
P
, bir çıktıyı (STDIN veya eşdeğerinden) almalı ve bir çıktıyı (STDOUT veya eşdeğeri), her çıktı programında olduğu gibi almalıdırR
. - Giriş programları
Q
da bir dizeyi başka bir dizeye dönüştürmelidir, ancak biçimleri daha esnektir: dizeden dizeye işlevler, belirli bir ada sahip bir değişkeni değiştiren kod parçacıkları, hedef dilinizse veri yığınını değiştiren parçacıklar olabilir AyrıcaQ
, örneğin herhangi bir yorum içermeyebileceğini belirterek 's formunu daha da kısıtlayabilirsiniz . Ancak, herhangi bir hesaplanabilir dizeden dizeye işlevini bir giriş programı olarak uygulayabilmenizQ
ve bunların nasıl çalıştığını ve bunlara ne gibi kısıtlamalar koyduğunuzu açıkça belirtmeniz gerekir . - Çıktı programı
R
gerçekten (genelleştirilmiş) bir quine olmalıdır, bu yüzden bunu yapmadıkça herhangi bir girdi (kullanıcı girişi, dosyalar vb.) OkumamalıdırQ
. - Standart boşluklara izin verilmez.
Bir örnek
Kaynak dilim olarak Python'u ve hedef dilim olarak Haskell'i seçtiğimi varsayalım. Ayrıca, giriş programının String -> String
adlandırılmış bir işlevin tek satırlık bir tanım olması gerektiğini de varsayalım f
. Eğer string-reversing programı verirsem
f x = reverse x
Python programıma girdi olarak P
, başka bir Haskell programının kaynak kodunu çıktılar R
. Bu program kaynak kodunun STDOUT'a yazdırılır R
, ancak tersine çevrilir. Eğer P
kimlik işlevi verilir
f x = x
girdi olarak, çıktı programı R
bir kınnadır.