Halo Dunia!!! Distribusi fibonacci


21
  1. Program Anda harus menampilkan dengan tepat: Hello world!!!dengan atau tanpa linefeed sesudahnya.
  2. Program Anda tidak boleh menerima input.
  3. Distribusi karakter kode sumber harus benar sesuai dengan:
    • Jumlah karakter numerik (0-9) harus tepat satu nomor urutan fibonacci.
    • Jumlah karakter non-numerik lainnya ! (0-9) dalam kode sumber harus persis nomor urutan fibonacci sebelum nomor urutan fibonacci di atas.

Empat contoh distribusi karakter yang valid dalam kode sumber:

  • 13 numerik, 8 karakter non-numerik.
  • 34 numerik, 21 karakter non-numerik.
  • 55 numerik, 34 karakter non-numerik.
  • 89 numerik, 55 karakter non-numerik.

Ini adalah kode-golf, kode terpendek dalam byte yang menang! Semoga berhasil!

Sunting: Karena pertanyaan ini memiliki kendala pada ukuran kode sumber dalam kombinasi dengan menjadi kode-golf, jawaban yang diterima (jika lebih dari satu bagian memiliki panjang karakter yang sama) akan menjadi jawaban dengan suara terbanyak (dan jumlah karakter paling sedikit): 2014- 03-01.


6
Dengan demikian, semua solusi memiliki jumlah karakter yang merupakan nomor fibonacci.
Howard

1
Berikut adalah program untuk memvalidasi jawaban (tempel kode ke dalam kotak input.)
Justin

1
Apakah mungkin untuk melakukan ini dalam waktu kurang dari 55 karakter? Output yang diperlukan memiliki 14 karakter, dan saya tidak bisa memikirkan bahasa yang bisa menggunakan angka untuk menampilkan karakter tanpa menggunakan setidaknya satu karakter per karakter.
Justin

2
@ Patrick jelas tidak apa
John Dvorak

1
Oke, kalau begitu saya tidak akan mengubah aturan :)
Plarsen

Jawaban:


27

Prompt Perintah Windows - 34, 8 , 5 karakter, (2 di bawah)

* Yang ini mungkin atau mungkin tidak melanggar aturan 2, tapi ini dia

%~099

Beri nama file:

&start call echo Hello world!!!&exit -b .cmd


Sekarang mari kita sedikit korup sistem file - 2 karakter (atau kurang jika Anda mau)

A1

Beri nama file (menggunakan metode ortodoks pilihan Anda):

"&start call echo Hello world!!!&exit&.cmd

Bagaimana cara kerjanya:

Karena skrip cmd dipanggil dengan 'cmd.exe / C "% 1"% *' perintah yang dijalankan adalah:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

yang akan dalam urutan sebagai berikut:

  • Gagal menjalankan "c: \ PATH_TO_THE_SCRIPT \"
  • Buka pencetakan shell baru Halo dunia! \ N
  • Keluar dari shell asli

2
Wow! Saya pikir kami telah mendapatkan pemenang jika aturan tidak mengatakan tidak ada input. Tetap memberi +1 untuk pemikiran di luar kotak.
Plarsen

2
Code golf dengan Windows CMD ... +1. Juga, dapat diperdebatkan bahwa "tanpa input" dapat berarti "tanpa membaca STDIN": P
Camilo Martin

1
Itu trik yang menarik untuk golf kode lain juga… tulis kode asli dalam nama file dan gunakan sesuatu seperti eval $0untuk menjalankannya <rolleyes>
Tobia

1
Itu tidak mungkin!! 5 karakter? Pendekatan yang sangat menarik
Plarsen

1
Bahkan, saya baru saja memposting solusi 2 char di bawah ini.
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Ini adalah ekspresi MySQL yang dievaluasi Hello world!!!, dengan asumsi sql_modepengaturannya termasuk PIPES_AS_CONCAT. Berisi persis 21 digit dan 13 non-digit.

Apakah ini memenuhi syarat sebagai entri yang valid, saya serahkan ke juri.

Contoh

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
Apa ... CMD dan SQL kode memenangkan golf ??
Camilo Martin

Itu selectdan ;bisa dibilang bagian dari pernyataan, tetapi masih merupakan solusi cerdas.
Primo

@rimo mereka, itu sebabnya saya tidak yakin apakah ini memenuhi syarat. Tetapi saya pikir saya akan mempostingnya untuk keriuhan ;-)
Tobia


11

GolfScript, 55 karakter

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

Tidak menemukan cara untuk memiliki solusi 34 karakter, jadi saya membuat yang ini.


10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

Memutuskan untuk melakukannya dengan baris baru, karena tidak ada biaya apa pun. Angka-angka adalah nilai gabungan dari deret Fibonacci.


8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

Iya nih. Saya menyia-nyiakan angka mereka. Apa yang akan kamu lakukan?


Siapa tahu pi ~ 3 akan sangat berguna!
Kyle Kanos

1
Pertanyaannya mengatakan 21 non-numerik ditambah 34 angka, jawaban Anda adalah 34 non-numerik plus 21 angka.
user12205

1
"hello world" seharusnya "Hello world"; yang bermodalkan huruf h.
Justin

7

C (89 karakter)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

Meskipun hal di atas valid, sayangnya, upaya saya untuk memadatkannya dengan program berikut tidak memenuhi spesifikasi. Saya merasa layak untuk dilihat dan mungkin orang lain dapat mempersingkatnya (64 karakter, 37 angka, 27 non-angka). Untuk mengkompilasinya, Anda harus menggunakan dentang dan dengan -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}

Compound literals , adalah nama untuk apa yang Anda cari. Saya mencoba menggunakannya untuk mendapatkan 21 karakter sekarang!
charmlessCoin

Hitungan non-numerik terendah yang bisa saya capai adalah 26, dengan membuat iglobal (menghilangkan int). Menggunakan longdapat menghemat koma, tetapi biayanya lebih mahal. 21 sangat jauh.
ugoren

Ya, ini banyak ruang kosong. Dengan menggunakan trik kecil itu, saya bisa melakukannya main(){puts((int[]){1819043144,1870078063,560229490,8481});}tetapi itu masih 60 karakter. Jika saya bisa menghilangkan beberapa ... Edit: wow, jadi global tidak harus memiliki deklarasi? Siapa yang tahu?
vmrob

@vmrob, global harus memiliki deklarasi. Tetapi tipe defaultnya int, jadi a;sama dengan int a;.
ugoren

@ugoren Saya tahu mereka harus memiliki deklarasi, saya hanya tidak menyadarinya default ke int!
vmrob

6

Windows PowerShell (mungkin juga Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

Anda tidak mengatakan apa-apa tentang akses jaringan, jadi inilah solusi kotor. Saya punya URL bit.ly dengan beberapa huruf pada percobaan kedua. Sayangnya, ini masih 21 digit, membutuhkan 34 digit untuk digunakan atau terbuang.


Anda tahu Anda bisa mengedit tautan bit.ly kan?
Timtech

Apa maksudmu mengedit? Juga, saya tidak akan mendapatkan ini di bawah 13 huruf dalam hal apa pun.
John Dvorak

Anda dapat menekan pensil di sebelah "Salin" dan edit tautannya. Jika Anda melakukannya, semua versi lama akan tetap berfungsi.
Timtech

1
Dipendekkan menjadi 34! curl 37.187.42.18/?hw=112358132134
Dom Hastings



5

Bash, 2 karakter

Baiklah, kalau-kalau jawaban Robert tidak didiskualifikasi, ini milik saya:

$0

Beri nama file echo Hello world!!!dan jalankan dengan sh.


5

Python

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

digit: 55 non digit: 34


Perhatikan tidak ada komentar dalam solusi. hanya kode.
Elisha

4

PHP (55 byte)

Program ini menggunakan biner (wow, ini ketiga kalinya saya menggunakan kembali trik yang sama). 21 karakter non-numerik, 34 karakter numerik. Tidak ada surat, karena surat itu membosankan.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@ JanDvorak: Saya hampir yakin saya membaca "sebelum atau sesudah". Oh well, biarkan aku memperbaikinya kalau begitu.
Konrad Borowski

4

Mathematica 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

Keluaran

Hello World!!!

4

Sclipting (34 karakter)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

Sayangnya Sclipting tidak menggunakan karakter ASCII sama sekali, jadi saya harus mengisi program dengan 21 karakter angka yang tidak berguna :(


2

Keempat atau Ruby, 55

(34 numerik + 21 non-numerik)

Keempat

." Hello world!!!" \ 3141592653589793238462643383279502

Rubi

puts"Hello world!!!"#3141592653589793238462643383279502

Menggunakan komentar untuk buku terasa kotor, tetapi itu adalah jawaban yang sah


2

J (55 karakter)

(34 numerik + 21 non-numerik)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.

0

C #, 233 Bytes

233 Karakter
144 Numerik
89 Karakter Non-Numerik

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

Output:

Hello world!!!

0

Japt , 55 byte

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Cobalah online!

Ini pada dasarnya adalah dunia halo sederhana dengan beberapa sampah di awal yang diabaikan tetapi membuat kode memenuhi persyaratan.


-1

Windows Batch

echo Hello World!!!::0123456789012345678901234567890123

12
Wow. Ini sangat berbeda dari solusi sh saya.
user12205

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.