Meta-arkaplan
Bu, Şaşırtıcı bir soru olarak belirlendi ve anında tepki "iyi, birisi bunu bilgisayarla çözecekti" idi. Bunu çözmek için bir programın ne kadar karmaşık olması gerektiği konusunda bir tartışma vardı. Peki, "bu program ne kadar karmaşık olmalı" hemen hemen kod golf tanımı , bu yüzden belki PPCG sorunu çözebilir?
Arka fon
Bir kibrit çöpü denklemi temel olarak normal bir matematiksel denklemdir, ancak basamaklar ve operatörler fiziksel olarak bir masaya kibrit çubukları yerleştirilerek oluşturulur. (Buradaki kibrit çubuklarının temel ilgili özelliği, oldukça katı ve sabit bir uzunluğa sahip olmalarıdır; bazen insanlar pamuklu çubuklar gibi başka nesneleri kullanırlar.)
Bu meydan okuma için, kibrit çöplerinin nasıl düzenlendiğine ilişkin belirli kurallar tanımlamamız gerekmez (bağlantılı meydan okumada olduğu gibi); bunun yerine, belirli bir sayıya göre değerlendirilen bir ifadeyi temsil etmek için kaç tane kibrit çöpüne ihtiyacımız olacağını umuyoruz.
Görev
İşte her biri kibrit çöpünde bir maliyeti olan bir rakam ve matematiksel operatörler alfabesi:
0
, 6 kibrit çöpü maliyeti1
, 2 kibrit çöpü maliyeti2
, 5 kibrit çöpü maliyeti3
, 5 kibrit çöpü maliyeti4
, 4 kibrit çöpü maliyeti5
, 5 kibrit çöpü maliyeti6
, 6 kibrit çöpü maliyeti7
, 3 kibrit çöpü maliyeti8
, 7 kibrit çöpü maliyeti9
, 6 kibrit çöpü maliyeti+
, 2 kibrit çöpü maliyeti-
, maliyet 1 kibrit çöpü×
, 2 kibrit çöpü maliyeti
(İsterseniz, ASCII olmayan karakterleri kullanmaktan kaçınmak için programınızın çıktısında ×
olduğu gibi temsil edebilirsiniz *
. Çoğu kodlamada, ×
daha fazla bayt alır *
ve bu nedenle çoğu programın bu kaldıraçtan yararlanmak isteyeceğini düşünürüm .)
Negatif olmayan bir tamsayıyı girdi olarak (herhangi bir makul yolla ) alan ve bu tamsayıyı çıktı olarak değerlendiren bir ifade üreten (yine herhangi bir makul yolla) bir program yazmanız gerekir . Buna ek olarak, ekspresyon aşikar olmayan olmalıdır: en az bir operatör içermelidir +
, -
ya da ×
. Son olarak, çıktınızdaki ifade, spesifikasyona uymayan tüm çıktılar arasında toplam kibrit çöpü maliyeti açısından en ucuz (veya en ucuza bağlı) olmalıdır.
Açıklamalar
- Bir satırda birden çok basamak çıkararak çok basamaklı sayılar oluşturabilirsiniz (örneğin
11-1
, üretmek için geçerli bir çıktıdır10
). Tam olarak kesin olmak gerekirse, elde edilen sayı ondalık olarak yorumlanır. Bu tür bir birleştirme, ara sonuçlar üzerinde çalışan bir işlem değildir; yalnızca orijinal ifadede görünen gerçek rakamlarda. - Bu meydan okuma amacıyla.
+
,,-
ve×
infix operatörleridir; solları ve sağları için bir tartışmaya ihtiyaçları var. Bunları önek konumunda+5
veya gibi kullanamazsınız-8
. - Paranteziniz (veya önceliği kontrol etmek için başka bir yolunuz) yok. İfade, tipik varsayılan öncelik kurallarına göre değerlendirilir (önce çarpımlar olur ve ardından toplama ve çıkarma soldan sağa değerlendirilir).
- Yukarıda listelenenler dışında herhangi bir matematik operatörüne veya sabitine erişiminiz yoktur; "yanal düşünme" çözümleri genellikle Puzzling'de kabul edilir, ancak bir bilgisayarın kendileriyle gelmesini gerektirmek mantıklı değildir ve burada PPCG'de, bir çözümün doğru olup olmadığı objektif olmayı seviyoruz.
- Her zamanki tamsayı taşma kuralları geçerlidir: çözümünüz, tüm tamsayıların varsayılan olarak sınırsız olduğu dilinizin varsayımsal (veya belki de gerçek) bir sürümünde keyfi olarak büyük tamsayılar için çalışabilmelidir, ancak programınız uygulama nedeniyle uygulamada başarısız olursa bu kadar büyük tam sayıları desteklememek, çözümü geçersiz kılmaz.
- Aynı rakamı veya operatörü bir kereden fazla kullanırsanız, kibrit çöpü maliyetini her kullandığınızda ödemeniz gerekir (çünkü açıkçası, aynı fiziksel kibrit çöplerini masada iki farklı yerde yeniden kullanamazsınız).
- Zaman sınırı yoktur; kaba kuvvet çözümleri kabul edilebilir. (Kaba kuvvetten daha hızlı bir çözümünüz varsa, daha uzun olsa bile yayınlamaktan çekinmeyin; alternatif yaklaşımların nasıl karşılaştırıldığını görmek her zaman ilginçtir.)
- Kodunuzun açıklanması asla gerekli olmasa da, muhtemelen iyi bir fikir olacaktır; kod-golf çözümlerinin okunması genellikle çok zordur (özellikle yazıldıkları dile aşina olmayan kişiler için) ve nasıl çalıştığını anlamadığınız sürece bir çözümü değerlendirmek (ve dolayısıyla oy vermek) zor olabilir.
Zafer koşulu
Bir kod golf zorluğu olarak, daha az bayt ile yanıtlar daha iyi kabul edilir. Bununla birlikte, her zamanki gibi, diğer yaklaşımlardan daha ayrıntılı olsalar bile, farklı yaklaşımlarla veya belirli dillerde yanıtlar yayınlamaktan çekinmeyin; golfün amacı gerçekten belirli bir programı ne kadar optimize edebileceğinizi görmek ve bu şekilde bir şeyler yapmak bize optimize etmek için birçok potansiyel program sunuyor. Bu yüzden, biri tamamen farklı bir yaklaşım veya tamamen farklı bir dil kullanarak bir çözüm sunar ve çok daha kısa bir cevap alırsa cesaretiniz kırılmamalıdır; cevabınızın daha iyi optimize edilmiş olması ve daha fazla beceri göstermesi iyi olabilir ve PPCG'deki seçmenler genellikle bunu takdir eder.