Java - 126 karakter
diminimalkan:
class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}
tidak dikurangi:
class hjq {
public static void main(String... w) {
for (char z = '"'|0; ++z != 'a';) {
if ("'()+.0;=OS".indexOf(z) == ~0) {
System.out.print(z);
}
}
}
}
Ini adalah masalah yang menarik, karena token individual mungkin mendapat manfaat dari bentuknya yang lebih lama karena menggunakan kembali karakter. Sebagai contoh, biasanya String[]
akan lebih pendek, tetapi String...
menghilangkan kebutuhan untuk tanda kurung dalam string bersyarat.
Saya menemukan triknya adalah dengan mencoba dan menggunakan karakter di awal dan akhir rentang sehingga Anda dapat mengecualikan mereka dari output hanya dengan mengubah awal dan akhir loop Anda.
Untuk Java, karakter kunci yang dikecualikan adalah "
, karena memiliki itu di dalam string memerlukannya, yang menambah \
program Anda, yang perlu masuk dalam string, yang menambahkan \\
. Dengan menghapus "
dari string kondisional Anda, Anda menghapus 4 karakter. Ini dapat dicapai dengan memastikan Anda menggunakan
dan !
dan memulai putaran Anda dari #
.
Semua huruf kecil muncul di dekat akhir dari jangkauan, dengan hanya {
, |
, }
dan ~
datang setelah mereka. Karena verbositas Java, sebagian besar huruf kecil digunakan hanya untuk boilerplate. Demikian juga, {
dan }
sepele untuk program Java, karena boilerplate membutuhkannya.
|
dapat digunakan jika Anda memiliki atau kondisi, tetapi saya tidak bisa menemukan cara untuk mengambil keuntungan dari yang mengarah ke program yang lebih pendek daripada hanya menggunakan |
sebagai operator bitwise. Itu |0
membuat saya merasa sedikit kotor, karena itu satu-satunya bagian yang nop hanya untuk mendapatkan karakter di sana.
~0
hasil -1
, yang berguna karena itulah yang perlu kita periksa indexOf
. Menggabungkan ini dengan menggunakan !=
kondisional loop menghilangkan <
karakter sama sekali, yang berarti tidak perlu masuk ke dalam string kondisional.
0x20
untuk0x7e
, yang didefinisikan sebagai "karakter ASCII dicetak". Secara teknis tab dan baris baru sebenarnya adalah karakter kontrol.