Kolmogorov-mania

32

The Kolmogorov kompleksitas dari string s didefinisikan sebagai panjang dari Program terpendek P yang output s. Jika panjang P lebih pendek dari panjang s, maka s dikatakan dapat kompres , jika tidak maka s tidak dapat dimampatkan . Sebagian besar string tidak dapat dimampatkan ...

Tulis program terpendek yang menghasilkan string ini (tanpa spasi dan tanpa baris baru):

d9 a6 b6 33 56 a7 95 4b 29 b0 ac 7f 2a aa 6d 19 b8 4b 4c f8 b6 2a ac 95 
a1 4b 4e a5 9d b3 e7 c9 4c 49 59 ec 94 b3 aa 6c 93 8f 11 5a 4d 39 75 82 
ec ea 24 cc d3 2d c3 93 38 4e b7 a6 0d d2 b5 37 23 54 ad 1b 79 aa 6e 49 
55 52 94 5a a7 3a 6a e9 e4 52 cd 2d 79 ad c6 12 b5 99 5b b4 76 51 17 4e 
94 f3 9a a2 e7 15 6a 55 14 4d 4e 4a a3 5c 2f ab 63 cc b5 a6 a4 92 96 8a 
2e c3 d8 88 9b 8c a9 16 f5 33 22 5b a2 e2 cc 1b 27 d4 e8 db 17 a4 39 85 
ca aa 5b 4f 36 24 d3 c6 f6 94 ad d7 0f 71 24 e1 b1 c5 ef 65 35 6c 8d d7 
1a 87 1e 25 df 5d c0 13 b2 6f 5a 57 28 98 bd 41 66 04 ed a2 52 c9 ac 83 
b3 6c 56 7e d1 c6 cc 53 4a 62 c5 59 a9 b2 d4 af 22 a5 a9 f4 b2 99 23 32 
f8 fb ae 48 6a 8a 9a b5 46 7a 36 59 9f 92 d3 25 b5 19 bd 8a 4a 49 62 a5 
e4 59 fb e5 ba a2 35 dd a9 36 1d a9 c9 69 89 77 6a b2 34 2d 1d 22 61 c5 
c2 66 1c e2 76 74 52 a5 d9 84 b9 8a a6 b5 14 ec 29 58 b2 bc 96 16 16 48 
f5 c5 bd 2f 32 1b 3d 4f 4b 2e b2 6b 9a d9 32 a4 4b 5c bc 92 b7 b3 26 39 
fa 42 2d 64 ed 1a 79 49 4c a3 b7 85 b2 a6 e2 8c d9 55 90 e1 a8 87 4b 60 
a6 e1 ba c4 bb ec 32 39 76 90 a6 b4 c6 65 79 61 91 aa 3d 54 b7 18 3d 15 
4b 06 db 30 8a 4d 4a a1 35 75 5d 3b d9 98 ac 55 5b 10 dd b3 e2 cc f1 5e 
b3 2b 53 90 b6 ee 2b ac 8f 88 8d 95 5a 75 df 59 2d 1c 5a 4c e8 f4 ea 48 
b9 56 de a0 92 91 a9 15 4c 55 d5 e9 3a 76 8e 04 ba e7 b2 aa e9 ab 2a d6 
23 33 45 3d c4 e9 52 e3 6a 47 50 ba af e4 e5 91 a3 14 63 95 26 b3 8b 4c 
bc aa 5a 92 7a ab ad a6 db 53 2e 97 06 6d ba 3a 66 49 4d 95 d7 65 c2 aa 
c3 1a 92 93 3f ca c2 6c 2b 37 55 13 c9 88 4a 5c 62 6b a6 ae cc de 72 94 

Outputnya akan terlihat seperti:

d9a6b63356a7954b29b0ac7f2aaa6d19b84b4cf8b62aac95a14b4e...7294

Catatan: tidak ada input pengguna yang diizinkan, atau akses web, atau perpustakaan (kecuali yang diperlukan untuk mencetak output).

Sunting I: urutannya tampak acak ... tetapi ternyata sangat kompresif menangani sedikit bilangan prima ...

Sunting II: Bagus sekali! Saya akan meninjau jawaban dalam beberapa jam ke depan, lalu memberikan hadiah. Ini adalah ide saya tentang bagaimana hal itu dapat diselesaikan:

  1. Jika Anda mencoba mengompres data Anda tidak pergi jauh ...
  2. Di internet, Anda dapat menemukan Encyclopedia On-Line Sequences Integer (OEIS) (terkenal? );
  3. mencoba digit heksadesimal pertama d9, a6, b6, 33, ...(atau representasi desimalnya) tidak memberikan hasil;
  4. tetapi jika Anda mengonversi angka menjadi biner ( 1,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0) dan mencarinya di OEIS, Anda mendapatkan hasil ini .
  5. Seperti dicatat oleh Claudiu, saya juga memberi sedikit petunjuk dalam pertanyaan (Edit I di atas) ... :-)

Pemenangnya adalah : Peter Taylor (GolfScript, 50), dengan perhatian khusus untuk Claudiu (Python, 92), orang pertama yang "memecahkan" itu.

Marzio De Biasi
sumber
2
Bagaimana ini lebih menarik daripada pertanyaan komogorov-kompleksitas lainnya ?
Gagang pintu
2
@Doorknob: mungkin tidak ada ... setidaknya sampai seseorang mengirim jawaban :-)
Marzio De Biasi
5
Apakah ini seharusnya menjadi permainan "Tebak konstanta"?
Peter Taylor
7
Jangan berikan solusinya! Orang-orang mengerjakannya :-)
Mau
3
Saya pikir kontes harus dalam dua bagian. Bagian pertama adalah hadiah yang diberikan kepada mereka yang menemukan jawabannya. Bagian kedua adalah hadiah yang diberikan kepada mereka yang benar-benar tahu cara mengompres kode dan menghasilkan yang terkecil. Saat ini, ini lebih merupakan pertanyaan "tebak algoritme saya", yang tidak termasuk orang bodoh seperti saya, tetapi juga pro golf kode nyata, (yang saya juga tidak tahu), dan mereka yang tahu APL dan bahasa lain yang singkat (masih bukan saya ).

Jawaban:

11

GolfScript (50 byte)

$ wc -c codegolf24909.min.gs 
50 codegolf24909.min.gs
$ md5sum codegolf24909.min.gs 
ce652060039fba071d17333a1199fd72  codegolf24909.min.gs
$ time golfscript.rb codegolf24909.min.gs 
d9a6b63356a7954b29b0ac7f2aaa6d19b84b4cf8b62aac95a14b4ea59db3e7c94c4959ec94b3aa6c938f115a4d397582ecea24ccd32dc393384eb7a60dd2b5372354ad1b79aa6e495552945aa73a6ae9e452cd2d79adc612b5995bb47651174e94f39aa2e7156a55144d4e4aa35c2fab63ccb5a6a492968a2ec3d8889b8ca916f533225ba2e2cc1b27d4e8db17a43985caaa5b4f3624d3c6f694add70f7124e1b1c5ef65356c8dd71a871e25df5dc013b26f5a572898bd416604eda252c9ac83b36c567ed1c6cc534a62c559a9b2d4af22a5a9f4b2992332f8fbae486a8a9ab5467a36599f92d325b519bd8a4a4962a5e459fbe5baa235dda9361da9c96989776ab2342d1d2261c5c2661ce2767452a5d984b98aa6b514ec2958b2bc96161648f5c5bd2f321b3d4f4b2eb26b9ad932a44b5cbc92b7b32639fa422d64ed1a79494ca3b785b2a6e28cd95590e1a8874b60a6e1bac4bbec32397690a6b4c665796191aa3d54b7183d154b06db308a4d4aa135755d3bd998ac555b10ddb3e2ccf15eb32b5390b6ee2bac8f888d955a75df592d1c5a4ce8f4ea48b956dea09291a9154c55d5e93a768e04bae7b2aae9ab2ad62333453dc4e952e36a4750baafe4e591a314639526b38b4cbcaa5a927aabada6db532e97066dba3a66494d95d765c2aac31a92933fcac26c2b375513c9884a5c626ba6aeccde7294

real    365m11.938s
user    364m45.620s
sys     0m6.520s

Karena semua orang sekarang mengungkapkan kode mereka, saya juga akan mendahului permintaan OP untuk tidak mengganggu:

38200,{:x,{)x\%!},,2=},4/{3\{2&!!1$++}/.57>39*+}%+

Ikhtisar diseksi

  • Hitung bilangan prima lebih kecil dari N dengan N = 38200: ini memberikan 4032 bilangan prima pertama:38200,{:x,{)x\%!},,2=},
  • Kami ingin satu bit per prime, dengan konversi hex, jadi bagi mereka menjadi 4 kelompok: 4/
  • Untuk setiap grup, petakan setiap prime pke p&2 != 0, dan lakukan konversi basis-2 ke basis-16: {3\{2&!!1$++}/.57>39*+}%(di sinilah trik-trik menariknya)
  • Kami sekarang memiliki array nilai ASCII, ditambah string kosong dari stdin; gabungkan mereka untuk mendapatkan string tunggal untuk keluaran:+

Diseksi yang lebih rinci tentang konversi basis

Dengan tumpukan yang berisi string kosong dan daftar bilangan prima, kita perlu melakukan dua konversi:

  1. Ubah setiap prime menjadi sedikit yang menunjukkan apakah itu sama dengan 2 atau 3 (mod 4)
  2. Ubah bit menjadi hex digit

Ada banyak cara yang sama panjang untuk dilakukan 1; misalnya

{4%1>}%
{4%2/}%
{2/1&}%
{2/2%}%
{2&!!}%

atau bahkan

{2&}% followed by a 2/ after the base conversion

Untuk 2, pendekatan yang jelas adalah

2base 16base{'0123456789abcdef'=}%+

Tetapi basis adalah kata yang panjang, dan karena 16 = 2 4 kita dapat dengan mudah menyimpan beberapa karakter

4/{2base'0123456789abcdef'=}%+

Sekarang limbah yang paling jelas adalah 18 karakter yang dikhususkan untuk string itu. Kami hanya ingin fungsi dari angka ke kode ASCII. Kami ingin memetakan 0ke '0' = 48, ..., 9ke '9' = 57, 10ke 'a' = 97, ... 15ke 'f' = 102.

4/{2base.9>39*+48+}%+

Tapi sekarang lemparkan ke campuran larangan base. Kita perlu mengimplementasikannya sendiri. Implementasi yang jelas (ke arah ini, yang mudah) adalah k baselipatan {\k*+}*. Alternatif sedikit lebih panjang adalah iterasi sederhana, yang membutuhkan kasus dasar: 0\{\k*+}/. Basis 2 sedikit istimewa: 1$++setara dengan \2*+untuk panjang yang sama, dan saya telah mengambil pendekatan itu.

Keduanya lebih panjang dari 5-char 2base, tetapi karena kita sekarang mengulangi nilai-nilai kita dapat menarik bagian 1 untuk memiliki satu loop. Kami ganti

{2&!!}%4/{2base.9>39*+48+}%+

dengan

4/{{2&!!1$++}*.9>39*+48+}%+

untuk penghematan 1-char yang bagus, atau

4/{0\{2&!!1$++}/.9>39*+48+}%+

untuk kerugian 1-char.

Tetapi meskipun kerugian 1-char itu terlihat seperti langkah mundur, pertimbangkan apa yang terjadi pada 0. Itu dikalikan dengan 16 dan ditambahkan ke output konversi basis. Dan hal terakhir yang kami lakukan adalah menambahkan kelipatan 16 pada output. Jadi kita bisa menggabungkan keduanya sebagai

4/{3\{2&!!1$++}/.57>39*+}%+

Sambungan terpendek dan kepintaran bonus membuatnya lebih menarik.

Peter Taylor
sumber
1
360 menit! Cukup lama. Bertanya-tanya pendekatan apa yang Anda ambil .. milik saya <1 mnt
Claudiu
4
@Claudiu, saya bisa membuatnya jauh lebih cepat, tetapi itu akan menambah sekitar 5 karakter, dan ini adalah kolmogorov-kompleksitas daripada kode-golf dengan batasan waktu.
Peter Taylor
Berapa banyak yang bisa Anda dapatkan jika digunakan base? Semua solusi lain menggunakan yang setara (penggunaan tambang hex, penggunaan C satu printf("%x"), penggunaan haskell showHex)
Claudiu
1
@Cudiudiu, sebenarnya pendekatan terbaik saya saat baseini lebih lama daripada yang ini, karena saya melakukan sebagian besar optimasi setelah mengklarifikasi bahwa saya tidak bisa menggunakannya. basememberi saya nilai dari 0 hingga 15, jadi masih perlu beberapa pekerjaan untuk dikonversi ke 0-9a-f. Saya mungkin mengunjungi kembali menggunakan basebeberapa titik, tetapi tidak malam ini.
Peter Taylor
32

Python, 92 karakter

Ini dia tuan-tuan, kodenya sendiri!

>>> code = "R=range;print hex(int(''.join(`i/2%2`for i in R(38198)if all(i%x for x in R(2,i))),2))[2:-1]"
>>> len(code)
92
>>> exec code
d9a6b63356a7954b29b0ac7f2aaa6d19b84b4cf8b62aac95a14b4ea59db3e7c94c4959ec94b3aa6c938f115a4d397582ecea24ccd32dc393384eb7a60dd2b5372354ad1b79aa6e495552945aa73a6ae9e452cd2d79adc612b5995bb47651174e94f39aa2e7156a55144d4e4aa35c2fab63ccb5a6a492968a2ec3d8889b8ca916f533225ba2e2cc1b27d4e8db17a43985caaa5b4f3624d3c6f694add70f7124e1b1c5ef65356c8dd71a871e25df5dc013b26f5a572898bd416604eda252c9ac83b36c567ed1c6cc534a62c559a9b2d4af22a5a9f4b2992332f8fbae486a8a9ab5467a36599f92d325b519bd8a4a4962a5e459fbe5baa235dda9361da9c96989776ab2342d1d2261c5c2661ce2767452a5d984b98aa6b514ec2958b2bc96161648f5c5bd2f321b3d4f4b2eb26b9ad932a44b5cbc92b7b32639fa422d64ed1a79494ca3b785b2a6e28cd95590e1a8874b60a6e1bac4bbec32397690a6b4c665796191aa3d54b7183d154b06db308a4d4aa135755d3bd998ac555b10ddb3e2ccf15eb32b5390b6ee2bac8f888d955a75df592d1c5a4ce8f4ea48b956dea09291a9154c55d5e93a768e04bae7b2aae9ab2ad62333453dc4e952e36a4750baafe4e591a314639526b38b4cbcaa5a927aabada6db532e97066dba3a66494d95d765c2aac31a92933fcac26c2b375513c9884a5c626ba6aeccde7294
>>> import hashlib; hashlib.sha256(code).hexdigest()
'60fa293bbe895f752dfe208b7b9e56cae4b0c8e4cdf7c5cf82bf7bab60af3db6'

Marzio meninggalkan sedikit pintar dengan mengatakan bahwa "itu ternyata sangat kompresibel menangani sedikit bilangan prima". Saya yakin "sedikit" itu tidak dicetak miring secara tidak sengaja, jadi saya mengubah string heks menjadi bit dan mencoba menemukan pola. Saya pikir pada awalnya dia mewakili semua bilangan prima sebagai bit dan menyatukannya, tetapi itu tidak berhasil. Maka mungkin mengambil hanya beberapa digit, atau menjatuhkan semua nol dalam string bit - masih belum. Mungkin itu adalah bitstring dari bit paling tidak penting dari beberapa bilangan prima pertama? Tidak terlalu. Tapi akhirnya saya menemukan yang berhasil - ini adalah bitstring dari bit paling tidak signifikan kedua dari bilangan prima pertama namun banyak.

Jadi, kode saya tidak hanya itu: menghasilkan bilangan prima yang cukup, ambil bit kedua dari masing-masing ( i/2%2), menggabungkannya sebagai string biner, kemudian mengubahnya menjadi basis-10 ( int(..., 2)) dan kemudian ke basis-16 ( hex(...)).

Claudiu
sumber
1
Besar! Saya baru mengenal kode golf, tetapi hash stuff adalah cara yang baik untuk membuat orang lain bersenang-senang menemukan "cara melakukannya". Saya akan menunggu dua hari, lalu membuka hadiah (bahwa saya akan menghargai kepercayaan :).
Marzio De Biasi
5
@MarzioDeBiasi: Tentu berhasil! Atau mungkin lebih baik untuk mengatakan Anda akan menghargainya pada hari sebelum hadiah jatuh tempo, dan jika pemenang tidak mengungkapkan jawabannya, yang ke-2 menang, dll ... mengapa mengandalkan kepercayaan ketika Anda tidak harus ?
Claudiu
Mengapa kode dalam hashlib belum dihitung? Bukankah itu kode yang sedang dijalankan untuk menghasilkan output?
philcolbourn
2
@ philcolbourn: Tidak, kode tidak menggunakan hashlib. Hanya untuk menghasilkan hash sha256 jadi besok saya bisa membuktikan saya menulis kode ketika saya pertama kali memposting ini. Anda akan melihat besok!
Claudiu
@Cudiudiu: Sekarang Anda harus menjelaskan kepada saya bagaimana Anda memecahkan masalah! Sudah selesai dilakukan dengan baik!
rubik
9

Haskell, 105

Hash SHA1: a24bb0f4f8538c911eee59dfc2d459194ccb969c

Keluaran:

d9a6b63356a7954b29b0ac7f2aaa6d19b84b4cf8b62aac95a14b4ea59db3e7c94c4959ec94b3aa6c938f115a4d397582ecea24ccd32dc393384eb7a60dd2b5372354ad1b79aa6e495552945aa73a6ae9e452cd2d79adc612b5995bb47651174e94f39aa2e7156a55144d4e4aa35c2fab63ccb5a6a492968a2ec3d8889b8ca916f533225ba2e2cc1b27d4e8db17a43985caaa5b4f3624d3c6f694add70f7124e1b1c5ef65356c8dd71a871e25df5dc013b26f5a572898bd416604eda252c9ac83b36c567ed1c6cc534a62c559a9b2d4af22a5a9f4b2992332f8fbae486a8a9ab5467a36599f92d325b519bd8a4a4962a5e459fbe5baa235dda9361da9c96989776ab2342d1d2261c5c2661ce2767452a5d984b98aa6b514ec2958b2bc96161648f5c5bd2f321b3d4f4b2eb26b9ad932a44b5cbc92b7b32639fa422d64ed1a79494ca3b785b2a6e28cd95590e1a8874b60a6e1bac4bbec32397690a6b4c665796191aa3d54b7183d154b06db308a4d4aa135755d3bd998ac555b10ddb3e2ccf15eb32b5390b6ee2bac8f888d955a75df592d1c5a4ce8f4ea48b956dea09291a9154c55d5e93a768e04bae7b2aae9ab2ad62333453dc4e952e36a4750baafe4e591a314639526b38b4cbcaa5a927aabada6db532e97066dba3a66494d95d765c2aac31a92933fcac26c2b375513c6884

Edit: Kode:

import Numeric;f(x:z)s=f[y|y<-z,0/=mod y x]$s*2+quot(mod x 4)2;f[]s=s;main=putStr$showHex(f[2..38198]0)""

Saya melewatkan aturan tentang tidak menggunakan fungsi pustaka kecuali untuk mencetak (putStr). Saya akan berasumsi bahwa operator matematika, sementara mereka secara teknis berfungsi, diizinkan.

pengguna253751
sumber
9

C, 136 116 109 103 karakter

Baiklah kalau begitu, inilah usaha saya:

i;p;q;main(n){for(;n++,q<4032;){for(i=1;++i<n&&n%i;);if(i==n)p+=p+(n&2)/2,p=++q&3?p:printf("%x",p)*0;}}

MD5 hash = f638552ef987ca302d1b6ecbf0b50e66
osifrque melengking
sumber
1
Karena printfmengembalikan jumlah karakter yang ditulis, yang selalu non-nol di sini, Anda dapat menggunakan !printf(...)alih-alih printf(...)*0menyimpan satu karakter.
user12205
@ace * menampar dahi * Ah, kenapa aku tidak memikirkan itu ?? Terima kasih ace, seperti biasa :-) (Semoga meninggalkan kode apa adanya, karena seharusnya cocok dengan hash MD5.)
ossifrage melengking
7

JS, 764

jika kita menganggap string ini sebagai base64, kita dapat memiliki versi yang lebih kecil menggunakan versi un-base-64-ed:

btoa("wÖºo­÷离÷ÛÖôiÎßÙ¦éÝ}oÎáÇüo­iÏyk^áæ¹õÖ÷{·=áÎ=ç×÷÷i®÷×^ZáÝýï6yÇÛw}swßÎo¶ºÑ×voûÛ~xiÝ[ïÖéî=çv÷Zk½Ú駽{vqÝïÖs­vo}å¶øï®u×¾÷÷õ¦¶{½yé®y×áîk~\Ùöëwoºkv÷¯Ùç7wÏ<õ¿kÝz÷Ûn[kg¶qÍ[Û·x{Ç[׶¸ßß9q¦å¾ß­¸ww:¯xi×{ÑþõÛµoW9yþ¹ßñ×{Õ¯;Õí¹uþ]sMwonå®{ÛÏ|mÞ5ë­8yÖ¶çg=iÏ7o~ç®ÞwW:qÎw᮶s}kÖöwÛf¹k×øoo}Û}öÇÛiî<é¯õ¦ùã®Úß®}õÿvw}¹o}mßá®=ëf¹{}}·¹m¦¶ß]kÝúÕÖ½sÞ½óÞûé¦ößÕݶëW9snºÕǶï®øçf¹wß8oßk¦ù×ÛÞ|ofÜ÷­z×®<9mÝßm[ÝÞá½onõ§}ßf¸á¾\mÏvo¶÷Û­ý}®6ÙÞ¸yÝZïÞ=áÆ·o¿9ofº{owÞy÷GµkÏ;á¾´k§µm§8m·ßmýï¯tk¦øs®¹ïÞµ÷VÝÞxo½|ÝÝyá½:u½ôñ®á¦µßùåÝÛwß|iÎyå½tuÖ÷{g^^o}çto§Ù¶ñÿ<ñßyå®ùuþ}ÙÝ\å®{Çøy®<oÞzuæ´÷oukÝyáÎyw½Ý®úñí8m§»of{ÖÙ§zÛ}÷ãÝs½çg·é®;çFÚi÷¸{uk}xëyÛ¦÷ñ¾mÆå¯ví¦iÖºu¾wÙï{Ó®m­Úë®=áßyw¾¹sfs}Z÷owÝ÷snÙ½ûçwsß<á®\ënk¦qÇ^ïox")

Tapi saya pikir penulis ingin kita menemukan logika di balik string non-acak ini.

xem
sumber
1
untuk menghindari "downvotes rush", saya menambahkan beberapa detail dalam pertanyaan :-)
Marzio De Biasi
4

Mathetmatica - 56

Misterinya sudah terpecahkan, jadi tinggal menerapkan idenya

⌊.5Prime@Range@4032⌋~Mod~2~FromDigits~2~IntegerString~16
desir
sumber
Bagus. Saya ingin tahu apa kemungkinan terpendek sekarang adalah kucing keluar dari tas
Claudiu
Apakah Anda menyebutnya "tidak ada perpustakaan (kecuali yang diperlukan untuk mencetak output)"?
Peter Taylor
@PeterTaylor Yap, tanpa impor - tanpa perpustakaan.
desir
Menilai dari komentar, saya kira OP tidak bermaksud menafsirkannya.
Peter Taylor
3

J - 46 char

Jangan pikirkan aku, hanya mencatat J golf di sini untuk anak cucu. Tidak cukup pintar untuk memahami triknya.

4[1!:2&4'0123456789abcdef'{~#.2|<.-:p:i.1007 4

Dijelaskan:

  • p:i.1007 4- Buat 1007-baris, 4-kolom matriks bilangan bulat dari 0, lalu ambil bilangan prima yang sesuai dengan bilangan bulat itu. Ya, p:adalah builtin J. Ya, kami empat bilangan prima pendek.

  • 2|<.-:- Membagi dua setiap angka ( -:), lantai itu ( <.), dan ambil modulo 2 itu ( 2|). Ini sama dengan mengambil bit signifikan berikutnya-untuk-sewa.

  • #.- Konversi setiap baris hasil dari basis 2 menjadi bilangan bulat. Ini memberi kita 1007 angka dari 0 hingga 15 inklusif.

  • '0123456789abcdef'{~#.- Ambil setiap baris matriks bit ini sebagai biner untuk sebuah angka, dan gunakan angka itu untuk memilih dari daftar digit hex. Ini mengkonversi setiap empat bit ke dalam hex.

  • 1!:2&4- J interpreter memiliki masalah dengan menghasilkan string yang lebih panjang dari 256 karakter, jadi kami harus mengirim data ini langsung ke stdout. Anda memenangkan beberapa, Anda kehilangan beberapa.

  • 4[- Akhirnya, buang hasil dari 1!:2dan sebagai gantinya output yang hilang 4 dari output. Kami melakukan ini karena lebih pendek daripada memasukkan empat bilangan prima terakhir dan mengembalikan hasil kosong di sini.

algoritme hiu
sumber
0

JS, 503

Mengikuti ide @xem:

s='Ù¦¶3V§K)°¬*ªm¸KLø¶*¬¡KN¥³çÉLIY쳪lZM9uìê$ÌÓ-Ã8N·¦\nÒµ7#T­yªnIURZ§:jéäRÍ-y­Æµ[´vQNó¢çjUMNJ£\/«c̵¦¤.ÃØ©õ3"[¢âÌ'+"'"+'ÔèÛ¤9ʪ[O6$ÓÆö­×q$á±Åïe5l×%ß]À²oZW(½Afí¢Rɬ³lV~ÑÆÌSJbÅY©²Ô¯"¥©ô²#2øû®HjµFz6YÓ%µ½JIb¥äYûåº\n5Ý©6©Éiwj²4-"aÅÂfâvtR¥Ù¹¦µì)X²¼HõŽ/2=OK.²kÙ2¤K\¼·³&9úB-díyIL£·²¦âÙUá¨K`¦áºÄ»ì29v¦´Æeyaª=T·=KÛ0MJ¡5u];Ù¬U[ݳâÌñ^³+S¶î+¬ZußY-ZLèôêH¹VÞ ©LUÕé:vºç²ªé«*Ö#3E=ÄéRãjGPº¯äå£c&³L¼ªZz«­¦ÛS.mº:fIM×eªÃ?ÊÂl+7UÉJ\bk¦®ÌÞr'
r=''
for(var i=0;i<s.length;i++) r+=s.charCodeAt(i).toString(16);
console.log(r)
Antonio Ragagnin
sumber
0

Mathematica, 55

Prime~Array~4031~BitAnd~2~FromDigits~2~IntegerString~16

Diuji pada Mathematica 8. Ini menggunakan dua pengamatan:

  • Mathematica FromDigitssebenarnya tidak memeriksa rentang angka yang diberikan, jadi jika Anda menerapkannya ke daftar formulir, {2,0,2,2,0,...}Anda hanya mendapatkan hasil dua kali lipat seolah-olah melamar {1,0,1,1,0,...}. Tapi itulah bentuk yang dihasilkan olehBitAnd bilangan prima dengan 2.
  • Bit terakhir dari angka yang representasi heksadesimalnya kita inginkan adalah nol (seperti yang dibuktikan oleh string yang berakhir dengan angka genap), jadi itu hanya dua kali angka yang Anda dapatkan dengan satu prime lebih sedikit. Tapi faktor dua adalah persis apa yang kita dapatkan dari menggunakan pengamatan sebelumnya, jadi semuanya sangat cocok.
celtschk
sumber