Cops và Robbers: Redacted Primality (Chủ đề của Cops)


19

Thử thách này ban đầu được đóng hộp bằng Magic Octopus Urn; Tôi chấp nhận và đăng nó với sự cho phép của anh ấy.

Đây là chủ đề của cảnh sát. Chủ đề của bọn cướp ở đây .

Các thách thức

  • Bước một: Viết một đoạn mã (hàm hoặc chương trình đầy đủ) để kiểm tra tính nguyên thủy .
  • Bước hai: Loại bỏ các đoạn mã của bạn bằng cách thay thế các ký tự bằng ký hiệu .
  • Bước ba: Đăng mã được xử lý lại trên luồng cảnh sát.
  • Bước bốn: Đợi mã của bạn bị bẻ khóa và cố gắng bẻ khóa mã của người khác.

Ví dụ, mã Groovy {it.isPrime()}có thể trở thành {██.is█████()}. (Cái này sẽ dễ bị bẻ khóa một cách ngu ngốc; ngoài ra, tôi biết, .isPrime()không phải là một phương pháp Groovy.)


Chấm điểm

Bạn phải bao gồm điểm số của chương trình của bạn trong bài nộp. Điểm số được định nghĩa là tỷ lệ của các ký tự được sắp xếp lại cho các ký tự. Vì vậy, nếu chương trình của bạn có 20 ký tự và 5 ký tự được sắp xếp lại, điểm của bạn sẽ là 0,25. Mã Groovy ở trên sẽ có điểm 0,5.


Quy tắc

  • Chương trình của bạn chỉ cần xử lý các số nguyên dương. Nó sẽ xuất ra một giá trị trung thực nếu số đó là số nguyên tố và giá trị giả khác. Vui lòng ghi rõ trong câu trả lời của bạn.
  • Mã của bạn có thể không chứa bất kỳ bình luận hoặc khoảng trắng không cần thiết.
  • Không băm hoặc mã hóa mã hóa.
  • Mã của bạn có thể được định nghĩa lại không quá 50% (ít nhất 1/2 ký tự phải được hiển thị). Điều này có nghĩa là điểm cao nhất có thể là 0,5.
  • Nếu câu trả lời của bạn không bị bẻ khóa trong vòng một tuần, bạn có thể đánh dấu nó an toàn và chỉnh sửa trong vết nứt dự định.

Chiến thắng

Người chiến thắng sẽ là câu trả lời không bị đánh giá thấp nhất trong vòng hai tuần kể từ khi đăng. Trong trường hợp hòa, ai có nhiều phiếu nhất sẽ thắng. Chủ đề này luôn mở để gửi nhiều hơn, nhưng người chiến thắng được chọn sau hai tuần sẽ là vĩnh viễn.


Tên miền của đầu vào là gì? (tức là tất cả n >= 1hay tất cả các số nguyên?)
Conor O'Brien


1
Một lần nữa, nếu một phương pháp tính điểm có thể dễ dàng khai thác, nó sẽ bị hỏng.
dùng202729


1
Đoạn trích vui lòng?
dùng202729

Câu trả lời:


3

Dấu chấm , điểm = 14/223 0,062780 [an toàn]

Y(yG(BK██)(B(S(BS(C(BC(C(BB(B(v
S(CB█)(█C█B>vK  BSBB())█K(BS(S?
>(KZ)(C(C(Bv>██        >   v██<
█)Sg3I)$; @>B(BS(b(C(BBI)Iv>(█g
())I)))I)IBB(C(b(CB(C())))<v)█C
I))I))0)))(C(BC(B(BB)(C(BBv>)))
]I))))I))>    >)█   $;@   >I)(B

Lấy đầu vào làm đối số dòng lệnh và đầu ra True(nguyên tố) hoặc False, thử trực tuyến!

Gợi ý (thêm 4 ngày sau khi đăng):

Đầu tiên và thứ 4 là một cá trích đỏ: IP của giải pháp dự định (và rất có thể là tất cả ) sẽ đi theo dòng đầu tiên và tiếp cận ?nhân vật.

Dung dịch

Y(yG(BKL2)(B(S(BS(C(BC(C(BB(B(v
S(CBO)( C B>vK  BSBB())OK(BS(S?
>(KZ)(C(C(Bv>O)        >   vY <
^)Sg3I)$; @>B(BS(b(C(BBI)Iv>(yg
())I)))I)IBB(C(b(CB(C())))<v)-C
I))I))0)))(C(BC(B(BB)(C(BBv>)))
]I))))I))>    >)2   $;@   >I)(B

Hãy thử trực tuyến!

Giải trình

Do tính ngẫu nhiên xuất phát từ ?việc không thể làm phẳng chương trình. Đây là chương trình phẳng với một dấu hỏi nơi biểu thức ngẫu nhiên sẽ là:

Y(yG(BKL2)(B(S(BS(C(BC(C(BB(B(?(yg(KZ)(C(C(BB(BS(b(C(BBI)I))))(C(BC(b(C(BBI)I)))I))(C-))))I))I))0)))(C(BC(B(BB)(C(BBI)(B]I))))I)))2$;@

Chương trình đầy đủ:

Y{trial_division}      --  fix-point of {trial_division}
                 2     --  apply 2 (begin division with 2)
                  $    --  apply argument (work with the supplied input)
                   ;   --  print result as boolean
                    @  --  terminate program

các {trial_division}:

y                         -- recursive function with two arguments x,y
 G                        -- | base predicate: x >= y
  (BKL2)                  -- | base function:  BKL2 x y
                             |  ->             K(L2) x y
                             |  ->             L2 y
                             |  ->             2 <= y
        {recursive_call}  -- | recursive call

{recursive_call}, lấy các đối số f(tự tham khảo) xy(ghi chú 0giống như False)

  B (S(BS(C(BC(C(BB(B{divides}I))I))0))) (C(BC(B(BB)(C(BBI)(B]I))))I) f x y
->       (C(BC(C(BB(B{divides}I))I))0) x y (BC(B(BB)(C(BBI)(B]I)))) f I x y)
->       (C(BC(C(BB(B{divides}I))I))0) x y (BC(B(BB)(C(BBI)(B]I)))) f I x y)
->            (C(BB(B{divides}I))I) x y 0  (BC(B(BB)(C(BBI)(B]I)))) f I x y)
->            (C(BB(B{divides}I))I) x y 0  (   B(BB)(C(BBI)(B]I))   f x I y)
->                   {divides}      x y 0  (         C(BBI)(B]I)    f x y  )
->              if x `divides` y then 0 else         C(BBI)(B]I)    f x y
->                                                    f (B]I x)  y
->                                                    f (] x) y
->                                                    f (x+1) y

{divides}?(yg(KZ)(C(C(BB(BS(b(C(BBI)I))))(C(BC(b(C(BBI)I)))I))(C-)))nơi ?được chọn ngẫu nhiên (tùy theo hướng ngẫu nhiên) từ:

  • Y
  • S(CBO)(CBO)
  • S(SB(KO))(BBSBKO)

Tất cả đều tương đương với nhau, vì vậy {divides}trở thành điểm sửa lỗi của:

y                       -- recursive function with two arguments x,y
 g                      -- | base predicate: x > y
  (KZ)                  -- | base function:  KZ x y
                        -- |  ->              0 == y
      {recursive_call}  -- | recursive call

{recursive_call} là một biểu hiện khá khó hiểu mà về cơ bản chỉ là f x (y-x)


5

8086 DOS COM, 87 byte, điểm 19/87 ~ = 0.2183

Nứt bởi NieDzejkob

1└╣██1█╛ü ¼<█t<< u≈¼<█t█,0|/<██+ô≈ßô☺├δδâ√█|█╞█S█Y╣██9┘t█ë╪1╥≈±○╥t█Aδ∩╞█S█N┤█║S█═!├A
$

Đây là một chương trình COM; dự kiến ​​số là đối số dòng lệnh, xuất ra Y hoặc N. Giới hạn: 65535 vì bộ xử lý 16 bit (sizeof (int) sẽ là 2). Dòng mới là 0x0D 0x0A trên nền tảng này. Có bạn đếm 20 thay vì 19. Một trong số đó là thực sự và chưa được thay thế. Muhahaha.

Không gian ở vị trí 10 thực sự là một byte NUL. Biểu tượng cho NUL giống như khoảng trắng trong phông chữ VGA cũ.


1
Sẽ mất mãi mãi để bẻ khóa vì có khoảng 0 mối quan hệ giữa lắp ráp (opcode) và mã máy. / Đây có phải là mã trang 437 ?
dùng202729

@ user202729: Trang mã chính xác. DOS là CP437 trừ khi có quy định khác.
Joshua

Bạn có đang sử dụng một trò chơi DOS khó hiểu để đọc các tham số dòng lệnh từ $ 5881 thay vì $ 0081, hay đó là một sai lầm? Tôi có cần cài đặt DOS thật không?
NieDzejkob

@NieDzejkob: Chờ gì? Tôi khá chắc chắn rằng nó đọc dòng lệnh của nó từ DS: 0081. Tôi sẽ kiểm tra lại hexdump khi tôi về nhà nhưng tôi không mong tìm thấy gì.
Joshua

@Joshua tốt, ╛üXngay từ đầu là mov si, 0x5881.
NieDzejkob

5

Swift 4 , điểm 26/170 0,153, an toàn

func p(n:Int)->Bool{func(_:Int,_:Int)->Int{var h=(1...l).map{$0██m██
while(m=h.count,m██).1{h=[Int](h[...])};return m}
return>██&(.███).index█j█n██0)>=0}=██l}

Hãy thử trực tuyến!

Dự định Crack

func p(n:Int)->Bool{func j(_ l:Int,_ k:Int)->Int{var h=(1...l).map{$0},m=l
while(m=h.count,m>k).1{h=[Int](h[k...])};return m}
return n>1&&(2..<n).index{j(n,$0)>=$0}==nil}

Bị đánh cắp

func p(n:Int)->Bool{
  func j(_ l:Int,_ k:Int)->Int{    // Modulus function (l mod k)
    var h=(1...l).map{$0},m=l      //  Create an array h of size l
    while(m=h.count,m>k).1{        //  While h has more than k elements:
      h=[Int](h[k...])             //   Remove k elements from h
    }
    return m                       //  Return the length of h (equal to k if l divides k)
  }
  return n>1&&                     // Test if n > 1
  (2..<n).index{j(n, $0)>=$0}==nil //  and no number from 2 to n-1 divides n
}

4

brainfuck , 37/540 byte (điểm: 0,06851) ( Cracked by Nitrodon)

>>>>>+>,[>++++++[-<-------->]<+>,]<[-[█<█<]++++++++++<]>[-]>>██[>█>>█>]+[<]<<[<]>█<<+>>[>]█>[>]█+[<]<<[<]>-█>]>>[->]<[-[[<]<]++++++++++<]>[-]>[<█]>]>[>]<[[█]<]<<<<<[<]<<██>>[>]<█[->+<]<█>>[>]<[-[[<]<]++++++++++<]>███>[<<]>[[[>]>████[<]<[-[[<]<]++++++++++<]>[-]>[█<]>]>[>]<[[-]>+[>]<-<[<]<]+<<<<<[<]>[[>]+[[>]>]>[>]>[-<+>]<[<]<[>+[<]>>-<<<<<[[<]<]>>███████>[[█]>]<]<[[<]<]<[█]>]>>>[[>]<->>]]>[[>]>]<<[[[█]<]<]<<<[█]<<█>>>[>]█[-[[<]<]++++++++++<]>>[[>]+[------->++<]>.+.+++++.[---->+<]>+++.>>]>[>]+[------->++<]>++.++.---------.++++.--------.

Hãy thử trực tuyến!

In "số nguyên tố" nếu số nguyên tố, "không phải số nguyên tố" nếu tổng hợp. Kỹ thuật hoạt động cho các số nguyên tùy ý nhưng hết thời gian trên TIO cho các số trên 6000


2
Bị nứt sau khi làm việc này trong vài ngày.
Nitrodon

3

Mathicala, 97 byte, điểm 0,2989690722 ( Cracked )

f[x_]:=(██ToString███████████████;StringMatchQ[████Infinity,RegularExpression@"█\█\█{█\█+, ███"])

Dây! Regex! Số nguyên tố?

một điều như một tính nguyên kiểm tra regex, nhưng đó không phải whats xảy ra ở đây.

Điều này đã bị bẻ khóa , nhưng cách tôi dự định khá khác biệt, vì vậy tôi sẽ không tiết lộ giải pháp dự định nào.



3

Thạch , điểm 0. (142857) ( bị nứt )

25██26█966836897364918299█0█1█65849159233270█02█837903312854349029387313█ị██v

Hãy thử trực tuyến!

Đăng lại câu trả lời khác của tôi, lần này với một vài byte được tiết lộ để tránh những trò gian lận ngoài ý muốn.


Tôi có thể thông minh nhân vật HOẶC hai câu trả lời của bạn để nhận được một số byte ... có lẽ tôi sẽ không.
dùng202729

@ user202729 Uh, có điều gì đó kỳ lạ đã xảy ra, tôi không có ý định bao gồm nhiều ký tự hơn ...
Erik the Outgolfer 3/218


3

Octave , Điểm: 0,15 (86 byte)

Tôi tiết lộ thêm một vài nhân vật. Tôi nghĩ tiêu chí chiến thắng là điểm cao nhất chứ không phải thấp nhất .

@(x)eval([(str2num(cell2mat([cellstr(reshape('0█1███1█0█0█00',████))])')'█')','(x)'])

Hãy thử trực tuyến!

Chúc may mắn =)


1
Nứt! Đây là một niềm vui.
Giuseppe

3

Python 3, 388 byte, .155, Cracked

Vết nứt phút cuối. Vâng, đây là thử nghiệm Miller-Rabin.

Tôi cho rằng các thử nghiệm xác suất được cho phép, không chắc chắn 2 ^ -100

Vâng, một gợi ý tuyệt vời trong câu trước mặc dù

Đã tạo giá trị trả về 0 dưới dạng COMPOSITE và 1 dưới dạng PROBABLY PRIME

* 368> 388: Đã khắc phục sự cố khi z <4

import ██████
def f(z):
 if z<4:return z>>1
 d,s,n,e,c=██z,0,z,0,50
 while not ██1:d//=2;s+=1
 while n>0:n//=2;e+=1
 ███████████()
 while c>0:
  a=0
  while a<2or a>z-█:
   a,b=0,e
   while b>0:a=a*2+██████████████(0,1);b-=█
  x,r=███(█,█,z),██s
  if ██x and x!=██z:
   while r>0:
    x,r=███(█,█,z),██r
    if not ██x:return 0
    elif x==██z:break
   else:return 0
  c-=█
 else:return 1

Dung dịch:

import random
def f(z):
 if z<4:return z>>1
 d,s,n,e,c=~-z,0,z,0,50
 while not d&1:d//=2;s+=1
 while n>0:n//=2;e+=1
 random.seed()
 while c>0:
  a=0
  while a<2or a>z-1:
   a,b=0,e
   while b>0:a=a*2+random.randint(0,1);b-=1
  x,r=pow(a,d,z),~-s
  if ~-x and x!=~-z:
   while r>0:
    x,r=pow(x,2,z),~-r
    if not ~-x:return 0
    elif x==~-z:break
   else:return 0
  c-=1
 else:return 1

1
Tôi nghĩ rằng việc có các chuỗi dài như "COMPOSITE"vi phạm tinh thần của quy tắc "Mã của bạn có thể không chứa bất kỳ nhận xét hoặc khoảng trắng không cần thiết nào".
Pavel

@Pavel Chỉnh sửa. Chà, tôi không nghĩ các giá trị trả về là các bình luận hoặc khoảng trắng không cần thiết mặc dù
Shieru Asakoto

1
Đó là kỹ thuật hợp lệ. Nó chỉ là giá rẻ.
Pavel

Tôi không nghĩ rằng điều này chấm dứt khi z = 2.
Nitrodon

@Nitrodon Rất tiếc, nó cũng không chấm dứt khi z = 3. Đã sửa lỗi
Shieru Asakoto

3

095 , điểm 0.20512820512 [An toàn]

1id#█#=(DD#█#█{d_█%(█D0█]D}██s]D1.=[1s]

In 1 nếu nguyên tố, 0 nếu tổng hợp

Dung dịch:

1id#2#=(DD#2#-{d_.%(rD0R]D}drs]D1.=[1s]

2

Nút Node, điểm: 0,4

Đây là nơi nó hoạt động. Chương trình đầy đủ nhận đầu vào từ đối số dòng lệnh đầu tiên và đầu ra thành thiết bị xuất chuẩn.

Hy vọng, một giải pháp không quá khó để bắt đầu điều này.

Sử dụng đoạn trích này để tính điểm.

require███████████2<<2██>n█████rin█(b████████x)█████(92116830)██(a,c)=>a[c[0]██████████(c)]███████);d=███+n;q=████27775██9564,[50259,█6])[█]);a=██q>0████r(n=qa█&█-q-██)a██n%q?██0██(1371528270,22288)(a)

2

Thạch , điểm 0. (142857)

25██26█9668368973649182992051██5849159233270202█837903312854349029387313█████

Hãy thử trực tuyến!

Đưa ra một đối số dòng lệnh.

Sai = 0
Đúng =1



@ user202729 Ơ, tôi nên tiết lộ thêm, tôi sẽ đăng lại. Nhưng tôi không thể thêm rằng nó đã bị bẻ khóa cho đến khi bạn đăng lên chủ đề của tên cướp. : P
Erik the Outgolfer 3/2/18


2

Javascript, điểm 0.1894093686354379

let t=[2,3,3,3,3,3,3,5,7,5,7,5,7,7,11,12,13,11,13,13,1,2,17,13,2,3,17,19,23,29,19,19,41,23,23,29,23,"","",29,7,31,31,524,31,37,33,34,41]; function r(a, b) {█████████████████████████████████████████████████████████████};function l(t){let a=0;let b=[];while(true){b.push(t[a]);█████████████;if(!t[a]){return█████};function p(v) {let i=0;let a=r(2,v██);for (i in a){if(v%(█████████a█i██)==0){return false;}};return true;};function f(v){if(l(t).indexOf(v)!=-1){return true;}else{return p(v)};};

Chúc may mắn. : p

gọi f với số nguyên tố bạn muốn kiểm tra.



Hum. Tôi đoán tôi đã không nghĩ về điều đó. Đây chỉ là một khởi động sơ bộ dù sao đi nữa: p Công việc tốt.
moonheart08

2

> <>, điểm 0,096, bị bẻ khóa bởi Jo King

:1@v>~~:?1n;█$-1<█?=2:}*{█@:$@:

Dự định crack:

:1@v>~~:?1n;
$-1<^?=2:}*{%@:$@:


Tôi không biết> <> thực sự tốt, nhưng đây không phải là vvòng lặp vô hạn đầu tiên vô điều kiện?
NieDzejkob

@NieDzejkob Nếu bạn chạy chương trình như hiện tại, vâng, nó sẽ lặp lại mãi mãi.
Trái cây Esolanging

oh, tôi thấy nó bây giờ ...
NieDzejkob


2

Brain-Flak, Điểm: 35/134 = 0,2612 ( bị nứt! )

(({████){██[████)█>(({}))<>}<>{}███{}((██({}))█████{}]██)({}(<>))<>{(({})){({}[()])<>}{}}{}<>([{}()]{})██[██()██(()█[()]██{}██}{}<>{})

Trả về 1 cho số nguyên tố, 0 cho tổng hợp.

Đây là một ngôn ngữ rất khó để thử thách này, vì định dạng bị hạn chế đến mức phải nỗ lực để không làm rõ nhân vật mất tích là gì.

Đây là một ngôn ngữ rất khó để giải quyết thách thức này, vì nó rất khó đọc.




2

Japt, 19 byte, 0.315789 ... điểm, An toàn

Tôi không biết nếu tôi che khuất điều này nhiều hơn mức tôi cần, khiến bản thân phải trả giá cao hơn.

█h8575¥█
█UâÊ█Ê█ █2

View solution (Giải thích sắp có)


2

C, 34/76 = 0.447368, An toàn

int p(int n){int r███████2;██r███r++)███+███n;████&███r));return███████n██;}

Có nhiều khoảng trống này có nghĩa là tôi sẽ có nhiều khả năng có được một vết nứt ngoài ý muốn hơn so với dự định.

Dung dịch:

int p(int n){int r=1,e=n%2;for(;(r++)*(r++)<n;e=e&&(n%r));return e?n>1:n<3;}

giải trình:

egiữ một giá trị boolean cho dù số đó không phải là số nguyên tố (với một vài trường hợp ngoại lệ đặc biệt). rlặp qua các số lẻ nhỏ hơn hoặc bằng căn bậc hai của n. return e?n>1:n<3;xử lý các trường hợp đặc biệt khi n1hoặc 2.


2

M , điểm: 4/22 = .1818 ..., bị bẻ khóa bởi Dennis

███“;;█»VOḣ2S⁵++3Ọ;”Pv

Điều này có thể kết thúc với một vết nứt ngoài ý muốn, chúng ta sẽ phải xem. Nó đã làm.

Giải pháp của Dennis là

ÆPø“;;“»VOḣ2S⁵++3Ọ;”Pv

Hãy thử trực tuyến!

Tôi sẽ để lại giải pháp của tôi cho ai đó để crack. Gợi ý của tôi cho Dennis về việc đệ trình tên cướp của anh ta là từ "sở thú".


@ user202729 Tôi nghĩ bạn có thể bẻ khóa được điều này
dylnan


1

C, 66 byte, 29 được điều chỉnh lại, điểm 0,439

i;p(n){█████2███████ 0███████2;███;███)if(████)return 0;return 1;}

Chỉ cần nộp C đơn giản; Tôi sẽ thấy cái này mất bao lâu trước khi tôi đăng một cái thực sự xấu xa.


Bạn có chắc chắn rằng khối cuối cùng được cho là dài 4 ký tự không?
NieDzejkob

@NieDzejkob Vâng.
MD XF


1

sh + coreutils, điểm 19/143 ~ = 0,1328

nứt

e█ec█s█ █c "██████WyAkKHNoIC1jICJg█WNobyBabUZqZEc5eWZIUnlJQ2█2SnlBblhHNG5m██JoYVd3Z0t6SjhkMk1nTFhjSyB8YmFzZTY0IC1kYCIpIC1lcSAxIF0K█b█se6███d`"

TIO


1
@MDXF: Base64 là mã hóa, không mã hóa. Không có chìa khóa để bẻ khóa.
Joshua

Bạn có thể bao gồm một liên kết TIO? (có thể là bash)
user202729

Bị nứt (3 giờ trước).
dùng202729

1

Brain-Flak , điểm 29/140 = 0,207

({}██()██<>){██({}[()])██{}{}███({<({}[()])><>({})<>}{}██████{}██){(({})){({}[()])<>}{}}<>([{}()]{}<>{})<>}(<>██{}({}████)((){[()]██{}██}{})

Hãy thử trực tuyến!

Đầu ra 1 cho số nguyên tố và 0 cho số nguyên tố.


1

Băng vệ sinh (bắt buộc), điểm: 24/51 = 0,5

Luku on alkuluku,jos ████████████e███████ on █████.

Đây là một giải pháp rõ ràng, tôi hy vọng không ai ở đây hiểu tiếng Phần Lan.


1

Tampio (bắt buộc), điểm: 26/223 = 0.11659 ...

Luvun kokonaislukuarvot ovat riippuen siitä,onko se yksi,joko listan,jonka alkioita ovat yksi █████████████████████,alkiot tai █████ liitettynä sen alkutekijöihin.Luku on alkuluku,jos sen kokonaislukuarvojen summa on nolla.

1

Pyt , điểm: 0.288288 ... [An toàn]

Đ2⇹█ŘĐĐŁ███⇹ʀĐ↔Đ5Ș↔⇹██=█ŕĐ↔Đ5Ș↔Đř█⇹█████↔Đ4Ș5Ș⇹██⇹3Ș°04Ș↔█3ȘĐŁ█3Ș05Ș↔█⇹04Ș0↔⇹██=█ŕ↔ŕĐĐŁ██↔██↔ŕŕŕŕ█↔████↔ŕŕŕ██¬¬


Xuất ra "Đúng" nếu nguyên tố, "Sai" nếu không

Quên đề cập rằng đó là một thử nghiệm xác suất.

Dung dịch:

Đ2⇹⁻ŘĐĐŁ₂`⁻⇹ʀĐ↔Đ5Ș↔⇹Ǥ1=?ŕĐ↔Đ5Ș↔Đř²⇹%∈2*⁻↔Đ4Ș5Ș⇹⁻₂⇹3Ș°04Ș↔+3ȘĐŁ⁺3Ș05Ș↔+⇹04Ș0↔⇹%+=?ŕ↔ŕĐĐŁ⁺⁺↔ł:↔ŕŕŕŕ;↔⁺⁻±?↔ŕŕŕ:;¬¬

Điều này thực hiện thử nghiệm tính nguyên thủy của Solovay-Strassen.

Dùng thử trực tuyến tại đây!


1

Ruby, 27/73 = 0.369863

def p n;███████(██n.times████a[2..-1].map{|s|█.██n████s}██.█*█|██})█);end

Điều này nên được vui vẻ.


1

Python 3 , điểm: 0.386363, bị nứt

p=lambda x,i=2:█████or(x%i and ████████)████

Đi cho quả treo thực sự thấp lúc đầu. Tôi sẽ đưa ra một câu trả lời táo tợn sớm.

user71546 làm cho nó "hoạt động" với

p=lambda x,i=2:i>=x or(x%i and p(x,i+1))or 0

... nhưng đó là ngoài ý muốn. Mã ban đầu là

p=lambda x,i=2:i>x/2or(x%i and p(x,i+1))or 0

Không làm việc cho x <2, hóa ra. Rất tiếc.


1
Nứt? Không hoạt động khi x <2 mặc dù.
Shieru Asakoto

0

JavaScript (ES7), 297 byte, 103 được điều chỉnh lại, .347

M=(N,X=N,F=(n,a=█████)=>a>1e-20?█████+F(n,█████████):1,G=(n,a=█████)=>a>1e-20?█████+G(n,███████):n==2?0:G(n-1),H=(n,a=█████)=>a>1e-20?█████-H(n,███████):0,I=n=>████████I(████),J=n=>I(n)*████+H(█████████-1),K=(n,l=n|0)=>(n-l>=.5)+l,L=(a,b)=>██████████(a)+█(b)████,Z=L(--N,N)██)=>L(Z,████M(N,X)██)██

Câu trả lời Python trước đây của tôi quá đơn giản, vì vậy đây là một câu trả lời ác;)

Logic đằng sau là đơn giản mặc dù.

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.