Tulis program yang tidak mengambil input dan mencetak Hello, World!
ke stdout atau alternatif terdekat bahasa Anda. Tangkapannya adalah bahwa setiap baris dalam program Anda hanya harus berisi karakter ASCII yang dapat dicetak dan harus dalam urutan leksikografis, alias disortir.
Berikut adalah 95 karakter ASCII yang dapat dicetak secara berurutan:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Jadi, misalnya, saluran !!A0~
akan tidak valid karena A
dan 0
tidak berfungsi. Baris !!0A~
tersebut akan valid.
Setiap baris dalam program Anda mungkin panjangnya dan mungkin ada sejumlah baris. Garis kosong dianggap diurutkan. Setiap baris baru dalam program Anda harus sama (tanpa pencampuran \n
dan \r\n
). Tab dan karakter ASCII yang tidak dapat dicetak lainnya dilarang.
Karena permintaan populer , kondisi kemenangan telah berubah:
Pengajuan dengan garis paling sedikit menang. Tiebreaker pergi ke program terpendek (baris baru dihitung sebagai karakter tunggal).
Hanya Hello, World!
dan baris tambahan opsional yang harus dikeluarkan. Perhatikan bahwa HQ9 + tidak valid karena hasilnya hello, world
. Saya mungkin melarang bahasa yang mirip dengan HQ9 + yang memiliki satu karakter "Halo, Dunia!" perintah karena hal-hal sepele mereka.
Petunjuk:
Ini sangat mungkin dilakukan di Unary dan Bahasa , meskipun tidak terlalu ringkas.
sumber
Jawaban:
Headecks , 1 baris, 366 byte
Headsecks adalah substitusi Brainfuck yang sepele di mana satu-satunya hal yang penting adalah kodeo modulo 8. Brainfuck yang setara hanyalah
Untungnya pendekatan naif ini hanya cocok. Ada beberapa potensi untuk menurunkan byte, tetapi mungkin sulit.
Diuji menggunakan juru bahasa Python ini .
Menghasilkan kode
sumber
/// , 7 baris, 22 byte
Kesempatan langka untuk /// menjadi kompetitif (juga selama tidak ada yang memulai dengan Unary dan Bahasa ...).
Kode pertama kali bertemu a
/
, dan mem-parsingsebagai instruksi substitusi yang menghapus semua baris baru dari sisa program. Setelah itu, program hanya membaca
yang dicetak kata demi kata karena tidak mengandung garis miring lebih lanjut.
sumber
JavaScript (
676662 baris,227269 byte)(Catatan: hanya diuji pada Firefox 36 dan Safari 8, berisi fitur ES6 kecil (
Set
kelas))Kode di atas pada dasarnya tidak:
Jelas
alert
tidak diurutkan. Jadi alih-alih kita perlu membuat pernyataan sebagai string, dan "eval" itu:Bagaimana cara menghasilkan string? ES5 mendukung kelanjutan garis sehingga
Tetapi kode karakter
\
muncul sebelum semua huruf kecil, jadi kita harus membuat huruf kecil menggunakan metode lain.Kami meminjam beberapa gagasan tentang JSFuck di sini. Huruf kecil yang terlibat dalam pernyataan peringatan adalah:
semua ini dapat diekstraksi dari karakter objek standar, yang dapat dinyatakan dalam beberapa urutan yang diurutkan:
Bagaimana kita mengevaluasi string? Tentunya kita tidak bisa menggunakan
eval(s)
karena tidak diurutkan. Atau kita dapat menggunakanFunction(s)()
, tetapi kita tidak dapat menggunakanFunction
karena tidak diurutkan juga. Namun,Function
adalah konstruktor dari semua fungsi, yang artinyaSet.constructor === Function
.Menambahkan pengenal
constructor
membuat daftar huruf kecil menjadi:yang untungnya masih bisa dihasilkan oleh
"truefalseundefinedfunction"
:Setelah prettifying, kode di atas seharusnya berbunyi seperti:
Update: Berganti nama
E
,L
,O
,R
,T
berbagai pengulangan$
untuk mengurangi 4 baris.sumber
=Z[3*7]
dapat ditulis sebagai=Z[~-22]
yang hanya membutuhkan satu baris bukan dua.Insomnia , 4 baris, 59 byte
Program ini dihasilkan dengan mengoptimalkan jumlah baris.
10 baris, 43 byte
Program di atas ini dihasilkan dengan mengoptimalkan jumlah byte.
sumber
Cygwin bash, 16 baris, 60 byte
Ini hanya berfungsi karena nama file case-insensitive pada Windows, dan fakta bahwa Cygwin mencari utilitas case-insensitive bahkan jika Anda tidak mengaturnya untuk mengenali path case-insensitive.
Catat itu
ECHO
di akhir.sumber
> <> , 6 baris, 111 byte
Saya mengalami kesulitan bermain golf di jalur tambahan, tetapi bagaimanapun saya senang telah mengalahkan metode 7-line.
Penjelasan
> <> adalah bahasa 2D berbasis stack di mana instruksi adalah karakter tunggal dan aliran program bisa naik, turun, kiri atau kanan. The
"
instruksi matikan parsing string, mendorong chars sampai penutupan suatu"
terpenuhi, tetapi karena sifat> <> tidak ada hal seperti "multi-line parsing string" seperti dengan string CJam atau tiga senar dikutip Python. Ini ternyata menjadi masalah besar karena memulai dan mengakhiri garis dengan a"
dan memiliki karakter lain di antara (misalnya"some chars"
) tidak diperbolehkan!Perhatikan itu
/
dan\
mencerminkan aliran program, jadi kami benar-benar mengeksekusi baris pertama kemudian semua baris dalam urutan terbalik, dan sebagian besar baris sebenarnya dieksekusi mundur!Di samping catatan, inilah upaya yang lucu di> <> paling tidak byte (23 baris, 47 byte):
sumber
CJam,
54 baris, 162 byteJumlah baris yang sama dengan Insomnia! (tapi lebih banyak byte)
Cobalah online .
Penjelasan
CJam secara otomatis mencetak tumpukan setelahnya.
Terima kasih kepada @Optimizer untuk mengingatkan saya bahwa itu
Sc
berfungsi, karena jika tidakSX|
gagal (ia melakukan setwise atau sebaliknya, memberikan array yang terdiri dari spasi dan 1).sumber
> <> (Ikan) , 5 baris, banyak byte
Kode ini sangat panjang, ketika saya katakan
[6535529689086686142930090 '+' signs]
dan[6535529689086686142930090 'd' characters]
di baris pertama kode, maksud saya ada6535529689086686142930090
tanda plus secara berturut-turut!(Dan untuk baris berikut tambahkan spasi awalan yang diperlukan.)
Alternatif yang dapat diuji lebih pendek yang hanya mencetak
Hi
:Metode:
:1(?;:882**%:o-288**,
.(Kami dapat mencetak string panjang 2+ karakter acak dengan metode ini.)
sumber
[6535529689086686142930090 '+' signs]
dan[6535529689086686142930090 'd' characters]
secara harfiah di baris pertama kode." (Jika tidak jelas apa yang saya maksud dengan itu, periksa kode kedua.)PHP (7/17 baris, 36/59 byte):
Karena jumlah jawaban yang tidak valid, saya menulis ulang jawaban ini.
Versi peramban? Hilang.
Tapi saya punya 2 solusi, keduanya berdasarkan bitwise
xor
(^
) dari string di PHP.Ini adalah solusi yang sangat kuat! Terkadang, ini memungkinkan untuk menyimpan banyak byte.
Pertama, jawaban terpendek:
Saya tahu, ini terlihat mengerikan, tetapi berhasil!
Yang berikutnya tergantung pada baris baru.
Ya, ia menggunakan baris baru (
\n
/ gaya UNIX diperlukan)!Baris baru yang satu ini diperlukan untuk bekerja.
Itu tidak sempurna, tetapi berhasil!
Kedua jawaban didasarkan pada @ MartinBüttner 's solusi :
Terima kasih khusus kepada @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner dan @skagedal untuk mendeteksi semua kesalahan saya dan atas saran mereka.
sumber
Hello , Wor l d !
. Perhatikan ruang ekstra! Sayangnya, ini bukan jawaban yang valid.<?php
yang tidak valid! Namun, aku akan memaafkanmu untuk ini! OK, baru saja diuji<?Php
mana yang berfungsi, jadi saya baru tahu bahwa tag awal tidak peka huruf besar-kecil!"!<br
- ini tidak diurutkan. Yang kedua sebagai baris 10:."!
- tidak diurutkan.Pyth, 7 baris, 23 byte
Cukup sederhana, cukup gunakan string multiline dan hapus baris baru.
Coba di sini.
sumber
Keempat, 41 baris, 143 byte
Cobalah online.
Saya sangat bangga dengan ini. Saya mencabutnya dengan cepat begitu saya tahu saya bisa melakukannya, setelah Google mencari bahasa yang tidak peka terhadap huruf besar-kecil, dan saya sudah mengenal Forth dengan baik. Ini hampir pasti dapat dipersingkat, baik byte dan garis. Saran sangat dihargai. : D
Program ini pada dasarnya mendorong nilai desimal dari setiap karakter ASCII, lalu mencetak masing-masing. Saya mencoba untuk mengoptimalkan sementara saya menulisnya, karena itu kurang dapat dibaca daripada yang saya inginkan.
sumber
Emit
garis tidak bekerja, sepertii
(105) kurang darim
(109).Marbelous, 9 baris, 94 byte
Uji secara online di sini.
Using spaces for blank cells
harus diperiksa.Representasi visual dari sumber:
Penjelasan: Setiap nilai heksadesimal dalam program ini bergerak ke bawah setiap "centang" (kecuali jika aktif
\\
, dalam hal ini bergerak ke kanan).++
akan menambah nilai,--
mengurangi,~~
menerapkan bitwise tidak, dll. Nilai yang jatuh dari bagian bawah dicetak sebagai karakter ASCII.Misalnya: Di
33
sudut atas menjadi(((0x33 +1 +1) << 1) +1 +1 = 0x6C (l)
.sumber
Perl, 17 baris
sumber
Rebol - 15 baris (51 byte)
Kata-kata dalam Rebol tidak peka huruf besar-kecil (mis.
PRINT
,Print
Danprint
semuanya akan memanggil fungsi yang sama).Kode di atas dirapikan:
NB.
sp
mengembalikan char ruang !sumber
{
tidak bisa sebelum surat apa pun.{,}
. Ini sekarangSp + 12
(lebih dari 3 baris) yang setara dengan karakter spasi + 12 (mis. Koma)Unary , 1 baris, banyak byte
Setiap karakter dalam program ini adalah
0
. Sumbernya terlalu panjang untuk dimasukkan di sini, tetapi terdiri dari string dari banyak nol ini:Ini adalah representasi desimal untuk angka biner ini:
Yang dibuat dari program BrainF *** ini:
Lihat bagaimana saya membuatnya: http://ideone.com/lMT40p
sumber
Batch - 39 Lines (202 bytes)
Saya ingin mengurangi ukuran dengan mengaktifkan ekspansi yang tertunda dengan menjalankan kode di dalam
cmd
panggilan menggunakan/v on
sakelar, tetapi tidak dapat melewati semua karat.Tanpa baris baru (dan karat untuk keluar dari baris baru):
sumber
Ruby, 19 baris, 95 byte
Mungkin pembatasan kode tersulit kedua untuk Ruby yang pernah saya lihat di situs ini, setelah monstrositas di sini .
Edit untuk penjelasan: Satu-satunya metode keluaran Ruby yang diurutkan adalah
<<
metode pada STDOUT. Sayangnya, konstanta untuk STDOUT adalah$>
, dan>
ASCII lebih tinggi daripada kebanyakan simbol, sehingga tidak mungkin untuk memanggil metode di atasnya. Kita memerlukan pernyataan penugasan multi-baris untuk memasukkannya ke nama variabel yang lebih bisa ditelusuri,$;
(titik koma masih cukup tinggi, tetapi sebagian besar variabel dari formulir ini tidak dapat ditentukan, atau hanya berupa string).Simbol (
:Wor
, dll.) Adalah cara termudah untuk melakukan literal, dan saya tidak melihat cara untuk menghapus baris baru dari string, jadi saya perlu beberapa pernyataan cetak. Ruang dan tanda baca tidak bisa masuk ke simbol literal, tapi untungnyachr
metode angka itu legal, jadi saya bisa mendapatkan karakter dari nilai ASCII-nya.::
adalah cara alternatif untuk memanggil metode. Space rumit karena saya tidak bisa menulis32
, jadi saya kurangi 1 dari 33 dan tetapkan ke variabel.sumber
Retina, 12 baris, 29 byte (tidak bersaing)
Bahasa lebih baru daripada tantangan.
Cobalah online
sumber