Bos Anda meminta Anda untuk menulis program "hello world". Karena Anda dibayar untuk baris kode, Anda ingin membuatnya serumit mungkin. Namun, jika Anda hanya menambahkan baris omong kosong, atau hal-hal yang jelas tidak berguna atau membingungkan, Anda tidak akan pernah mendapatkannya melalui ulasan kode. Karena itu tantangannya adalah:
Tulis program "halo dunia" yang serumit mungkin dengan syarat Anda dapat memberikan "pembenaran" untuk setiap kompleksitas dalam kode.
Perilaku yang diperlukan dari program ini adalah hanya mengeluarkan satu baris "Hello world" (tanpa tanda kutip, tetapi dengan baris baru di akhir) dan kemudian keluar dengan sukses.
"Pembenaran" meliputi:
- kompatibilitas kata kunci ("Perangkat lunak modern berorientasi objek!")
- praktik pemrograman yang baik yang diterima secara umum ("Semua orang tahu bahwa Anda harus memisahkan model dan tampilan")
- rawatan ("Jika kita melakukannya dengan cara ini, kita dapat lebih mudah melakukan XXX nanti")
- dan tentu saja pembenaran lain yang dapat Anda bayangkan menggunakan (dalam situasi lain) untuk kode nyata.
Jelas pembenaran konyol tidak akan diterima.
Selain itu, Anda harus "membenarkan" pilihan bahasa Anda (jadi jika Anda memilih bahasa yang secara inheren verbose, Anda harus membenarkan mengapa itu adalah pilihan yang "benar"). Bahasa menyenangkan seperti Unlambda atau Intercal tidak dapat diterima (kecuali Anda dapat memberikan justifikasi yang sangat baik untuk menggunakannya).
Skor entri yang memenuhi syarat dihitung sebagai berikut:
- 1 poin untuk setiap pernyataan (atau apa pun yang setara dengan pernyataan dalam bahasa pilihan Anda).
- 1 poin untuk setiap definisi fungsi, tipe, variabel dll (dengan pengecualian fungsi utama, jika berlaku).
- 1 poin untuk setiap pernyataan penggunaan modul, file termasuk direktif, namespace menggunakan pernyataan atau yang serupa.
- 1 poin untuk setiap file sumber.
- 1 poin untuk setiap deklarasi maju yang diperlukan (jika Anda bisa menghilangkannya dengan menyusun ulang kode, Anda harus "membenarkan" mengapa pengaturan yang Anda pilih adalah yang "benar").
- 1 poin untuk setiap struktur kontrol (jika, sementara, untuk, dll.)
Ingatlah bahwa Anda harus "membenarkan" setiap baris.
Jika bahasa yang dipilih cukup berbeda sehingga skema ini tidak dapat diterapkan (dan Anda dapat memberikan "justifikasi" yang bagus untuk penggunaannya), harap sarankan metode penilaian yang paling mirip dengan yang di atas untuk bahasa pilihan Anda.
Para kontestan diminta untuk menghitung skor entri mereka dan menuliskannya dalam jawaban.
sumber
Jawaban:
C ++, trollpost
Otak saya tidak bisa membenarkan menulis yang lebih lama :)
sumber
Di sini saya akan menunjukkan kekuatan dan kegunaan bahasa scripting yang disebut Python dengan menyelesaikan tugas yang agak rumit dengan cara yang anggun dan efisien melalui operator bahasa scripting yang disebutkan di - dan generator - struktur data seperti daftar dan kamus .
Namun, saya khawatir saya tidak sepenuhnya memahami penggunaan frasa "serumit mungkin" dan "pembenaran". Namun demikian, ini adalah ikhtisar dari strategi saya yang biasa, cukup jelas dan lurus ke depan, diikuti oleh implementasi aktual dalam Python yang akan Anda temukan, cukup benar untuk sifat suka-main, tingkat tinggi bahasa:
Tentukan alfabet - langkah pertama yang jelas. Untuk perluasan, kami memilih seluruh rentang ascii. Perhatikan penggunaan generator daftar built-in yang dapat menghemat waktu berjam-jam untuk inisialisasi daftar yang membosankan.
beri tahu berapa banyak setiap huruf dalam alfabet yang akan kita gunakan. Ini hanya direpresentasikan sebagai daftar lain!
Gabungkan kedua daftar ini menjadi satu kamus praktis, di mana kuncinya adalah titik ascii dan nilainya adalah jumlah yang diinginkan.
Kami sekarang siap untuk mulai membuat karakter! Mulailah dengan membuat serangkaian karakter dari kamus. Ini akan berisi semua karakter yang kita butuhkan dalam hasil akhir kita, dan jumlah yang tepat dari masing-masing karakter!
Nyatakan urutan karakter yang diinginkan dan mulai daftar baru yang akan menampung hasil akhir kita. Dengan iterasi sederhana, kami akan menempatkan karakter yang dihasilkan ke posisi akhir mereka dan mencetak hasilnya!
Inilah implementasi sebenarnya
Ok, Hanya pergi untuk yang pendek tapi bodoh dan menambahkan banyak teks daripada solusi kode TL; DR
sumber
n
sini termasuk 1 baris atau 11?Dart's Hello World dikompilasi ke JS (2 936 012)
http://code.google.com/p/dart/issues/detail?id=14686
(Saya akan membiarkan Google membenarkannya)
sumber
Scala, skor: 62
Oke, saya melempar topiku ke atas ring.
ContentProvider.scala:
HWCChain.scala:
HHWCChain.scala:
eHWCChain.scala:
theLThing.scala:
indexedLHWCChain.scala:
theOThing.scala:
indexedOHWCChain.scala:
BlankHWCChain.scala:
WHWCChain.scala:
rHWCChain.scala:
dHWCChain.scala:
TermHWCChain.scala:
HelloWorldCharChainChecker.scala:
Tentu saja, untuk pendekatan fungsional murni, 0 variabel bau. Semuanya ditata dalam sistem tipe dan lurus ke depan. Kompiler yang cerdik dapat mengoptimalkannya hingga habis.
Programnya jelas, sederhana dan mudah dimengerti. Sangat mudah diuji dan generik dan menghindari jebakan overengineering (tim saya ingin mengubah kode diindeks.
sumber
complex
seperti yang diminta pertanyaan asli. Itu sangatverbose
. Ada perbedaan.Pure Bash no fork (jumlah tertentu, tampaknya sekitar 85 ...)
Fitur :
gzip
danuuencode
melaluiperl
(lebih umum diinstal daripadauudecode
)Lengkap menulis ulang (koreksi bug, gambar ascii-art dan dua tingkat):
(Kunci yang digunakan
V922/G/,2:
didasarkanHelloWorld
juga, tapi itu tidak masalah;)Hasil (seperti yang diminta):
Ada versi lain:
Menggunakan kunci yang sama dan dapat membuat sesuatu seperti:
sumber
Semua orang tahu bahwa Hukum Moore telah mengambil giliran baru, dan bahwa semua kemajuan nyata dalam daya komputasi dalam dekade mendatang akan datang dalam GPU. Dengan mengingat hal itu, saya telah menggunakan LWJGL untuk menulis program Hello World yang sangat cepat yang sepenuhnya memanfaatkan GPU untuk menghasilkan string "Hello World."
Karena saya menulis java, adalah idiomatis untuk memulai dengan menyalin dan menempelkan kode orang lain, saya menggunakan http://lwjgl.org/wiki/index.php?title=Sum_Example
sumber
Majelis (x86, Linux / Elf32): 55 poin
Semua orang tahu bahwa ketika Anda menginginkan program cepat, Anda harus menulis dalam pertemuan.
Kadang-kadang kita tidak bisa mengandalkan
ld
melakukan tugasnya dengan benar - Untuk kinerja yang optimal, lebih baik untuk membangun header Elf kita sendiri untuk menjalankan hello world kita. Kode ini hanyanasm
perlu dibuat, sehingga sangat portabel. Itu tidak bergantung pada pustaka atau runtime eksternal.Setiap baris dan pernyataan sangat penting untuk memfungsikan program dengan benar - tidak ada kesalahan, tidak ada yang bisa dihilangkan.
Selain itu, ini benar-benar cara tercepat untuk melakukannya tanpa menggunakan tautan - tidak ada loop atau pernyataan yang tidak perlu untuk membungkam jawabannya.
Mencetak gol
org
,db
,dw
,dd
,equ
,global _start
): 37dd _start
,dd filesize
,dw ehdrsize
,dw phdrsize
: 4ehdr:
,phdr:
,section .data,
,section .text
,_start:
): 5sumber
PHP / HTML / CSS (88pts)
Semua kode tersedia di sini: https://github.com/martin-damien/code-golf_hello-world
index.php
autoload.php
kelas / Halaman.php
kelas / Judul.php
kelas / XMLElement.php
desain / stylesheet / hello_world.css
desain / templat / tata letak / pagelayout.twig
desain / templat / halaman / hello_world.twig
sumber
Brainfuck
369 ekspresi, 29 saat loop = 398
Keluaran dari K&R Contoh Bahasa Pemrograman C:
sumber
Ti-Basic 84, 1 Poin
Ti-Basic sangat mendasar. Tetapi jika Anda benar-benar menginginkan penjelasan yang masuk akal, ini dia:
:
mulai setiap perintah, fungsi, pernyataan, struktur, subprogram, sebut sajaDisp
adalah fungsi yang ditentukan sebelumnya yang menampilkan parameter pada layaralias
whitespace
Memungkinkan fungsiDisp
tahu bahwa ia telah dipanggil dan parameter harus mengikuti karakter tunggal spasi putih yang sebenarnya disisipkan bersama denganDisp
"
Mulai mendefinisikan string literalHELLO WORLD
Bagian dari teks dalam string literal!
Meskipun merupakan operator matematika faktorial, ia tidak dievaluasi karena berada di dalam string literal"
Mengakhiri definisi string literalsumber
Jadi, saya punya manajer yang sangat ... ... ... aneh. Dia memiliki gagasan aneh bahwa semakin sederhana suatu program, semakin indah, semakin artistik seharusnya. Karena
Hello World
ini bisa dibilang salah satu program termudah untuk menulis, ia telah meminta sesuatu yang begitu hebat sehingga ia bisa menggantung di dinding. Setelah melakukan riset, dia bersikeras bahwa benda itu dituliskan dalam Piet.Sekarang, saya bukan orang yang mempertanyakan manfaat orang paling cerdas yang pernah berada di bawah manajemen puncak, jadi saya ditugaskan untuk "menulis" program ini, yang dapat dijalankan pada penerjemah piet online ini. Mungkin sudah waktunya mencari manajer yang lebih waras ...
sumber
Sebuah Lipogram di C:
Mereka tahu 'w' dan 'r' pada komputer saya adalah brokn. Ini masalah dengan beberapa bahasa. Hampir semua petunjuk pr-compilr dalam Ct kita bahwa lttr. Cod di atas mengeluarkan peringatan tentang dclaration implisit dari printf (), karena saya tidak bisa menggunakan #includ (stdio.h), tetapi ia menjalankan fin.
sumber
Aku akan memasang ini untuk referensi sebagai komunitas wiki. Ini adalah C # satu dengan praktik buruk. Saya mendefinisikan struktur data ascii saya sendiri. Saya tidak ingin ini menjadi pesaing melainkan "Nak, Anda lihat pria di sana ... jika Anda tidak makan sayuran, Anda akan menjadi seperti dia" misalnya.
JIKA ANDA MUDAH DISEBUTKAN OLEH KODE BURUK LIHAT SEKARANG
Saya biasanya menggunakan ini untuk menakuti anak-anak di Halloween. Anda juga harus mencatat bahwa saya tidak dapat memuat semua 256 karakter ASCI saya di sini karena total karakter mencapai sekitar 40.000. Jangan mencoba dan mereproduksi ini karena 2 alasan:
Jadi uhh ... ya "nikmatilah!". Juga jika Anda menikmati pembersihan dan meningkatkan kode batuk review kode batuk ini bisa membuat Anda sibuk untuk sementara waktu jika Anda mencari pekerjaan yang tidak menguntungkan.
sumber
Saya akan menambahkan beberapa komentar nanti.
sumber
main
kelasMain
:ConsoleDisplay
tidak memiliki anggota bernamagetInstance
. Apakah maksud AndaConsoleDisplayFactory
? BTW, tolong sebutkan bahasa secara eksplisit (Java kurasa) dan poinnya.Poin: 183
System
? Yah, bagaimanapun, katakanlah 0.MustOverride
, yang akan saya hitung.Total: 62 + 43 + 0 + 1 + 1 + 76 = 183
Masuk
Dokumentasi
OptimizedStringFactory
memegang string dioptimalkan. Ini memiliki cache yang memungkinkan referensi ke efisienIEnumerable(Of Char)
untuk digunakan, sambil menghindari masalah referensi yang melekat. Telah menarik perhatian saya bahwa .NET mencakup beberapa jenis string pool. Namun, cache bawaan tidak cukup tahu tentang objek yang kami gunakan - itu tidak bisa diandalkan, jadi saya telah membuat solusi saya sendiri.ConcurrentOutputCharacter
kelas memungkinkan untuk mudah sinkronisasi multithreaded, keluaran karakter tunggal. Ini menghentikan output dari menjadi kacau. Dalam praktik terbaik pemrograman berorientasi objek, itu dinyatakanMustInherit
dan setiap karakter atau string ke output berasal darinya, dan juga dideklarasikanNotInheritable
. Ini berisi beberapa pernyataan untuk memastikan data yang valid diteruskan.*Character
- masing berisi satu karakter untuk kasus khusus dari output string kami.Cantik bukan?
Ini bahkan dapat diperpanjang, karena loop dan pewarisan yang disebutkan di atas, ditambah pemuatan kelas dinamis dan berbasis refleksi. Ini juga mencegah kebingungan berlebihan, sehingga tidak ada yang bisa mengklaim kode kami dengan mengaburkannya. Untuk mengubah string, cukup buat kamus yang memetakan karakter input ke kelas karakter output yang berbeda sebelum kode refleksi memuatnya secara dinamis.
sumber
Javascript, BANYAK poin
Kita mulai:
sumber
Program C untuk Hello World: 9 (?)
Kombinasi Karakter ASCII dan array karakter yang mengandung integer! Pada dasarnya, Mencetak Setiap digit dalam format karakter.
sumber
Python menggunakan pernyataan if-else
Penjelasan
Ini membuat kamus nilai ASCII dan karakter terkaitnya karena akan mengizinkan kode hanya menggunakan nilai-nilai itu dan tidak ada yang lain. Kami memastikan bahwa kami mereferensikan vokal dalam daftar terpisah dan kemudian diketahui bahwa karakter terakhir kedua terulang di kedua string.
Setelah melakukannya, kami membuat daftar kamus dengan aturan yang menetapkan mendefinisikan panjang kata, karakter pertama, terakhir, dan berulang, dan kemudian juga menetapkan pernyataan benar / salah untuk jika pengulangan harus diperiksa.
Setelah ini selesai, skrip iterate melalui daftar kamus dan mengumpankannya melalui fungsi yang menciptakan semua permutasi karakter yang mungkin dari kamus referensi, berhati-hati untuk menambahkan karakter berulang jika diperlukan.
Setelah itu, kemudian diumpankan melalui fungsi kedua yang menciptakan permutasi lebih banyak untuk setiap permutasi, tetapi menetapkan panjang maksimum. Ini dilakukan untuk memastikan bahwa kita menemukan kata-kata yang ingin kita selesaikan. Selama proses ini, kemudian feed itu melalui fungsi yang menggunakan kombinasi pernyataan if-else yang menentukan apakah layak untuk dimuntahkan. Jika permutasi cocok dengan apa yang diminta oleh pernyataan, itu kemudian memuntahkan pernyataan benar / salah dan fungsi yang memanggilnya menambahkannya ke daftar.
Setelah ini selesai, skrip kemudian mengambil item pertama dari setiap daftar dan menggabungkannya untuk menyatakan "hello world".
Saya menambahkan beberapa fitur debug juga untuk memberi tahu Anda seberapa lambatnya. Saya memilih untuk melakukan ini karena Anda tidak perlu menulis "hello world" untuk mengeluarkannya "hello world" jika Anda tahu cara membuat kalimat.
sumber
Ya, ini bagus.
sumber
Golf-Basic 84, 9 Poin
Penjelasan
Tanyakan kepada pengguna apakah mereka ingin berhenti
Catat jawaban mereka
Jika mereka memang ingin mengakhiri, itu berakhir
Jika tidak berakhir, ia akan mencetak Hello World.
sumber
Hash dan kemudian brute-force de-hashes karakter untuk "Hello, World!", Menambahkannya ke a
StringBuilder
, dan mencatatnya dengan Logger.sumber
C # - 158
Saya memberi tahu Anda apa, pengembang hari ini, tidak memperhatikan prinsip SOLID. Orang-orang dewasa ini mengabaikan betapa pentingnya melakukan bahkan tugas-tugas sederhana dengan benar.
Pertama, kita perlu mulai dengan persyaratan:
Pertama, mari kita mulai dengan pelokalan. Untuk melokalisasi string dengan benar, kita perlu alias untuk menggunakan string dalam program, dan lokal yang kita inginkan untuk string. Kita jelas perlu menyimpan data ini dalam format yang mudah dioperasikan, XML. Dan untuk melakukan XML dengan benar, kita perlu skema.
StringDictionary.xsd
Ini mendefinisikan struktur XML kami dan membuat kami memulai dengan baik. Selanjutnya, kita perlu file XML itu sendiri, berisi string. Jadikan file ini sumber yang disematkan dalam proyek Anda.
Dengan hal itu, satu hal yang benar-benar tidak kita inginkan adalah string kode keras dalam program kita. Gunakan Visual Studio untuk membuat sumber daya dalam proyek Anda yang akan kami gunakan untuk string kami. Pastikan untuk mengubah
XmlDictionaryName
agar sesuai dengan nama file string XML Anda yang ditentukan sebelumnya.Karena kita adalah inversi dependensi, kita memerlukan wadah dependensi untuk menangani pendaftaran dan pembuatan objek kita.
IDependencyRegister.cs
IDependencyResolver.cs
Kami dapat menyediakan implementasi sederhana dari kedua antarmuka ini secara bersamaan dalam satu kelas
DependencyProvider.cs
Mulai dari level terendah dan terus maju, kita perlu cara untuk membaca XML. Mengikuti
S
danI
dalam SOLID, kami mendefinisikan antarmuka yang menggunakan kode kamus string XML kami:Memikirkan desain yang tepat untuk kinerja. Mengambil string ini akan berada di jalur kritis pada program kami. Dan kami ingin memastikan bahwa kami selalu mengambil string yang benar. Untuk ini, kita akan menggunakan kamus yang kuncinya adalah hash dari nama string dan lokal, dan nilainya berisi string yang diterjemahkan. Sekali lagi, mengikuti prinsip tanggung jawab tunggal, kamus string kami seharusnya tidak peduli bagaimana string di-hash, jadi kami membuat antarmuka, dan menyediakan implementasi dasar
IStringHasher.cs
Sha512StringHasher.cs
Dengan ini, kita dapat mendefinisikan penyimpanan string XML yang membaca file XML dari sumber daya yang disematkan, dan membuat kamus berisi definisi string
EmbeddedXmlStringStore.cs
Dan
StringInfo
struktur terkait untuk menyimpan informasi string:StringInfo.cs
Karena kita mungkin memiliki beberapa cara untuk mencari string, kita perlu mengisolasi sisa program dari bagaimana tepatnya string diambil, untuk melakukan ini, kita mendefinisikan
IStringProvider
, yang akan digunakan sepanjang sisa program untuk menyelesaikan string:ILocaleStringProvider.cs
Dengan implementasi:
StringDictionaryStoreLocaleStringProvider.cs
Sekarang, untuk menangani lokal. Kami mendefinisikan antarmuka untuk mendapatkan lokal pengguna saat ini. Mengisolasi ini penting, karena program yang berjalan di komputer pengguna dapat membaca lokal proses, tetapi di situs web, lokal pengguna mungkin berasal dari bidang basis data yang dikaitkan dengan pengguna mereka.
ILocaleProvider.cs
Dan implementasi default yang menggunakan budaya proses saat ini, karena sampel ini adalah aplikasi konsol:
Program kami yang lain tidak terlalu peduli apakah kami menyajikan string terlokalisasi atau tidak, sehingga kami dapat menyembunyikan pencarian lokalisasi di balik antarmuka:
IStringProvider.cs
Implementasi kami dari StringProvider bertanggung jawab untuk menggunakan implementasi yang disediakan
ILocaleStringProvider
danILocaleProvider
untuk mengembalikan string yang dilokalkanDefaultStringProvider.cs
Akhirnya, kami memiliki titik masuk program kami, yang menyediakan akar komposisi, dan mendapatkan string, mencetaknya ke konsol:
Program.cs
Dan begitulah cara Anda menulis program Hello World enterprise, siap pakai, perusahaan lokal, Hello World.
Skor: File: 17 Namespace Termasuk: 11 Kelas: 14 Variabel: 26 Metode: 17 Pernyataan: 60 Aliran Kontrol: 2 Deklarasi Maju (Anggota antarmuka, kompleks xsdJenis): 11 Total: 158
sumber
iX2Web
sumber