sumber: Dilbert, 8 September 1992
Saya berharap untuk menambahkan sentuhan baru pada lagu klasik "Hello World!" program.
Kode program yang dihasilkan Hello World!
tanpa:
- String / Karakter literal
- Bilangan (basis apa saja)
- Fungsi pra-dibangun yang mengembalikan "Hello World!"
- Literal RegEx
Dengan pengecualian "O" † dan 0.
† "O" dikapitalisasi, "o" tidak dapat diterima.
code-golf
hello-world
restricted-source
zzzzBov
sumber
sumber
"O"*
berarti mereka dapat memiliki string literal dengan sejumlah O, termasuk nol. Saya kira itu bukan niatnya. Mohon klarifikasi.Jawaban:
Windows PowerShell, terlalu banyak
Ya, memang, pada hari kami harus menulis »Halo dunia« menggunakan (hampir secara eksklusif) nol ...
Pada catatan yang lebih serius:
Windows PowerShell, 25
Tidak ada string literal. Di
Hello World!
sana kebetulan diurai sebagai string karena PowerShell berada dalam mode parsing argumen di sana.sumber
C, 327 karakter
Anehnya, ia tidak kehilangan kecantikannya setelah preprocessing:
sumber
BrainFuck, 102
111karakterMemenuhi semua aturan.
Penghargaan untuk Daniel Cristofani .
sumber
0 and/or "O" must be used
. Ini agak kejam bagi BrainFuck dan skrip golf, tetapi mereka sebenarnya tidak mengalami kesulitan dengan tantangan ini.C, 182 byte
sumber
Program C - 45
(curang)
Selain itu, ini tidak menggunakan string literal atau regex literal. Itu mengambil keuntungan dari fitur pengerasan dari preprocessor C.
s(x)
adalah makro yang mengubah argumennya menjadi string.sumber
Haskell - 143 karakter
oy, itu berbulu!
Tidak ada angka, tidak ada operasi numerik, variabel diubah namanya menjadi hiburan.
Beberapa eksposisi mungkin bagus:
o%y
,o&y
, Dano!y
masing-masing berlaku fungsio
untuky
beberapa kali: 3, 9, dan 29 kali masing-masing. 29?!?! Ya, 29!r
danw
merupakan karakter berikutnya dan sebelumnya, yang bila diterapkan menggunakan fungsi tingkat tinggi di atas dapat dibuat untuk mendapatkan semua karakter yang dibutuhkan'O'
.Urutan lompatan yang dibutuhkan adalah:
$
, diganti namanya#
menjadi!
untuk Hugs.sumber
r=succ
danw=pred
menjalankan pertentangan tentang bagaimana Hugs mengimplementasikan pembatasan monomorfisme. Mengubah ker x=succ x
danw x=pred x
membuatnya berfungsi (dengan biaya 4 karakter). Ini tampaknya menjadi masalah dalam Pelukan.Unary ,
10 1971137672766964589547169964037018563746793726105983919528073581559828 byteSaya terkejut bahwa belum ada yang melakukan ini ...
Terlalu panjang untuk memposting di sini, tapi ini adalah 1137672766964589547169964037018563746793726105983919528073581559828 nol.
Atau, lebih mudah dibaca: ~ 10 67 nol.
Terima kasih kepada @dzaima karena telah menghemat 10 197 byte
sumber
Mathematica 12 karakter
Hanya simbol, tanpa string.
Itu! adalah operator faktorial, tetapi karena simbol Hello and World tidak terdefinisi, mengembalikan input tidak berubah.
Jika kita memodifikasi program sedikit:
Kemudian ia mencetak
12
(2 * 3!)sumber
perakitan i386 (Linux, sintaks gcc),
440442435Hari ini adalah hari kebaktian saya, dan setelah itu saya akan merasa cukup untuk sementara waktu.
Saya mengizinkan diri saya nomor 128, lihat program di bawah ini untuk pembahasan mengapa.Tidak ada yang luar biasa: Saya hanya menyandikan "Hello World!" sebagai opcodes perakitan di mana itu masuk akal tanpa konstanta numerik, dan diisi sisanya dengan aritmatika.(berkumpul dengan
gcc -nostartfiles hello.S -o hello
, mungkin-m32
tergantung pada lengkungan Anda)Mengapa toleransi untuk 128? Saya perlu syscalls untuk benar-benar menunjukkan apa pun; Syscall Linux menggunakan INT 80h (128 desimal); satu-satunya format operan untuk INT adalah langsung, jadi tidak mungkin untuk memiliki selain konstanta (ke kode) di sana. Saya bisa (setelah saya sadar) mencoba untuk mengungkapkannya sebagai fungsi konstanta simbolik lain dalam kode, mungkin n , tapi itu menjadi sangat membosankan karena tidak banyak mendapatkan. Saya membaca batasan angka sebagai cara untuk mencegah pengkodean ASCII, dan itu jelas bukan yang saya lakukan di sini, jadi saya merasa cukup tidak bersalah untuk mengirimkan ini. (FWIW, saya juga mencoba kode modifikasi diri, tapi itu segfaulted)Sekarang tidak ada 128 yang tersisa juga. Kodenya murni!mov
dengan makro CPP; menghilangkan sisa 128.sumber
Javascript - 305
Agak panjang tapi saya suka metode yang digunakan.
sumber
OO
,OOO
, tapi tentu saja itu akan membuatnya lagi.C # (131 karakter)
141 chars142 charsDapat dibaca:
sumber
enum X{Hello,World,A,B=A<<A<<A}void Main(){var c=(char)X.B;(X.Hello.ToString()+c+++X.World+c).Dump();}
.ToString()
->+""
menyimpan beberapa cahrsJavaScript, 88
99
Terima kasih banyak kepada @Timwi atas sarannya
operator ternary dihapus:
103
alias
String.fromCharCode
117
Beralih jika-lain ke operator ternary
125
Saya menjaga orang-orang yang
"O"
adil untuk memiliki "O" dalam program.133
sumber
GolfScript, 63 karakter
Apa, belum ada entri GolfScript?
Yang ini menggunakan literal numerik tunggal
0
dan variabel bernamaO
(yang digunakan untuk menyimpan nomor3
). Yang lainnya adalah manipulasi aritmatika dan stack. StringHello World!
dibangun dari kode ASCII-nya, karakter demi karakter.Begini cara kerjanya:
sumber
Brainfuck, 111 byte
Algoritma menjelaskan
Versi lebih lama tanpa loop, 389 byte:
sumber
Lua
1449786 karakterPendekatan yang berbeda, berdasarkan pada fakta bahwa kunci tabel juga adalah string, dan fakta bahwa #Hello == #World == 32 == string.byte '\ n'
145 solusi char
Apakah delta encoding dari byte, kemudian beberapa primenumber dll :)
Versi golf:
Berkomentar:
Sunting: Mengubah beberapa string O, dan menemukan beberapa optimalisasi yang lebih.
sumber
Python (
126130)sumber
''
tidak diizinkan.[:0]
.J, 250
Saya terlalu banyak bersenang-senang dengan yang ini, dan saya belajar sedikit lebih banyak untuk boot. Juga,
ooo ooo ooo
mungkin kode paling bodoh yang pernah saya tulis.sumber
QR dengan halfblocks
(169)121 karakterDengan QR-Code dengan menggunakan karakter setengah blok UTF-8:
Sayangnya, ini tidak akan ditampilkan dengan baik di sana. Ada potongan kecil dengan style sheet yang sesuai, tapi .. Tidak! Bahasa yang disajikan di sini bukan HTML! Bahasa yang disajikan di sini adalah QR Code ! (HTML dan CSS digunakan di sini hanya untuk mengatasi bug presentasi!)
Tampilkan cuplikan kode
QR dengan halfblocks (169)
Idealnya, ini bisa terlihat seperti:
sumber
zbar
bawah linux. (sampel:xwd | xwdtopnm | zbarimg /dev/stdin
)Code golf!
karakter literal?postscript
,svg
atau bahasa presentasi lain yang sudah digunakan di sana !? Sebuah cara untuk encode adalah bahasa pula ... saya pikir!Scala (
357423361 karakter)Bukan jawaban terpendek, sayangnya, tetapi berharap untuk mendapatkan nilai bonus untuk penggunaan
'O'
dan'0'
Sebelumnya:
Versi lama (ilegal):
sumber
""
) dan string / karakter literal yang berisi karakter nol ('0'
) tidak diperbolehkan. Hanya string"O"
(modal O) dan jumlahnya0
.C (atau C ++) (segmen tubuh: 49) (curang)
saat kompilasi, kompilasi ke biner yang dipanggil
Hello\ World\!
, kode tersebut adalah:The
strrchr
segmen diperlukan untuk menghapus path lengkap di ajang nama program berlalu di berisi path lengkap, juga tidak ada argumen harus dilalui dalam ..Baris kompilasi umum dapat:
gcc -o Hello\ World\! foo.c
sumber
C ++, 141,
146Pertama kali mencoba salah satunya, mungkin bisa sedikit ditingkatkan:
SUNTING:
Mencuri trik membagi dari pos lain, tidak percaya saya tidak memikirkan itu :(
sumber
std::
, dll.Haskell - 146
Saya pikir pencocokan pola akan memberikan Haskell kaki besar, khususnya karena Anda dapat menginisialisasi kekuatan dua seperti:
Namun, seperti yang terlihat pada jawaban Haskell dari MtnViewMark (yang pantas mendapatkan banyak upvotes, dan jawaban lainnya), kompresi yang lebih baik dapat dicapai dengan menggunakan lebih dari sekadar
+
dan-
.sumber
Clojure - 46 karakter
Catat itu
Hello
danWorld!
merupakan simbol, bukan literal apa pun.sumber
C ++
sumber
100
melanggar aturan tentang angka. Silakan ganti dengan sesuatu yang lebih lucu.Line 7: error: ISO C++ forbids declaration of 'main' with no type
int
pada g ++PHP - 49 karakter
Changelog :
sumber
<?$a=-~-~-~0;echo Hello.chr($a.$a-1).World.chr($a.$a);
berfungsi, tetapi 54 karakter.1
di sana. Di sana saya melanggar aturan saya sendiri ...<?$a=-~-~-~0;echo Hello,chr($a.~-$a),World,chr($a.$a);
adalah apa yang seharusnya saya gunakan, masih 54 karakter.Python, 106
sumber
Perl, 186 byte
Setiap karakter dicetak melalui nomor urutnya, yang merupakan panjang array. Konstruksi array dioptimalkan melalui representasi biner dari nomor karakter.
Tidak Terkumpul:
sumber
Java 389 karakter
melihat deklarasi yang tidak perlu
Riwayat ada dalam riwayat sunting sekarang versi ungolfed asli dapat dibaca:
sumber
Perl 6 , 199 byte
(baris baru ditambahkan untuk mengurangi lebar, tetapi tidak perlu jadi tidak dihitung)
Hello World!
dikodekan sebagai daftar daftar kekuatan 2 setiap huruf.Tepat ada satu tempat di mana saya memiliki literal
0
yang digunakan untuk apa pun selain a0
. Ini digunakan untuk membuat daftar satu elemen, yang segera diubah menjadi nomor1
dengan operator awalan numerik (+[0]
).sumber
JavaScript 662 karakter
Bagaimana dengan menyalahgunakan array literal hanya untuk memiliki basis unary. Program ini memiliki keuntungan karena tidak digunakan
0
.sumber
0
. Bagaimana denganO_O=0;
?O_O=[].length
dapat ditulis sebagaiO_O=false
yang mengurangi oleh 4.