Java - 126 karakter
minimize:
class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}
unminimized:
class hjq {
public static void main(String... w) {
for (char z = '"'|0; ++z != 'a';) {
if ("'()+.0;=OS".indexOf(z) == ~0) {
System.out.print(z);
}
}
}
}
Bu ilginç bir sorundur, çünkü bireysel semboller karakterleri yeniden kullandığı için uzun formlarından faydalanabilir. Örneğin, normalde String[]
daha kısa olur, ancak String...
koşullu dizgede köşeli parantezlere olan ihtiyacı ortadan kaldırır.
İşin püf noktası, aralığın başında ve sonunda karakterleri denemek ve kullanmaktı, böylece sadece döngü başlangıcınızı ve sonunuzu değiştirerek onları çıktıların dışında tutabilirsiniz.
Java için dışlanacak anahtar bir karakterdir "
, çünkü dizgede bunun olması kaçmak ister, ekleyen \
dizeye gitmek için programınıza eklenir \\
. "
Koşullu dizginizden çıkardığınızda 4 karakter kaldırırsınız. Bu, kullandığınızdan
ve !
döngü baştan başladığınızdan emin olarak sağlanabilir #
.
Bütün küçük harfler, yalnızca sona aralığının sonuna yakın görünen {
, |
, }
ve ~
peşlerinden. Java'nın ayrıntılarından dolayı, küçük harflerin çoğu sadece kazan için kullanılır. Aynı şekilde {
ve }
bir Java programı için de önemsizdir, çünkü kazan için bunlara ihtiyaç vardır.
|
Bir şartınız veya koşulunuz varsa kullanılabilir, ancak sadece |
bit bitli bir operatör olarak kullanmaktan daha kısa bir programa yol açan programdan yararlanmanın bir yolunu bulamadım . Bu |0
beni biraz kirli hissetmeme neden oluyor, çünkü karaktere sahip olabilmek için bir tek parça bu.
~0
Verimler -1
kullanışlı, çünkü kullanmamız gereken kontrol budur indexOf
. Bunu !=
koşullu döngü için kullanmakla birleştirmek , <
karakteri tamamen ortadan kaldırır; bu, koşullu dizginin içine girmesi gerekmediği anlamına gelir.
0x20
etmek0x7e
"yazdırılabilir ASCII karakterleri" olarak tanımlanmaktadır. Teknik olarak sekmeler ve yeni satırlar aslında kontrol karakterleridir.