* EDIT: Bazı halk külot görünüşte bu fazla rahatsız bunching beri, nasıl sadece benzer bir kod ile ilgili bazı etkili yollar tavsiye dersiniz? Ben yarattığı sorun, belki spesifik olmayan cevaplar (zaten amacım, kod golf Bu bit temel sorunlardan sundu ile ilgili daha kısa yollarını bulmak için sadece bir araç oldu), daha doğrusu, kısaltmak / şeyleri optimize etmek için yollar için genel öneriler ele Bu soru ile? Dediğim gibi ...
Bu sadece eğlenceli olması gerekiyordu (ve bu tür noobish sorular tarafından rahatsız bir l337 programcı iseniz ... iyi, zor) olduğunu!
Ben mümkün olduğunca verimli bir sorunu çözmek isteyen bir PHP programlama bulmaca çevrimiçi bulundu. Sorun mümkün olduğunca az kod kullanarak şarkının "Duvar üzerinde Bira Şişeleri 99" yazdırmaktır. Gerekli hatları şunlardır:
99 bottles of beer on the wall, 99 bottles of beer. Take 1 down, pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer. Take 1 down, pass it around, 97 bottles of beer on the wall.
vs, vs, için aşağı on ...
1 bottle of beer on the wall, 1 bottle of beer. Go to the store and buy some more, 99 bottles of beer on the wall.
Ben yönetmek olabilir iyi buldum bazı diğer çözümlere göre çok iyi değildi. Temelde, mümkün olan en az bayt bunu çözmek istiyoruz. Ben yaklaşık 260 bayt yaptım. Ben sadece 187 yaptım başkası gördüm. Ben burada ne bulmak ilgileniyorum o / o yaptın nasıl ...?!
Ben burada başvuru için benim çözüm basacaktır ve ben yaptım kanıtlamak için (ve ben lol, bir ödev çözüm için sormuyorum) ama ben bir (mümkün olduğunca az byte kullanarak çözüm optimize olacaktır olarak nasıl çok merak ediyorum Bilginize benim çözüm satırsonlarını kullanarak değil birkaç byte tıraş olabilir ama ben) burada mümkün olduğunca okunabilir olmasını istiyorum.
<?php
$a="beer on the wall";
for($i=99;$i>=1;$i--){
$x=($i==1)?"bottle":"bottles";
$b="<p>$i $x of $a, $i $x of beer.<br>";
$b.=($i==1)?"Go to the store and buy some more, 99 bottles of $a.":"Take one down and pass it around, ".($i-1)." $x of $a.</p>";
echo $b;
}
Oh, sen dosyası oluşturma ve sonra çalıştırarak bayt sayısını alabilirsiniz:
ls -l /location/of/the/dir/containing/the/file/