( Eski bir soru hakkındaki bu yorumdan esinlenilmiştir .)
Arka fon
Bir hata sorgusu ("Kimian sorgusu" olarak da bilinir), derlendiğinde veya çalıştırıldığında, derleyicinin / yorumlayıcı / çalışma zamanının, programın kendisine aynı metni içeren bir hata iletisi yazdırmasına ve başka bir şey yazdırmamasına neden olan bir programdır. Bu zorluğun amaçları doğrultusunda, uyarıları da içerecek şekilde geniş bir şekilde "hata" tanımlarız.
Görev
Bu meydan okumada, quinebu da bir hata sorgusu. Yürütüldüğünde, program normal olarak kendi kaynak kodunu yazdırmalıdır (yani hata / uyarı mesajı olarak değil); bu uygun bir quine olmalıdır (yani programın bir kısmı çıktının farklı bir kısmını kodlamalıdır). Ayrıca, derlenmesi ve programlanmalıdır yürütme de programın kaynak kodunu neden - ve başka bir şey - hata olarak basılacak veya uygulanmasıyla uyarı mesajları. (Bunun, programın normal şekilde yürütülmesini engellediği dillerde derleme zamanı hatalarını kullanamayacağınız anlamına geldiğini unutmayın.) Başka bir deyişle, programın kaynak kodu her yöntemle bir kez olmak üzere iki kez yazdırılacaktır.
Açıklamalar
- Çoğu durumda, bir hata / uyarı mesajının ne olduğu ve ne olmadığı açıktır; burada ikisini birbirinden ayırmıyoruz. Belirsiz durumlarda, bir hata / uyarı iletisini uygulama tarafından çıkarılan herhangi bir metin olarak tanımlayın: 1. bir komut yürütmekten başka bir şeyin sonucu olarak (veya dilde en yakın eşdeğeri varsa); veya 2. bu, onu çıktı olarak üreten komuta girdinin bir parçası değildi.
- Ayranın hata / uyarı kısmının uygun bir ayraç olması gerekmez (çoğu durumda tesadüfen olacaktır, çünkü çoğu hata ve uyarı mesajı önemli miktarda sabit metin içerir).
- Programın, bir araya getirildiğinde programın kaynağını oluşturan birden fazla hata / uyarı vermesi kabul edilebilir. Kaynakta görünmeyen hataların / uyarıların çıkarılması kabul edilemez.
- Pek çok zorluğun aksine, derleyiciye verilen anahtarlar ve program dosya adı bu zorlukla büyük olasılıkla büyük önem taşır. Zorluk başka türlü mümkün olmayabilir göz önüne alındığında, burada esnek olmaya hazırım, ancak uygulamayı alışılmadık bir şekilde çalıştırırsanız, PPCG kurallarının bunu yapmak için bir bayt cezası aldığını unutmayın (ek karakter sayısına eşittir). bir programı çalıştırmak için komut satırına en kısa "normal" yol üzerinden eklemeniz gerekir) ve bu nedenle yayınınızdaki cezanın boyutunu belirtmeniz gerekir. (Örneğin, kullandığınız yorumlayıcı programı bir dosyadan okursa ve dosya adında belirli bir kısıtlaması yoksa, programı çalıştırmanın en kısa normal yolu 1 karakterli dosya adına sahip bir dosyadan olur;
- Kullandığınız derleyici / yorumlayıcı sürümü alakalı olabilir, bu nedenle gönderiminizin bir parçası olarak, lütfen programınızın çalıştığı ve hangi sürümün gerekli olduğu belirli bir derleyici veya yorumlayıcı belirtin. (Örneğin, bir C gönderimi başlıkta "C (gcc 6.2.0)" ifadesini verebilir.)
- Bu görevin tüm dillerde mümkün olmayabileceğini unutmayın. Bulunduğu dilde, en kolay yöntem muhtemelen metnin bazı alt kümelerini özelleştirmenin mümkün olduğu bir hata veya uyarı mesajı bulmak olacaktır (mesajda alıntılanan bir şeyin adını değiştirerek; dosya adları ortak bir seçimdir burada, ama tek değil). Birisi sadece metni düzeltilmiş hata ve uyarı mesajlarını kullanarak bunu yapmanın bir yolunu bulursa özellikle etkilenirim (ve şaşırırım) .
Zafer koşulu
Bu bir kod golfBu nedenle, bir girişin daha küçük bayt sayısı varsa daha iyi olduğu düşünülür. Bu nedenle, programınızı çalıştırdıktan sonra, bayt sayısını mümkün olduğunca azaltmak için programı optimize etmek istersiniz. (Ancak, daha kısa bir giriş varsa, özellikle de farklı bir dilde ise cesaretiniz kırılmayın; burada gerçekten aradığımız, bir programın arkasındaki belirli bir algoritmayı veya fikri mümkün olduğunca kısaltmak, ancak birden fazla görmek farklı dillerde veya farklı ilkelere dayanan çözümler her zaman faydalıdır.)