Halo Dunia! tanpa pengulangan

27

Dalam bahasa pemrograman apa pun yang ada sebelum pertanyaan ini ditanyakan, tulis program (bukan fungsi) yang menampilkan karakter Hello world!diikuti oleh baris baru. Program Anda:

  • tidak boleh menggunakan karakter apa pun lebih dari sekali (termasuk spasi)
  • seharusnya hanya menggunakan karakter ASCII
  • tidak boleh menggunakan perpustakaan bawaan apa pun
  • seharusnya tidak mendapatkan input (pengguna, file, nama file, variabel sistem, internet, apa pun)
  • seharusnya tidak menghasilkan apa pun

Pemenang adalah siapa pun yang memiliki suara terbanyak setelah 14 hari dan mematuhi enam aturan.

Aturan keenam adalah bahwa Anda tidak dapat menggunakan H9 +, HQ9 +, HQ9 + B, HQ9 ++, HQ9 + 2D, Halo, Hello +, Hello ++, Hexish, CHIQRSX9 +, atau Fugue. Juga, semua jawaban yang membutuhkan implementasi yang lebih baru dari tantangan ini harus ditandai sebagai tidak bersaing.


Penafian: Pertanyaan ini diposting dengan asumsi bahwa Hello world! dengan pengulangan terbatas tidak menyebabkan kerusakan pada komputer Anda atau otak Anda dalam proses menemukan jawaban.

Timtech
sumber
jika Kami keluar dari kode karakter, dapatkah karakter "\" digunakan lebih dari sekali?
WallyWest
4
Bagaimana dengan piet?
Victor Stafusa
@ Viktor "seharusnya hanya menggunakan karakter ASCII"
Timtech
3
Itu adalah teka-teki yang hebat, dan saya senang melakukannya :-).
Konrad Borowski
9
“Seharusnya hanya menggunakan karakter ASCII” - pembatasan yang kejam. Itu menghapus seluruh kelas bahasa yang tidak kebetulan menggunakan ASCII.
Timwi

Jawaban:

33

Perl 6 (29 28 karakter)

Ini agak menjengkelkan, tetapi akhirnya saya berhasil membuat program untuk tugas ini. Terima kasih telah mengunjungi komunitas # perl6 yang hebat , karena telah membantu saya dengan tugas ini. Butuh waktu dua jam, harap Anda menikmati. Output sepenuhnya sesuai dengan spesifikasi, termasuk baris baru.

say
Q[@A`DO world!]~|<HeLhg>

Ada empat token yang menarik.

  • say

    Ini menghasilkan argumen dengan baris baru di akhir. Baris baru setelah perintah itu sendiri diperlukan sebagai pengganti spasi.

  • Q[@A`DO world!]

    Ini adalah string pertama. Q[]adalah untuk string mentah (seperti r""dalam Python). Ini dapat mengambil pembatas (atau pasangan mereka), dalam hal ini []. Dalam hal ini, saya menggunakan ini untuk kutipan, saya tidak perlu perilaku string mentah.

  • ~|

    Ini adalah operator stringwise ( ~) bitwise atau ( |).

  • <HeLhg>

    <>adalah daftar literal, yang mengambil daftar elemen yang dipisahkan ruang. Dalam hal ini, ia memiliki satu elemen, dan digunakan sebagai skalar, ia memberikan string.

Konrad Borowski
sumber
3
Luar biasa! Saya perlu belajar. Beberapa sintaks Perl 6! Saya setuju dengan komentar Anda juga, pasti masalah yang menyenangkan!
Dom Hastings
4
Woah ... pikiranku hancur: O +1
Gagang Pintu
12

Perl 5 dengan-M5.010 , 29 byte

say+He.v108
x2,q(O world!)^$"

Cobalah online!

Saya telah memperoleh banyak pengetahuan sejak saya pertama kali mencoba ini. Masih tidak sesingkat jawaban yang lain, tetapi yang terbaik yang bisa saya dapatkan!

Dom Hastings
sumber
Tantangan memiliki huruf kecil w.
Ørjan Johansen
@ ØrjanJohansen Terima kasih, saya lupa!
Dom Hastings
11

Perl 5.10+: 24 karakter

say+He,YZX^q(567 world!)

OK, saya pikir ini sesingkat di Perl.

Jalankan dengan perl -M5.010(atau hanya perl -E) untuk mengaktifkan fitur Perl 5.10+ say.

Ilmari Karonen
sumber
Terkesan serius! Saya menghabiskan waktu lama untuk mencoba ll...
Dom Hastings
9

Golfscript 42 33

Saya mungkin juga golf ini, mengingat bahwa saya harus memasukkan beberapa kode dan semua data di blok yang sama tanpa cara membatasi keduanya saya pikir ini adalah hasil yang cukup singkat. Tidak seperti pengiriman pertama saya, kode blok sekarang menjadi bagian yang sepenuhnya terintegrasi dari data, sehingga {1tidak hanya memulai blok dan meletakkannya 1di tumpukan, itu juga data yang mendefinisikan H, dan sebagainya. Pembuatan array sekarang termasuk string input kosong, yang berarti bahwa saya tidak harus memotong awal karena hanya ada satu karakter antara string kosong dan H, karakter yang terpotong ketika saya mengambil setiap karakter kedua, dan kosong string pada akhirnya adalah output sebagai tidak ada.

{1wZ$Qei^Ak 3h-)ulmsogr7}.`*]2%n+

Demo online: http://golfscript.apphb.com/?c=ezF3WiRRZWleQWsgM2gtKXVsbXNvZ3I3fS5gKl0yJW4r

[{1$^(r iFNGDJUHv98oIMgtplbh4m}.`\*]6>2%n+

Menentukan blok kode. Membuat salinan blok kode dan mengubahnya menjadi string. Menggunakan blok kode untuk beralih pada string. Untuk setiap iterasi kode akan membuat salinan dari nilai char sebelumnya, xor dengan nilai char saat ini, dan kurangi 1. String yang dihasilkan kemudian memiliki 6 karakter pertama dihapus, dan setiap karakter kedua dihapus. Akhirnya umpan baris ditambahkan.

"r iFNGDJUHv98oIMgtplbh4m" hanyalah dua variabel yang tidak dideklarasikan, mereka tidak melakukan apa-apa, tetapi mereka dibangun dengan hati-hati untuk menghasilkan hasil yang diinginkan.

Demo online: http://golfscript.apphb.com/?c=W3sxJF4ociBpRk5HREpVSHY5OG9JTWd0cGxiaDRtfS5gXCpdNj4yJW4r

aaaaaaaaaaaa
sumber
6

Vim 7.3, 18 penekanan tombol

:h-cu
9j3wy$<C-^>P<End>r!o

Menyalin string Hello worlddari file bantuan ini , yang sayangnya telah dihapus dalam versi Vim yang tidak pernah.

BlackCap
sumber
Menurut ini , <Esc>
penekanan
6

Befunge-98 , 34 31 byte

f"v!dlrow
+c<>a,kb@#*98e':g05-3

Cobalah online!

Menggunakan beberapa metode berbeda untuk menghindari duplikasi karakter.

Pertama, kami menggunakan pembungkus string literal untuk menghindari penggunaan dua "s. Ini menambahkan "dunia!" ke tumpukan.

Ke kiri di baris kedua, kami menambahkan 9 ke ekstra funtuk membuat o"Halo". Kami get karakter dari sel 5.0 ( l) dan kemudian duplikat. Yang 'digunakan untuk mengambil surat itu e. Kalikan 9 dengan 8 untuk mendapatkan 72, nilai ASCII dari H. Kami kemudian mencetak semuanya menggunakan ck,, dan membalik arah dengan >menggunakan kembali ,untuk mencetak baris baru ( a).

Jo King
sumber
Sangat bagus tapi tantangan ini tanpa koma.
Ørjan Johansen
Oh lol, itu membuatnya lebih mudah ... Terima kasih @ ØrjanJohansen
Jo King
Anda memiliki dua +dan d.
Ørjan Johansen
@ ØrjanJohansen oops. harus diperbaiki sekarang
Jo King
3

Elixir , 37 byte

IO.puts~c(He#{[?n-2,108]}\x6f world!)

Cobalah online!

Saya tidak dapat menjamin bahwa ini akan bekerja kembali pada tahun 2014 ketika tantangan ini diposting, dan Elixir masih pra-1.0 (dan dengan demikian, apakah itu secara resmi "bersaing", tetapi melihat catatan rilis mereka, saya pikir itu harus BAIK). Bagaimanapun, saya senang bahwa saya akhirnya menemukan solusi yang valid untuk tugas ini menggunakan bahasa tujuan umum konvensional selain Perl!

Panduan

IO.puts     #Print with trailing newline
~c(...)     #Sigil: charlist with interpolation
He          #Start of literal string...
#{...}      #Interpolated block
[?n-2,108]  #A list of codepoints for 2 'l's
\x6f        #Hex code for 'o'
world!      #...and done!
Kirill L.
sumber
0

Stax (tidak bersaing), 8 byte

`dx/&\p4

Cobalah online!

Hanya string literal terkompresi. Untungnya Stax melepaskan saya tanpa backtick penutup.

Weijun Zhou
sumber