Hello World Alfanumerik [ditutup]


43

Tujuan Anda adalah menulis "Halo, Dunia!" (minus tanda kutip). Ini adalah , sehingga sebagian besar suara menang. Panjang kode akan digunakan untuk memutuskan hubungan.
Apa saja, asalkan sesuai dengan aturan berikut:

  • Semua karakter harus berupa huruf atau angka, jadi Anda hanya dapat menggunakan karakter dalam string "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".
  • Semua kode yang Anda gunakan harus dalam satu file, dengan pengecualian modul / kelas yang diimpor / apa pun namanya dalam bahasa favorit Anda.
  • Hanya pustaka / kerangka kerja standar untuk bahasa pilihan Anda yang diizinkan (misalnya, modul Matematika Python diizinkan, tetapi Numpy, Scipy, dan Pygame tidak). Saya akan mengizinkan TkInter karena ini adalah standar de facto untuk GUI dengan Python.
  • Tidak ada input yang diizinkan, baik itu membaca dari stdin, membaca file, mengirimkan gambar, atau membaca dari web.

+10 poin brownies jika Anda mengetahui cara melakukannya di Jawa tanpa menekuk aturan.


Sesuai keinginan Anda, siapkan, kode!

EDIT: kurung kurawal ({}), kurung kurawal ([]), dan kurung kurung (()) diizinkan karena ini akan sangat mustahil bagi sebagian besar bahasa tanpa mereka. Saya juga menghapus aturan batas karakter. Semoga ini akan membuatnya lebih menarik.

EDIT ^ 2: spasi putih juga diperbolehkan. Otak saya tidak berfungsi dengan baik, maaf. >. <


1
Terserah Anda, saya hanya memastikan. Bagaimana dengan ruang kosong?
Geobits

1
Oh, ruang putih yang tepat. Otak saya jelas tidak berfungsi dengan baik hari ini. Itu harus diizinkan. Satu detik, biarkan saya memperbaiki aturan.
Minggu

8
Jadi, tidak ada operator? Dan yang paling penting, bukan ;? Bagaimana saya bisa menulis sesuatu dalam bahasa C?
Oberon


3
+1 untuk mengetahui cara mengecualikan J dengan cara alami: 72 101 108 108 111 44 32 87 111 114 108 100 33{a.membutuhkan periode di akhir untuk bekerja, dan jalur yang u:sama membutuhkan titik dua. Tanpa .dan :kita bukan apa-apa.
algorithmshark

Jawaban:


103

Perl

Ada yang bilang perl adalah bahasa yang penuh dengan noise ascii dan simbol acak seperti $... Itu tidak benar: P

s zzHelloq worldmz and s zqzchr 44ze and s zmzchr 33ze and print

Mari kita pisahkan ini menjadi sub-ekspresi:

(s zzHelloq worldmz) and (s zqzchr 44ze) and (s zmzchr 33ze) and (print)
Seharusnya jelas bahwa dieksekusi dari kiri ke kanan selama setiap ekspresi mengembalikan nilai true Tapi apa yang sebenarnya s zqzchr 44ze?

Dalam perl, ada sekelompok "kutipan-seperti operator" yang meliputi q(str), qw(li st), /regex/, s/from/to/antara lain. Ternyata semua operator ini dapat menggunakan hampir semua karakter sebagai delimeter, dengan beberapa kekhasan: parethesis pembuka harus ditutup oleh tanda kurung penutup yang cocok, dan jika Anda ingin menggunakan huruf sebagai pembatas Anda harus meletakkan spasi setelah surat operator (untuk membedakannya dari kata pengantar).

Dalam hal ini kita melihat tiga penggunaan s///operator (penggantian substitusi):

s//Helloq worldm/
s/q/chr 44/e
s/m/chr 33/e
Semua dibatasi oleh karakter z. The /ebendera pada dua terakhir menyebabkan substitusi ditafsirkan sebagai kode untuk dievaluasi, teks agak literal.

Fakta yang cukup terkenal tentang perl adalah bahwa sebagian besar operasi default untuk beroperasi pada $_variabel bawaan kecuali ditentukan lain. Ketiga substitusi ini dan printoperasinya $_dalam kasus ini, jadi pertama-tama kita masukkan kata Hello world ke dalam variabel, lalu kita perbaiki tanda baca dengan menggunakan nilai ascii numerik dari karakter, lalu kita cetak isi dari variabel.


46
+1 Saya tidak tahu apa yang sedang terjadi di sini, tetapi berhasil!
squeamish ossifrage

95
@squeamishossifrage Itu bisa menjadi moto perl
mniip

6
Jika Anda bisa, apakah Anda akan menambahkan sedikit penjelasan?
ace_HongKongIndependence

10
Saya tidak berarti seorang ahli, tetapi dalam perl pengganti biasanya ditunjukkan oleh s/PATTERN/REPLACEMENT/FLAGS, tetapi Anda benar-benar dapat menggunakan sebagian besar apa pun yang Anda inginkan daripada garis miring. Kode di sini menggunakan "z" bukannya garis miring dan berubah (tidak ada) menjadi "Helloq Worldm" kemudian menggantikan "q" untuk chr 44 (menggunakan flag \ e untuk mengevaluasi PENGGANTIAN alias "chr 44" sebagai ekspresi) yang merupakan ", ". Ini kemudian menggantikan "m" dengan chr 33, a "!", Dan mencetaknya.
Amory

3
@ace dalam operator seperti kutipan, mis q//. pembatas apa pun dapat digunakan q!! q** q\\ q;;,. Beberapa pengecualian adalah bahwa untuk menutup (Anda menggunakan ), q() q[] q{} q<>dan yang menggunakan alfanumerik sebagai pembatas, harus spasi dari operator untuk ambiguitas disallow, misalnya q qq, q 66. Trik yang sama berlaku untuk operator seperti kutipan lainnya.
mniip

73

C

int main(void) {
  if (putchar(72))
    if (putchar(101))
      if (putchar(putchar(108)))
        if (putchar(111))
          if (putchar(44))
            if (putchar(32))
              if (putchar(87))
                if (putchar(111))
                  if (putchar(114))
                    if (putchar(108))
                      if (putchar(100))
                        if (putchar(33)) 
                        {
                        }
}

4
Luar biasa! BISA dilakukan di C. Dan saya pikir saya akan memenangkan ini ...
Level River St

2
@ace Hanya jika Anda memiliki kasus yang ditentukan. Anda dapat dengan mudah menulis ulang ini sebagai switch(putchar(72)){}switch(putchar(101)){}, dll.
Comintern

27
+1 untukputchar(putchar(108))
Ilmari Karonen

2
Baru saja melewatkan "jika (putchar (44))" untuk koma.
Desty

1
Terlihat dengan baik, tidak yakin bagaimana saya melewatkan koma dalam pertanyaan. Tetap.
mattnewport

49

(sunting - BBC basic dipindahkan ke jawaban yang terpisah seperti yang disarankan. Sebagian besar suara untuk ini jelas untuk jawaban LOGO.)

LOGO

Penerjemah di http://www.calormen.com/jslogo/#

TO h        pd  fd 100 rt  90  pu  fd 50  rt 90  pd  fd 100  rt 180 fd 50  lt 90  fd 50  rt 90  pu END 
TO e        pu  fd 25  rt  90  pd  fd 25  rt 90  arc 270 25  lt 90  fd 25  lt 90  pu END  
TO l        pd  fd 100 pu  END  
TO o        rt  45 fd  35  pd  arc 360 25  lt  45  pu END 
TO comma    pd  rt 90  arc 90  15  lt  90  pu END 
TO w         l  rt 180 l   pd  lt  135 fd  35  rt  90  fd 35  lt 135  l  END  
TO r        pd  fd 25  rt  90  pu  fd  25  rt 180  arc 180 25 rt 90 END 
TO d         o  rt 135 fd  35  lt  135  l  END      
TO exclaim arc 360 5   fd  10  l  END 

clearscreen  
setpencolor 4 pu 
setxy 0 150      h 
setxy 100 150    e  
setxy 200 150    l 
setxy 250 150    l 
setxy 300 150    o 
setxy 350 150    comma  
setpencolor 1 
setxy 0 0        w 
setxy 100 0      o 
setxy 200 0      r  
setxy 300 0      l 
setxy 350 0      d 
setxy 450 0      exclaim 
fd 100

Output (segitiga hijau adalah kursor kura-kura)

masukkan deskripsi gambar di sini


2
Anda harus membagi jawaban ini menjadi dua.
Justin

@WallyWest Saya hampir tidak tahu bahasa, tapi itu alat untuk pekerjaan itu. Anda juga dapat mencetak teks (ini disebut label pada gambar Anda) tetapi Anda memerlukan tanda kutip untuk itu (saya pikir hanya kutipan pembuka yang diperlukan dan kutipan penutup adalah opsional.)
Level River St

1
+1 untuk menggambar alih-alih mencetak kata-kata.
Minggu

@steveverril Kutipan kedua akan menjadi kesalahan sintaks, sebenarnya.
mulai

29

Applescript

Tidak ada tanda kurung [], kawat gigi {}atau tanda kurung ()sama sekali dalam yang ini:

set s to ASCII character 72
set s to s as list
set end of s to ASCII character 101
set end of s to ASCII character 108
set end of s to end of s
set end of s to ASCII character 111
set end of s to ASCII character 44
set end of s to space
set end of s to ASCII character 87
set end of s to item 5 of s
set end of s to ASCII character 114
set end of s to third item of s
set end of s to ASCII character 100
set end of s to ASCII character 33
display dialog s as text

Output adalah: masukkan deskripsi gambar di sini


10
Luar biasa! (Harus menulis kata "karakter" secara penuh, maksud saya!) Sekarang saya mengerti apa artinya Apel menjadi mahal. Hanya bercanda, +1 untuk sesuatu yang berbeda :-)
Level River St

10
AppleScript sangat bertele-tele, tetapi hasilnya benar-benar merupakan salah satu bahasa pemrograman yang paling mudah dipahami oleh orang awam.
Jonathan Van Matre

3
@JonathanVanMatre Sulit untuk menulis, mudah dibaca
Digital Trauma

2
bahkan C lebih mudah dibaca ...
Sarge Borsch

1
@Cruncher - Ini mudah. Perintah set s to s as listberubah "H"menjadi {"H"}(daftar). Dalam bahasa lain, seperti Jawa, biasanya lebih rumit untuk melakukannya.
Nicolas Barbulesco

24

Pesta

Jenis pekerjaan ini, jika Anda menyipitkan mata:

echo NN i NN i i i iNN NNi i i i i i i NN i NN i i i i i i i NNi i i NN NN
echo NN i NNi i i i NN NN i i i i i i iNN i NN i i i i i i i NN i i iNN NN
echo NN i NN iNNNNi NN NN iNNNNi i i i NN i NN iNNNNi NN NN iNN iNNN NN NN
echo NNNNNNN NN iNN NN NN NN iNN i i i NN i NN NN iNN NNN iN NN NN iNNN N
echo NN i NN NNNNNN NN NN NNi NN i i i NN N NN NNi NN NN i i NN NNi iNN N
echo NN i NN NN i i NN NN NN iNN i i i NNN NNN NN iNN NN i i NN NN i NN
echo NN i NN iNNNi iNN NN iNNNNi N i i NN i NN iNNNNi NN i i NN iNNNN N NN
echo i i i i i i i i i i i i i i N

1
ini berfungsi di file windows bat / cmd juga
phuclv

banner Hello Worldataufiglet Hello World

2
@professorfish Bagian rumit dari tantangan ini adalah mendapatkan ,dan !. Kalau tidak, saya hanya akan menggunakan yang lama echo.
Trauma Digital

@DigitalTrauma oh, maaf, tidak melihat itu ... agak lambat

19

base64

SGVsbG8sIFdvcmxkIQ

Memenuhi aturan asli.


2
Apakah base64 bahasa? Dan apa output Anda? Apakah memiliki huruf besar yang benar?
Level River St

23
Tentu itu bahasa, hanya saja Turing tidak lengkap. Juga, base64decode.org
Kendall Frey

1
Ha ha. Untuk respons itu, beri +1 pada komentar Anda, tetapi bukan jawaban Anda. Mungkin jawaban Anda nanti kalau saya mau.
Level River St

2

2
@KendallFrey Dengan logika itu, base10 adalah bahasa: 1234567890.
Cole Johnson

19

Python

Jadi apa, kita anggap semua orang membaca secara horizontal? Bagi pengguna yang suka membaca secara vertikal:

print chr(72) 
print chr(101)
print chr(108)
print chr(108)
print chr(111)
print chr(44)
print chr(32)
print chr(87)
print chr(111)
print chr(114)
print chr(108)
print chr(100)
print chr(33)

+1 dan hahaha! Pertanyaan ini memiliki banyak downvotes pada awalnya, karena orang percaya itu tidak mungkin. Saya tidak tahu Python, tetapi mengingat semua erangan saya tidak percaya itu mudah dalam bahasa yang umum.
Level River St

1
Saya baru saja menulis kode yang sama persis sebelum jawaban ini diposting. Saya menyegarkan untuk mengirim jawaban saya dan menemukan ini ...
grovesNL

1
@steveverrill erangan itu bukan tanpa alasan. Tidak ada jawaban tunggal di sini yang akan melewati aturan asli (tidak ada kurung / paren / kurung, tidak ada karakter yang diulang lebih dari sekali)
Geobits

1
@ grovesNL Jika itu membuat Anda merasa lebih baik, ini adalah hal pertama yang pernah saya gunakan untuk python. Saya menghabiskan waktu menyisir dokumen, mencoba mencari tahu apakah ada cara yang layak untuk menyatukan mereka menjadi satu baris sebelum memposting.
Geobits

@ Geobits sys.stdout.writeadalah cara standar untuk menghasilkan teks tanpa baris baru di sebagian besar versi di Python (perilaku ini sedikit berubah di 3.0). Kita tidak dapat melakukan itu di sini karena periode.
grovesNL

19

Polyglot: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B dan HQ9 + 2D (1 byte)

H

Terima kasih @ctor untuk daftar bahasa.


5
Ini adalah polyglot. Ia bekerja juga di H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B dan HQ9 + 2D.
Victor Stafusa

Saya cukup yakin ini juga berfungsi di Halo.
Minggu

5
Ini berfungsi dalam bahasa apa pun yang Anda temukan.
Zero Fiber

2
Saya tidak menemukan apa pun ...
Ismael Miguel

6
Sayangnya hasilnya adalah "halo, dunia" ( esolangs.org/wiki/HQ9%2B ), atau menurut penerjemah ini "Halo dunia." ( almnet.de/esolang/hq9plus.php ) Untuk mendapatkan "Halo, dunia!" Anda mungkin perlu menambah akumulator beberapa kali.
tttppp

17

OMGROFL

Saya penggemar berat bahasa-bahasa esoterik. Untungnya OMGROFL adalah alfanumerik:

lol iz 72
rofl lol
lol iz 101
rofl lol
lol iz 108
rofl lol
rofl lol
lool iz 111
rofl lool
loool iz 44
rofl loool
loool iz 32
rofl loool
loool iz 87
rofl loool
rofl lool
lool iz 114
rofl lool
rofl lol
lol iz 100
rofl lol
lol iz 33
rofl lol
stfu

The izperintah menetapkan nilai ke variabel, dalam hal ini lol, looldan looolberfungsi sebagai variabel ...

The roflperintah gema keluar ASCII setara dengan nomor yang tersimpan dalam variabel.

The stfuperintah berakhir program;)


haha bagus! Saya ingin mencoba versi LOLCODE tetapi bahasa mengharuskan menggunakan tanda titik dua dan tanda kutip untuk memaksa int untuk karakter.
Jonathan Van Matre

17

COBOL

   ID DIVISION 
   DATA DIVISION 
   01  HELLOWORLDBINARY 
       05  HE                       COMP    PIC 9999 
       05  LL                       COMP    PIC 9999 
       05  OCOMMA                   COMP    PIC 9999 
       05  SPACEW                   COMP    PIC 9999 
       05  ORTEXT                   COMP    PIC 9999 
       05  LD                       COMP    PIC 9999 
       05  EXCLAMATION              COMP    PIC 9999 
   01  FILLER REDEFINES HELLOWORLDBINARY 
       05  HELLOWORLDTEXT                   PIC XXXXXXXXXXXXX
       05  FILLER                           PIC X 
   PROCEDURE DIVISION 
       MOVE 51333                   TO HE 
       MOVE 37779                   TO LL 
       MOVE 38507                   TO OCOMMA 
       MOVE 16614                   TO SPACEW 
       MOVE 38553                   TO ORTEXT 
       MOVE 37764                   TO LD 
       MOVE 23104                   TO EXCLAMATION 
       DISPLAY HELLOWORLDTEXT 
       GOBACK 

Diperlukan beberapa perubahan untuk menjadi sumber yang benar-benar alfanumerik saja.

PROGRAM-ID dapat dihapus. Anda mendapatkan nama program yang dihasilkan (lihat pesan).

STORAGE KERJA bisa dijatuhkan. Lagi-lagi rintihan kompiler.

Karena kedua baris ini sebelumnya telah berhenti penuh / periode, yang tidak lagi relevan sekarang karena deskripsi sepenuhnya hilang, jumlah pesan kesalahan sama dengan sebelumnya, dan masih tidak mempengaruhi kode yang dihasilkan untuk program.

Dalam mengubah COMP-5 menjadi COMP, klausa VALUE tidak lagi diizinkan, karena COMP 9999 hanya empat digit desimal sedangkan COMP-5 adalah biner dua byte dengan semua nilai bit tersedia.

Nilai dalam MOVE adalah nilai desimal yang memberikan nilai biner yang memberikan pasangan karakter.

Meskipun bidang COMP memiliki empat digit, dan tidak membolehkan klausa VALUE dengan lebih dari empat digit, Anda dapat menggunakan lebih banyak digit dalam MOVE nilai literal tanpa pemotongan pada saat itu ... jangan tanya mengapa. Opsi kompiler DIAGTRUNC (yang telah saya matikan) akan menghasilkan diagnostik Peringatan untuk ini.

Opsi kompiler TRUNC (BIN) dapat digunakan untuk memperlakukan COMP sebagai COMP-5, tetapi MOVE adalah cara lain untuk melakukannya.

Karena COBOL, hasilnya harus dalam KASUS UPPER (bohong, tapi hanya untuk bersenang-senang).

HELLO WORLD!

OK, mengalah, sekarang menghasilkan:

Hello, World!

Yang, sebagai jumlah ganjil karakter, memerlukan beberapa perubahan lebih lanjut, karena kita tidak bisa memiliki bidang biner ganjil-angka-byte dengan kompiler ini. Lihat baris 13 X itu! Biasanya akan ditulis sebagai X (13), tetapi bisa seperti yang saya tunjukkan ...

Dan ORTEXT diperlukan (atau bukan ATAU, bagaimanapun) sebagai nama karena ATAU adalah kata yang disediakan untuk kompiler (itu berarti ATAU, tentu saja).

Ini adalah nilai-nilai EBCDIC, bukan ASCII, karena ini berjalan pada kotak yang sadar-EBCDIC, dan Big Endian.

Oh, COBOL membutuhkan banyak penghentian / periode penuh. Saya meninggalkan mereka (mereka dilarang) sehingga mendapat banyak pesan kompilasi. Hanya mengatakan kepada kompiler untuk menghasilkan kode (tidak ada pesan yang berhubungan dengan kode objek).

Bahkan tanpa DIAGTRUNC, pesannya sekarang hingga 17 ...

  1  IGYDS1003-E   A "PROGRAM-ID" paragraph was not found. 
  Program-name "CBLNAM01" was assumed. 

  2  IGYDS1082-E   A period was required.  A period was assumed 
  before "DATA". 

  3  IGYDS1082-E   A period was required.  A period was assumed 
  before "01". 

                   Same message on line:     11 

  3  IGYDS1040-E   A data item was found in the "DATA DIVISION" 
                   before a section header was encountered. 
                   "WORKING-STORAGE SECTION" was assumed. 

  4  IGYDS1082-E   A period was required.  A period was assumed 
  before "05". 

                   Same message on line:      5      6      7      8
                   9     10     12     13 

 14  IGYDS1082-E   A period was required.  A period was assumed 
 before "PROCEDURE". 

 15  IGYPS2145-E   A period was required.  A period was assumed 
 before "MOVE". 

 23  IGYSC1082-E   A period was required.  A period was assumed 
 before "END OF PROGRAM". 

1
Saya tidak berpikir -diizinkan
mniip

1
Poin bagus. Pemasangan. Kebiasaan.
Bill Woodger

@mniip Mmmm .... sedikit lebih rumit ... Saya harus memperbaiki PENYIMPANAN KERJA nanti. Saya harus pergi sekarang ...
Bill Woodger

1
Saya menertawakan, “Karena COBOL, hasilnya harus dalam KASUS UPPER” Kerja bagus!
Jonathan Van Matre

15

Ruby (hanya menggunakan alnum dan spasi putih)

putc 72
putc 101
putc 108
putc 108
putc 111
putc 44
putc 32
putc 87
putc 111
putc 114
putc 108
putc 100
putc 33

Keluaran: Hello, World!


15

Javascript

with (function SGVsbG8sIFdvcmxkIQ(){}) atob(name)

Gunakan konsol peramban untuk menguji.


14

JavaScript

with (String) with ([]) {
    push(fromCharCode(72))
    push(fromCharCode(101))
    push(fromCharCode(108))
    push(fromCharCode(108))
    push(fromCharCode(111))
    push(fromCharCode(44))
    push(fromCharCode(32))
    push(fromCharCode(87))
    push(fromCharCode(111))
    push(fromCharCode(114))
    push(fromCharCode(108))
    push(fromCharCode(100))
    push(fromCharCode(33))
    alert(join([]))
}

1
ARGH! Saya menemukan solusi yang sama, tetapi memutuskan bahwa sejak jam 2 pagi, saya harus pergi tidur dan mempostingnya di pagi hari. Salam untuk Anda!
DocMax

12

ferNANDo

h E R
e I S
h E
l L O
w O
r L
d U S
i N G
o N L
y L E
t T E
r S

H e L L o W O R
L d h E L l O w
O r l D h e L L
O w o R l d H E
L l o W o r l d
H E l L o w O R
L D h E L L O W
O r L d H e l l
O w o R l d h e
L l o w O R l D
H e l L o w O R
L d h E L l O W
O R l D H E L l
O w O
r L d

Koma dan hilang!
VoronoiPotato

@VoronoiPotato: bekerja dengan baik di sini
marinus

whoops sorry: X
VoronoiPotato

12

Rebol

Satu-satunya solusi alfanumerik:

prin quote Hello prin add space 12 prin space prin quote World print add space 1

Di atas adalah pembaruan yang menggunakan saran Dr Rebmu yang sangat baik add space 1(yang menghasilkan !) untuk mendapatkan semua karakter.

Di bawah ini adalah versi aslinya:

prin quote Hello prin pick mold system 264 prin space prin quote World print pick mold system 12

Versi lebih pendek dengan tanda kurung:

print rejoin [quote Hello pick mold system 264 space quote World pick mold system 12] 

Dan versi lebih pendek dengan kawat gigi:

print join {Hello} join pick mold system 264 join { World} pick mold system 12

Dan versi terpendek dengan kurung & kurung:

print rejoin [{Hello} pick mold system 264 { World} pick mold system 12]

Rebol menggunakan kawat gigi {}untuk pengutipan multi-baris. Jadi benar-benar valid di bawah perubahan peraturan tetapi tidak sepenuhnya semangat (IMHO) seperti dua jawaban pertama saya di atas.


NB. Mencetak !itu menyebalkan!

Rebol memungkinkan dan menggunakan karakter tanda baca secara rutin untuk nama fungsi dan tipe data. Jadi opsi suka to-char 33atau to char! 33tidak akan diizinkan di bawah aturan (meskipun tanda baca ini bukan operator par se).

Untungnya saya menemukan cara yang kurang ajar dengan memutar objek sistem Rebol: make object! [...]menjadi string dan cherry memilihnya !:)

Pembaruan: Dan sekarang juga ceri mengambil koma dari teks lisensi di objek sistem.


1
!tidak diizinkan
grovesNL

2
@grovesNL - Solusi tidak lagi menggunakan -atau !jadi Anda sekarang dapat menghapus suara turun
draegtun

1
Anda kehilangan koma
mniip

1
@mniip - Terima kasih melewatkannya! Sudah diperbaiki.
draegtun

1
Cukup rumit, tetapi Anda bisa saja menambahkan ke ruang untuk mendapatkan karakter ... ;-) Lihat solusi Rebmu , yang jam di di 46 karakter ...
Dr. Rebmu

12

C

Hanya menggunakan karakter alfanumerik, spasi dan kurung {}, kurung [] dan tanda kurung ().

main()
{
        if(printf((long long []){0x202c6f6c6c6548}))
                if(printf((long long []){0x21646c726f57})){}
}

printf () menerima char * sebagai argumen, tetapi karena kita tidak dapat menggunakan tanda kutip ("), saya mengetikkan string sebagai array panjang. Nilai yang terlihat di sini adalah string ASCII, dalam little endian (0x48 = H, 0x65 = e, 0x6c = l, dan sebagainya). Saya mengetikkannya terlalu lama [] karena dengan begitu saya bisa melewatkan argumen 8-byte dan karenanya hanya menggunakan dua panggilan printf () alih-alih empat.


Ini melanggar aturan # 1
Timtech

1
Karakter, angka, spasi, dan {} () [] diizinkan.
pank4j

Anda dapat melemparkan int literal ke array? Saya belum pernah melihat ini sebelumnya
phuclv

Apa fungsinya?
Nicolas Barbulesco

@ LưuVĩnhPhúc Array adalah sebuah pointer. Pointer adalah bilangan bulat.
seequ

11

BBC BASIC

Emulator di bbcbasic.co.uk

Berpisah dari jawaban LOGO saya.

Cara mudah

Angka-angka di sebelah kanan hanya kode ASCII. Ini sama dengan mencetak. Jika saya diizinkan koma, saya bisa melakukannya dalam satu baris ( VDU 72,101,108,etc.)

   10 VDU 72
   20 VDU 101
   30 VDU 108
   40 VDU 108
   50 VDU 111
   55 VDU 44
   60 VDU 32
   70 VDU 87
   80 VDU 111
   90 VDU 114
  100 VDU 108
  110 VDU 100
  120 VDU 33

Cara yang lebih kreatif

    5 MODE 6
   10 READ B
   12 WHILE B
   15   PROC1(B)
   16   PRINT
   17   READ B
   18 ENDWHILE
   20 END

REM procedure prints first square on line, 
REM then calls itself recursively with A DIV 2 to print the next
REM VDU 17 tell VDU controller we want to change colour
REM Next line changes background colour. 
REM Then following line VDU 32 prints a space in that background colour.

  110 DEFPROC1(A)
  115 VDU 17
  120 IF A AND 1 THEN VDU VPOS DIV 6 EOR 133 ELSE VDU 128
  125 VDU 32
  130 IF A THEN PROC1(A DIV2)
  140 ENDPROC

REM binary bitmap data for each row, least significant at left
  150 DATA 463221
  160 DATA 332053
  170 DATA 332151
  180 DATA 332053
  190 DATA 2586485
  200 DATA 1048576
  210 DATA 4395895
  220 DATA 4527447
  230 DATA 4526935
  240 DATA 333143
  250 DATA 4420981
  260 DATA 0

masukkan deskripsi gambar di sini



11

DC

DC hanyalah alat yang sempurna untuk pekerjaan itu.

5735816763073854918203775149089P

DC- Pperintah mengeluarkan satu nomor dari tumpukan dan menampilkan representasi komputer mentah ke STDIO. Melihat sebagai 5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421, yang direpresentasikan sebagai 0x21, 0x64, 0x6C... = 'H', 'e', 'l'...dalam arsitektur little-endian, hasilnya Hello, World!.


Bagaimana cara kerjanya? Maukah Anda menambahkan penjelasan?
Minggu

1
Tidak semuanya. Penjelasan akan ditambahkan segera.
Fors

2
+1. Anda bisa melakukannya dalam hex untuk menyimpan beberapa karakter:16i48656C6C6F2C20576F726C6421P
Digital Trauma

9

JavaScript!

Dan mereka mengatakan bahwa itu tidak dapat dilakukan ... Tidak ada operator penugasan, tidak ada penggabung, tidak ada kutipan! Arghhhh!

Jangan takut ... Karena kekuatannya adalah withAnda ...

function w(x){
    with(document){
        with(String){
            write(fromCharCode(x))
        }
    }
}
w(72)
w(101)
w(108)
w(108)
w(111)
w(44)
w(32)
w(87)
w(111)
w(114)
w(108)
w(100)
w(33)

Output (on browser screen): Hello, World!

Dia berkata "Bonus jika Anda bisa melakukannya di Jawa" bukan Javascript.
Almo

@Almo saya tidak bertujuan untuk melakukannya di Jawa ... Saya fokus pada JavaScript, yang merupakan kekuatan utama saya di sini di situs ini ...
WallyWest

Tetapi Anda berkata, "Dan mereka mengatakan bahwa itu tidak dapat dilakukan" yang saya pikir mengacu pada teka-teki yang menyatakan bonus untuk melakukannya di Jawa. Banyak orang masih membingungkan Java dengan Javascript.
Almo

@Almo, saya hanya menggunakan pepatah umum ... Dan ketika saya merujuk ke "Javascript", saya bermaksud menggunakan JavaScript ... Percayalah, saya tidak berencana mengambil bonus ...
WallyWest

9

Javascript

Pembaruan: Berhasil memotong banyak karakter dengan memperkenalkan fungsi Dunia juga.

Solusi Javascript lain yang menulis ke console.log:

function World() { with (World) return name }
function Hello() {}
with (console)
with (String)
with (Hello)
with (name)
with (concat(fromCharCode(44)))
with (concat(fromCharCode(32)))
with (concat(World()))
log(concat(fromCharCode(33)))

Terinspirasi oleh entri ini .

Pertama, saya mendefinisikan fungsi bernama Hello and World. Ini akan digunakan nanti.

Kemudian saya mulai rantai withs bersarang saya. The with (console)dan with (String)digunakan sehingga saya bisa nanti Invoke console.logdan String.fromCharCodetanpa menggunakan dot.

Rencananya sekarang adalah untuk membangun string Hello, World!dengan menyalahgunakan bersarang bersarang. Setiap kali saya memanggil concat (), string yang dihasilkan akan menjadi konteks pada blok-berikutnya. Saya mengambil jalan pintas untuk mendapatkan "Hello"dengan cepat dengan mengakses nameproperti Hellofungsi. Kemudian saya menggabungkan karakter koma dan spasi dengan menggunakan String.fromCharCode.

Trik berikutnya adalah mendapatkan "World"bagian dari string. Saya tidak bisa menggunakan metode yang sama dengan yang saya dapatkan Hello, karena saya tidak bisa memanggil World.name. Alih-alih, saya memasukkan logika itu ke dalam metode Dunia, dan memintanya.

Akhirnya, saya menambahkan tanda seru terakhir dan mengirim hasilnya langsung ke fungsi log, yang tentu saja console.log.


7

Perl

Dalam Perl modern (5.10 atau lebih baru):

print q{Hello} and print chr 44 and print q{ World} and say chr 33

Dalam Perl yang lebih lama:

print q{Hello} and print chr 44 and print q{ World} and print chr 33 and print chr 10


Kedua solusi di atas menggunakan qoperator seperti kutip Perl dan memungkinkan pembatas selektif untuk mengutip string, misalnya. q{} q[] q() q//

Solusi ini membutuhkan perubahan aturan yang memungkinkan kawat gigi, tanda kurung atau paren. Jadi sementara benar-benar valid saya pikir mniipjawaban Perl sangat lebih dalam semangat sejati aturan (+1).

Namun mengambil daun keluar dari mniipjawaban solusi saya dapat ditulis seperti ini:

print q xHellox and print chr 44 and print q x Worldx and say chr 33

dan meskipun lebih keras pada mata itu berhasil.


1
Anda kehilangan koma
mniip

1
@mniip - Terima kasih lagi. Sekarang telah menambahkan koma yang hilang.
draegtun

Sepertinya AppleScript tanpa verbositas
Ming-Tang

Di Mac saya, baris Perl pertama dan ketiga tidak berfungsi, hanya baris Perl kedua yang berfungsi. Saya memiliki Perl 5.16.2.
Nicolas Barbulesco

syntax error at -e line 1, near "say chr"
Nicolas Barbulesco

7

Perl

print chr hex for qw z48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21z

6

Python:

import antigravity 

menyebabkan "Halo, dunia!" muncul di layar Anda. Tidak percaya padaku Cobalah sendiri! Juga, ini sebenarnya tidak menggunakan web, itu membuka browser, yang mungkin mencari situs web.


1
Saya memiliki layar tinggi 768-piksel, jadi "Halo, dunia!" tidak muncul di layar saya.
Olivier Grégoire

1
Ini tidak menulis "Halo, dunia!" di mana saja di bidang visi saya. Tetapi ini membuka xkcd.com/353/ di Safari!
Nicolas Barbulesco

Saya tidak menggunakan Web sekarang. Saya menulis di browser, yang mungkin terhubung ke situs Web.
Nicolas Barbulesco

sciyoshi.com/2008/12/import-antigravity Kode ini membutuhkan Python 3 untuk muncul tetapi tidak akan berjalan dalam Python 3 (kecuali yang telah di-backport).
Maret

5

dc, (26 byte untuk pegolf)

Spasi dan []kurung sekarang diizinkan:

[Hello]n44P[ World]n33P[]p

Keluaran:

$ dc <<< "[Hello]n44P[ World]n33P[]p"
Hello, World!
$ 

5

Rebmu , 46 karakter

pnUPPqHELLO01pnADsp12pnSPpnUPPqWORLD01pnADsp01

Solusi paralel @ dragetun di Rebol (Karena Rebmu adalah alat pengajaran Rebol / Merah yang merupakan "dialek" yang bertujuan untuk menarik perhatian ke bahasa-bahasa dengan menggoyang-goyang kode Golf. :-P)

Namun, untuk mendapatkan karakter yang hilang, saya melakukan sesuatu yang lebih jelas. Saya hanya menambahkan ruang, bukannya pergi dan melihat melalui sistem string. Anda bisa mendapatkan ruang 1 untuk mendapatkan karakter literal # "!" dan tambahkan spasi 12 untuk mendapatkan karakter literal # ",".

Jika kami menjalankan ini, kami dapat melihatnya "tidak dicabut":

>> rebmu/debug/stats "pnUPPqHELLO01pnADsp12pnSPpnUPPqWORLD01prADsp01"
Original Rebmu string was: 46 characters.
Rebmu as mushed Rebol block molds to: 46 characters.
Unmushed Rebmu molds to: 62 characters.
Executing: [pn upp q hello 1 pn ad sp 12 pn sp pn upp q world 1 pr ad sp 1]
Hello, World!

Yang cukup masuk akal:

; print with no newline the result of doing an uppercase/part
; on the quoting of the symbolic word hello, of only the first
; N characters (where N is 1)
pn upp q hello 1

; print the character you get when you add 12 to the space
; character literal, a.k.a. comma...again no newline
pn ad sp 12

; print a space, no newline
pn sp

; do the same trick of printing the quoted word hello with the
; first letter converted to uppercase
pn upp q world 1

; print the character you get when you add 1 to the space
; character literal, a.k.a. exclamation point...with newline now
pr ad sp 1

5

Ruang putih

Oke, kita bisa menggunakan spasi putih. Ini hanya menggunakan Space, Tab, LineFeeddan mengabaikan karakter lainnya.

   	  	   
	
     		  	 	
	
     		 		  
	
     		 		  
	
     		 				
	
     	 		  
	
     	     
	
     			 			
	
     		 				
	
     			  	 
	
     		 		  
	
     		  	  
	
     	    	
	
  


Dengan komentar: S, Tatau Lsarana Space, Tabatau LineFeedmasing-masing.

S S S T S S T   S S S L
T   L
S S S S S T T   S S T   S T L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S T T   T   T   L
T   L
S S S S S T S T T   S S L
T   L
S S S S S T S S S S S L
T   L
S S S S S T T   T   S T T   T   L
T   L
S S S S S T T   S T T   T   T   L
T   L
S S S S S T T   T   S S T   S L
T   L
S S S S S T T   S T T   S S L
T   L
S S S S S T T   S S T   S S L
T   L
S S S S S T S S S S T   L
T   L
S S L
L
L

Dengan menyoroti: http://en.wikipedia.org/wiki/Whitespace_(programming_language)#Sample_code


4

T-SQL, 52

Ah, ini lebih baik! Konversi biner langsung, hanya 52 karakter.

SELECT CAST(0x48656C6C6F2C20576F726C6421 AS VARCHAR)

Sebelumnya...

Ada solusi yang jauh lebih pintar dan golf untuk ini yang akan bekerja jika kita bisa menggunakan =dan +(Mencari data bawaan bawaan dalam msdb dan menggunakannya untuk membangun string kueri yang dapat EXEC)

Tetapi karena kita tidak bisa, Anda mendapatkan pendekatan naif ini:

SELECT CHAR(72)SELECT CHAR(101)SELECT CHAR(108)SELECT CHAR(108)SELECT CHAR(111)SELECT CHAR(44)SELECT CHAR(32)SELECT CHAR(87)SELECT CHAR(111)SELECT CHAR(114)SELECT CHAR(108)SELECT CHAR(100)SELECT CHAR(33)

1
Saya tahu, kurangnya operator gabungan membunuh saya ... Saya mencoba memikirkan cara untuk melakukannya dengan JavaScript ...
WallyWest

1
Ya, meskipun tantangan ini tampaknya menghasilkan sebagian besar jawaban yang naif, itu pasti mengilhami beberapa pemintalan otak yang menarik untuk mencoba menemukan pendekatan non-concatenative yang menarik.
Jonathan Van Matre

Anda bisa melakukan yang lebih baik. Gunakan PRINT daripada SELECT. Dan secara implisit dilemparkan dengan LTRIM () atau RTRIM (). Saya melakukan hal serupa di sini .
Muqo

4

Python:

Pfff, siapa yang butuh bagian numerik dari alfanumerik?

from string import lowercase
from string import uppercase
from string import punctuation
print uppercase[len(str([[[len(str())]]]))]
print lowercase[len(str([[]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([[[[[[[]]]]]]]))]
print punctuation[len(str([[[[[len(str())]]]]]))]
print
print uppercase[len(str([[[[[[[[[[[]]]]]]]]]]]))]
print lowercase[len(str([[[[[[[]]]]]]]))]
print lowercase[len(str([[[[[[[[len(str())]]]]]]]]))]
print lowercase[len(str([[[[[len(str())]]]]]))]
print lowercase[len(str([len(str())]))]
print punctuation[len(str())]

Ini tergantung pada lokal, sehingga jarak tempuh Anda mungkin bervariasi. Namun, jika Anda benar-benar ingin mereplikasi hasil ini, Anda bisa menggunakan yang berikut sebagai ganti pernyataan impor:

lowercase="abcdefghijklmnopqrstuvwxyz"
uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
punctuation="!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"

(ini bukan bagian dari kiriman saya, ini hanya berbagi tentang penduduk setempat untuk dapat dipulihkan)


4

J - 73 char

Lagipula itu bisa dilakukan!

72 101 108 108 111 44 32 87 111 114 108 100 33{do 1 8{show 0 def 0
take
)

Inilah hal tentang J. Sebagian besar primitif adalah tanda baca ASCII, diikuti hingga dua titik atau titik dua. Primitif yang tidak terbuat dari tanda baca adalah karakter alfanumerik yang diikuti hingga dua titik atau titik dua. Jadi kami tidak diizinkan, kecuali untuk { } [ ]. [dan ]kata kerja identitas dan karenanya tidak berguna.

Untungnya, {array indeks, jadi jika kita memiliki, katakanlah, sebuah string dengan setiap karakter ASCII tunggal ( a., disebut Alphabet ), kita dapat menarik huruf-huruf itu dengan titik-titik kode ASCII mereka. Kami juga memiliki cadangan cara membuat string , 0 : 0dan kemudian barang dan kemudian sendirian ); titik dua yang memiliki alias di pustaka standar def,.

Lalu ada kata kerja di perpustakaan standar show,, yang memberi Anda representasi internal dari kata kerja jika Anda memberikannya nama sebagai string. Ada kata kerja lain do,, yang akan menghasilkan string. Jadi jika kita dapat menarik keluar a.dari representasi seperti itu, kita dapat mengevaluasi itu dan menariknya Hello, World!.

Penyelamat kami datang dalam bentuk take, alias untuk {.yang memiliki anamanya. show'take'akan kembali take=: {., jadi kami memiliki a.solusi kami dan karenanya.

Kita dapat menghilangkannya {dengan menggunakan yang pada dasarnya setara pickdari pustaka standar, tetapi paren pada akhirnya tidak dapat dihindari.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.