Kolmogorov-mania


32

Độ phức tạp Kolmogorov của một chuỗi s được định nghĩa là độ dài của chương trình P ngắn nhất tạo ra s. Nếu độ dài của P ngắn hơn chiều dài của s, thì s được gọi là có thể nén được , nếu không thì s là không thể nén được . Hầu hết các chuỗi là không thể nén ...

Viết chương trình ngắn nhất xuất ra chuỗi này (không có khoảng trắng và không có dòng mới):

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 

Đầu ra sẽ giống như:

d9a6b63356a7954b29b0ac7f2aaa6d19b84b4cf8b62aac95a14b4e...7294

Lưu ý: không cho phép người dùng nhập, cũng không truy cập web, cũng không phải thư viện (ngoại trừ đầu vào được yêu cầu để in đầu ra).

Chỉnh sửa I: chuỗi có vẻ ngẫu nhiên ... nhưng hóa ra nó có khả năng nén cao khi xử lý một chút số nguyên tố ...

Chỉnh sửa II: Tốt lắm! Tôi sẽ xem lại câu trả lời trong những giờ tiếp theo, sau đó chỉ định tiền thưởng. Đây là ý tưởng của tôi về cách giải quyết nó:

  1. Nếu bạn cố nén dữ liệu bạn không đi xa ...
  2. Trong internet, bạn có thể tìm thấy Từ điển bách khoa toàn thư (nổi tiếng?) Về chuỗi số nguyên (OEIS);
  3. thử các chữ số thập lục phân đầu tiên d9, a6, b6, 33, ...(hoặc biểu diễn thập phân của chúng) không cho kết quả;
  4. nhưng nếu bạn chuyển đổi các số thành nhị phân ( 1,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0) và tìm kiếm chúng trên OEIS, bạn sẽ nhận được kết quả này .
  5. Theo ghi nhận của Claudiu, tôi cũng đã đưa ra một gợi ý nhỏ trong câu hỏi (Chỉnh sửa tôi ở trên) ... :-)

Người chiến thắng là : Peter Taylor (GolfScript, 50), với một đề cập đặc biệt cho Claudiu (Python, 92), người đầu tiên "giải quyết" nó.


2
Làm thế nào điều này thú vị hơn các câu hỏi phức tạp komogorov khác ?
Doorknob

2
@Doorknob: có lẽ không có gì ... ít nhất là cho đến khi ai đó sẽ đăng câu trả lời :-)
Marzio De Biasi

5
Đây có phải là một trò chơi của "Đoán không đổi"?
Peter Taylor

7
Đừng đưa ra giải pháp! Mọi người đang làm việc trên đó :-)
Mau

3
Tôi nghĩ rằng cuộc thi nên có hai phần. Phần đầu tiên là một giải thưởng được trao cho những người tìm thấy câu trả lời. Phần thứ hai là một giải thưởng được trao cho những người thực sự biết cách nén mã và tạo ra nhỏ nhất. Ngay bây giờ, đó là câu hỏi "đoán thuật toán của tôi", loại trừ những người ngu ngốc như tôi, nhưng cũng có những chuyên gia đánh gôn mã thực sự (mà tôi cũng không), và những người biết APL và các ngôn ngữ ngắn khác (vẫn không phải tôi ).

Câu trả lời:


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

Vì mọi người khác hiện đang tiết lộ mã của họ, tôi cũng sẽ yêu cầu trước yêu cầu của OP để không làm phiền:

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

Tổng quan mổ xẻ

  • Tính các số nguyên tố nhỏ hơn N với N = 38200: số này cho 4032 số nguyên tố đầu tiên:38200,{:x,{)x\%!},,2=},
  • Chúng tôi muốn một bit trên mỗi số nguyên tố, với chuyển đổi hex, vì vậy hãy chia chúng thành các nhóm 4: 4/
  • Đối với mỗi nhóm, ánh xạ từng nguyên tố pthành p&2 != 0và thực hiện chuyển đổi từ cơ sở 2 sang cơ sở 16: {3\{2&!!1$++}/.57>39*+}%(đây là nơi có các thủ thuật thú vị)
  • Bây giờ chúng ta có một mảng các giá trị ASCII, cộng với chuỗi rỗng từ stdin; nối chúng để có được một chuỗi cho đầu ra:+

Phân tích chi tiết hơn về chuyển đổi cơ sở

Đưa ra một ngăn xếp chứa một chuỗi rỗng và một danh sách các số nguyên tố, chúng ta cần thực hiện hai chuyển đổi:

  1. Chuyển đổi mỗi số nguyên tố thành một bit cho biết liệu nó có bằng 2 hoặc 3 (mod 4)
  2. Chuyển đổi các bit thành chữ số hex

Có rất nhiều cách dài bằng nhau để làm 1; ví dụ

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

hoặc thậm chí

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

Đối với 2, cách tiếp cận rõ ràng là

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

Nhưng cơ sở là một từ dài và vì 16 = 2 4 chúng ta có thể dễ dàng lưu một vài ký tự bằng

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

Bây giờ chất thải rõ ràng nhất là 18 ký tự dành cho chuỗi đó. Chúng tôi chỉ muốn một chức năng từ chữ số đến mã ASCII. Chúng tôi muốn ánh xạ 0tới '0' = 48, ..., 9đến '9' = 57, 10đến 'a' = 97, ... 15đến 'f' = 102.

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

Nhưng bây giờ ném vào hỗn hợp một lệnh cấm trên base. Chúng ta cần phải tự thực hiện nó. Việc thực hiện rõ ràng (theo hướng này, dễ dàng) k baselà một nếp gấp {\k*+}*. Sự thay thế dài hơn một chút là một phép lặp đơn giản, cần một trường hợp cơ bản : 0\{\k*+}/. Cơ sở 2 hơi đặc biệt: 1$++tương đương với \2*+cùng độ dài và tôi đã thực hiện phương pháp đó.

Cả hai đều dài hơn 5 char 2base, nhưng vì chúng ta hiện đang lặp lại các giá trị, chúng ta có thể kéo vào phần 1 để có một vòng lặp. Chúng tôi thay thế

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

với

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

để tiết kiệm 1-char đẹp, hoặc

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

cho mất 1 char.

Nhưng mặc dù tổn thất 1 char trông giống như một bước lùi, hãy xem xét điều gì xảy ra với 0. Nó được nhân với 16 và được thêm vào đầu ra chuyển đổi cơ sở. Và điều cuối cùng chúng ta làm là thêm bội số của 16 vào đầu ra. Vì vậy, chúng ta có thể kết hợp cả hai như

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

Khớp ngắn nhất và sự thông minh tiền thưởng làm cho nó thú vị hơn.


1
360 phút! Điều đó khá lâu. Tự hỏi cách tiếp cận bạn đã thực hiện .. của tôi mất <1 phút
Claudiu

4
@Claudiu, tôi có thể làm cho nó nhanh hơn rất nhiều, nhưng nó sẽ thêm khoảng 5 ký tự, và đây là độ phức tạp kolmogorov thay vì golf-code với những hạn chế về thời gian.
Peter Taylor

Bao nhiêu bạn có thể nhận được nó xuống nếu bạn sử dụng base? Tất cả các giải pháp khác đều sử dụng một cách tương đương (sử dụng của tôi hex, sử dụng C printf("%x"), sử dụng haskell showHex)
Claudiu

1
@Claudiu, thực ra cách tiếp cận tốt nhất hiện tại của tôi basedài hơn phương pháp này, bởi vì tôi đã thực hiện hầu hết các tối ưu hóa sau khi làm rõ rằng tôi không thể sử dụng nó. basecung cấp cho tôi một giá trị từ 0 đến 15, vì vậy nó vẫn cần một số công việc để chuyển đổi sang 0-9a-f. Tôi có thể xem lại bằng cách sử dụng basetại một số điểm, nhưng không phải tối nay.
Peter Taylor

32

Con trăn, 92 ký tự

Đây là quý bà và quý bà, mật mã!

>>> 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 đã để lại một gợi ý thông minh bằng cách nói rằng "hóa ra nó có khả năng nén rất cao khi xử lý một chút số nguyên tố". Tôi chắc chắn rằng "một chút" không được in nghiêng một cách tình cờ, vì vậy tôi đã chuyển đổi chuỗi hex thành bit và cố gắng tìm các mẫu. Tôi nghĩ rằng lúc đầu anh ấy đại diện cho tất cả các số nguyên tố dưới dạng bit và ghép chúng lại với nhau, nhưng điều đó không thành công. Sau đó, có thể chỉ lấy một vài chữ số hoặc bỏ tất cả các số 0 trong chuỗi bit - vẫn không có. Có lẽ đó là một chuỗi bit có ý nghĩa nhỏ nhất trong vài số nguyên tố đầu tiên? Không hẳn. Nhưng cuối cùng tôi đã tìm thấy một cái hoạt động - đó là một chuỗi bit của bit có ý nghĩa thứ hai ít nhất từ ​​các số nguyên tố đầu tiên.

Vì vậy, mã của tôi thực hiện điều đó: tạo ra các số nguyên tố vừa đủ, lấy bit thứ hai của mỗi ( i/2%2), ghép chúng thành một chuỗi nhị phân, sau đó chuyển đổi nó thành cơ sở 10 ( int(..., 2)) và sau đó thành cơ sở 16 ( hex(...)).


1
Tuyệt quá! Tôi chưa quen với môn đánh gôn, nhưng công cụ băm là một cách tốt để cho người khác vui vẻ khám phá "cách thực hiện". Tôi sẽ đợi hai ngày, sau đó mở tiền thưởng (rằng tôi sẽ thưởng cho sự tin tưởng :).
Marzio De Biasi

5
@MarzioDeBiasi: Chắc chắn là có hiệu quả! Hoặc có thể tốt hơn để nói rằng bạn sẽ thưởng nó vào ngày trước khi tiền thưởng đến hạn, và nếu người chiến thắng không tiết lộ câu trả lời của mình thì người thắng cuộc thứ 2, v.v ... tại sao phải dựa vào niềm tin khi bạn không phải ?
Claudiu

Tại sao mã trong hashlib không được tính? Không phải mã đang được chạy để tạo đầu ra sao?
philcolbourn

2
@philcolbourn: Không có mã nào không sử dụng hashlib. Nó chỉ để tạo ra băm sha256 để ngày mai tôi có thể chứng minh rằng tôi đã viết mã khi lần đầu tiên đăng bài này. Bạn sẽ thấy ngày mai!
Claudiu

@Claudiu: Bây giờ bạn nên giải thích cho tôi làm thế nào bạn giải quyết vấn đề! Làm tốt!
rubik

9

Haskell, 105

Băm SHA1: a24bb0f4f8538c911eee59dfc2d459194ccb969c

Đầu ra:

d9a6b63356a7954b29b0ac7f2aaa6d19b84b4cf8b62aac95a14b4ea59db3e7c94c4959ec94b3aa6c938f115a4d397582ecea24ccd32dc393384eb7a60dd2b5372354ad1b79aa6e495552945aa73a6ae9e452cd2d79adc612b5995bb47651174e94f39aa2e7156a55144d4e4aa35c2fab63ccb5a6a492968a2ec3d8889b8ca916f533225ba2e2cc1b27d4e8db17a43985caaa5b4f3624d3c6f694add70f7124e1b1c5ef65356c8dd71a871e25df5dc013b26f5a572898bd416604eda252c9ac83b36c567ed1c6cc534a62c559a9b2d4af22a5a9f4b2992332f8fbae486a8a9ab5467a36599f92d325b519bd8a4a4962a5e459fbe5baa235dda9361da9c96989776ab2342d1d2261c5c2661ce2767452a5d984b98aa6b514ec2958b2bc96161648f5c5bd2f321b3d4f4b2eb26b9ad932a44b5cbc92b7b32639fa422d64ed1a79494ca3b785b2a6e28cd95590e1a8874b60a6e1bac4bbec32397690a6b4c665796191aa3d54b7183d154b06db308a4d4aa135755d3bd998ac555b10ddb3e2ccf15eb32b5390b6ee2bac8f888d955a75df592d1c5a4ce8f4ea48b956dea09291a9154c55d5e93a768e04bae7b2aae9ab2ad62333453dc

Chỉnh sửa: Mã:

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)""

Tôi đã bỏ lỡ quy tắc về việc không sử dụng bất kỳ chức năng thư viện nào ngoại trừ việc in (putStr). Tôi cho rằng các toán tử toán học, trong khi chúng là các hàm kỹ thuật, được cho phép.


9

C, 136 116 109 103 ký tự

Được rồi, đây là nỗ lực của tôi:

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

1
printftrả về số lượng ký tự được viết, luôn luôn khác không ở đây, bạn có thể sử dụng !printf(...)thay vì printf(...)*0để lưu một char.
pastebin.com chém 0mr8spkT

@ace * tát vào trán * Ah, tại sao tôi không nghĩ về điều đó ?? Cảm ơn ace, như mọi khi :-) (Cũng có thể để lại mã như vậy, vì nó được cho là phù hợp với hàm băm MD5.)
squossish ossifrage

7

Mã số 764

nếu chúng ta coi chuỗi này là base64, chúng ta có thể có phiên bản nhỏ hơn bằng phiên bản 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")

Nhưng tôi nghĩ rằng tác giả muốn chúng ta tìm ra logic đằng sau chuỗi không ngẫu nhiên này.


1
để tránh "cơn sốt xuống dốc" tôi đã thêm một số chi tiết trong câu hỏi :-)
Marzio De Biasi

4

Toán học - 56

Bí ẩn đã được giải quyết, vì vậy chỉ cần thực hiện ý tưởng

⌊.5Prime@Range@4032⌋~Mod~2~FromDigits~2~IntegerString~16

Tốt đẹp. Tôi tò mò không biết khả năng ngắn nhất bây giờ là con mèo đã ra khỏi cái túi
Claudiu

Bạn có gọi rằng "không có thư viện (ngoại trừ thư viện cần thiết để in đầu ra)" không?
Peter Taylor

@PeterTaylor Yep, không nhập - không có thư viện.
swish

Đánh giá theo các bình luận, tôi không nghĩ đó là cách OP dự định diễn giải nó.
Peter Taylor

3

J - 46 char

Đừng bận tâm đến tôi, chỉ cần đăng nhập golf J ở đây cho hậu thế. Không đủ thông minh để tìm ra mánh khóe.

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

Giải thích:

  • p:i.1007 4- Tạo ma trận 1007 hàng, 4 cột của các số nguyên từ 0, sau đó lấy các số nguyên tố tương ứng với các số nguyên đó. Vâng, p:là một nội dung J. Vâng, chúng tôi bốn số nguyên tố ngắn.

  • 2|<.-:- Giảm một nửa số ( -:), đặt sàn ( <.) và lấy modulo 2 ( 2|) đó. Điều này giống như lấy bit đáng kể tiếp theo để cho thuê.

  • #.- Chuyển đổi từng hàng kết quả từ cơ sở 2 thành số nguyên. Điều này cung cấp cho chúng tôi 1007 số từ 0 đến 15.

  • '0123456789abcdef'{~#.- Lấy mỗi hàng của ma trận bit này làm nhị phân cho một số và sử dụng số đó để chọn từ danh sách các chữ số hex. Điều này chuyển đổi mỗi bốn bit thành hex.

  • 1!:2&4- Trình thông dịch J có vấn đề với việc xuất chuỗi dài hơn 256 ký tự, vì vậy chúng tôi phải gửi dữ liệu này trực tiếp đến thiết bị xuất chuẩn. Bạn vài khi thắng, vài khi thua cuộc.

  • 4[- Cuối cùng, loại bỏ kết quả từ 1!:2và thay vào đó xuất 4 số còn thiếu từ đầu ra. Chúng tôi làm điều này bởi vì nó ngắn hơn bao gồm bốn số nguyên tố cuối cùng và trả về một kết quả trống ở đây.


0

Mã số 503

Theo ý tưởng @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)

0

Toán học, 55

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

Đã thử nghiệm trên Mathicala 8. Điều này sử dụng hai quan sát:

  • Mathicala FromDigitsthực sự không kiểm tra phạm vi của các chữ số đã cho, vì vậy nếu bạn áp dụng nó vào danh sách biểu mẫu {2,0,2,2,0,...}bạn sẽ nhận được gấp đôi kết quả như thể áp dụng cho{1,0,1,1,0,...} . Nhưng đó chính xác là hình thức được tạo ra bằng cách BitAndnhập số nguyên tố với 2.
  • Bit cuối cùng của số có biểu diễn thập lục phân mà chúng ta muốn xảy ra bằng 0 (bằng chứng là chuỗi kết thúc bằng một chữ số chẵn), do đó, nó chỉ gấp hai lần số bạn nhận được với một số nguyên tố ít hơn. Nhưng một yếu tố của hai là chính xác những gì chúng ta nhận được từ việc sử dụng quan sát trước đó, vì vậy mọi thứ hoàn toàn khớp với nhau.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.