Meydan okuma
Bu zorlukta bir kaynak dil S ve bir hedef dil belirtirsiniz T. Göreviniz aşağıdaki programı Pdilde yazmaktır S. Geçerli bir programı varsa Qdilinde Tiçin girdi olarak verilir P, bu çıkış geçerli bir programı olacak Rdilinde Thiçbir giriş ve çıkışlarını sürer Q(R)olduğunu, programın Qkaynak 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 Rve çıktısını sunmalısınız R. Bu kod golf, yani Pkazanma 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ı
Qda 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 uygulayabilmenizQve bunların nasıl çalıştığını ve bunlara ne gibi kısıtlamalar koyduğunuzu açıkça belirtmeniz gerekir . - Çıktı programı
Rgerç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 -> Stringadlandı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 Pkimlik işlevi verilir
f x = x
girdi olarak, çıktı programı Rbir kınnadır.