ตำรวจและโจร: Redacted Primality (เธรดโจร)


9

นี่คือเธรดของโจร ด้ายตำรวจเป็นที่นี่

ความท้าทายของคุณคือนำการส่งที่ไม่ได้ติดตามจากเธรดของตำรวจและลองค้นหาโปรแกรมที่ไม่ทำปฏิกิริยา โปรดแสดงความคิดเห็นในการส่งของตำรวจเมื่อคุณถอดรหัสรหัสของพวกเขา

คำตอบ:


6

brainfuck , โจกษัตริย์

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

ลองออนไลน์!

นี่เป็นการใช้ตะแกรงของ Eratosthenes

ค่าเริ่มต้น>>>>>+>,[>++++++[-<-------->]<+>,]ป้อนแต่ละหลักเป็นรหัสอักขระและลบ 47 เพื่อใส่ในช่วง 1-10 สิ่งนี้ยอมให้ค่าเซลล์เป็น 0 เพื่อแสดงถึงระยะห่างระหว่างตัวเลข +>ใกล้จุดเริ่มต้นของส่วนนี้กองกำลังจำนวนเป็นอย่างน้อยสองหลักซึ่งจะมีเร็ว ๆ นี้ที่สำคัญ

<[-[[<]<]++++++++++<]>[-]>ถัดไปและเป็นหนึ่งในสิ่งแรกที่ผมคิดออกเป็นส่วน สิ่งนี้ปรากฏขึ้นหลายครั้งในรหัสแต่ละแบบมีรูปแบบการเขียนแบบต่างกัน แต่ก็ไม่ยากที่จะคาดเดาว่าอินสแตนซ์เหล่านั้นทั้งหมดอาจเป็นรหัสเดียวกัน รหัสนี้ต้องการเลขศูนย์สามตัวทางด้านซ้ายของเลขฐานสิบบนเทปและผลกระทบคือการลดจำนวน การวนซ้ำครั้งสุดท้ายของลูปจะทำให้ค่า 10 สองเซลล์เหลืออยู่จากตัวเลข แต่เป็นการ[-]ล้างมัน

หากตัวเลขทศนิยมเป็น 0 จะไม่มีการสร้างขึ้นมาจากภายนอก 10 และเซลล์ที่ศูนย์[-]เป็นหลักที่สำคัญที่สุด จากนั้นหัวเทปจะอยู่ที่ตัวเลขที่สำคัญที่สุดที่สอง (ซึ่งเป็นสาเหตุที่ต้องมีอย่างน้อยสองหลัก) อินสแตนซ์ส่วนใหญ่ของตัวอย่างนี้ตามมาทันที[<<]>ซึ่งวางส่วนหัวบนเซลล์ที่ไม่ใช่ศูนย์ในสภาพปกติและเซลล์ศูนย์ถ้าจำนวนทศนิยมเดิมเป็นศูนย์ ดูเหมือนว่าในโปรแกรมนี้แทนทศนิยมของn-1ใช้เพื่อแสดงnเพื่อให้ decrementing ที่จะ0ถูกจับแทน decrementing -1ไป

ส่วนถัดไปใส่ตัวเลขจาก n-1 (n) ลงไปที่ 0 (1) บนเทป:

>[                      until the number reaches zero:
  [                     for each digit:
    [>]>>[>]+[<]<<[<]>  create a placeholder for the next copy
    [                   while the original value of the digit is nonzero:
      <<+               add 1 to copy two cells left (to keep one copy)
      >>[>]>>[>]<+      go to new copy and increment that cell
      [<]<<[<]>-        go back to original digit and decrement
    ]                   (this is effectively the same as [<+>>+<-] but with the cells at variable locations)
  >]                    next digit
  >>[->]                cancel the placeholder 1s that were used for the new copy
  <[-[[<]<]++++++++++<]>[-]>[<<]> decrement
]
>[>]<[[-]<]      clean up the trash 10s on the tape while ending at a known location relative to the last number

ตอนนี้ตัวเลขเหล่านี้ทั้งหมดอยู่ในเทปที่มีเซลล์สองศูนย์คั่นพวกเขา <<<<<[<]<<วางเราไว้ที่เซลล์สุดท้ายของหมายเลขสุดท้ายบนเทปซึ่งเป็นตำแหน่งที่เราจะอยู่ในการวนซ้ำทุกรอบ การวนซ้ำจะสิ้นสุดลงเมื่อตัวเลขทั้งหมดยกเว้นตัวจริงได้รับการจัดการ

ที่จุดเริ่มต้นของลูปเราย้ายหมายเลขปัจจุบัน (อันสุดท้ายยังคงอยู่บนเทป) หนึ่งเซลล์ด้านขวาเพื่อให้มีห้องลดลงจากนั้นไปข้างหน้าและลดลง:

[>>>[>]<[[->+<]<]>>[>]<[-[[<]<]++++++++++<]>[-]>[<<]>

หากการลดลงนี้ไม่ underflow เราจะแปลงตัวเลขเป็น unary:

[[[>]>[>]+[<]<[-[[<]<]++++++++++<]>[-]>[<<]>]

โปรดทราบว่า snipped นี้มี [unclosed ด้วยเหตุนี้ส่วนที่เหลือของการวนซ้ำนี้จะถูกข้ามถ้าจำนวนเป็น 0 (แทน 1) หลังจากแปลงเป็นเอกเราจะเคลียร์ส่วนที่เหลือ 10s แล้วลากการเป็นตัวแทนเอกกับเราไปทางซ้าย:

>[>]<[[-]>+[>]<-<[<]<]+

ฉันไม่ได้สังเกตจนกระทั่งตอนนี้เขียนสิ่งนี้ แต่+ท้ายที่สุดของตัวอย่างนี้จะแยกออกจากการเป็นตัวแทนเอกด้วย 0 เดียวนอกจากนี้ยังเป็นส่วนหนึ่งของการเป็นตัวแทนเอก: ลำดับ1011...11จะเป็นตัวแทน 0 mod k ต่อไปนี้<<<<<[<]>ทำให้เราอยู่ที่จุดเริ่มต้นของจำนวนk+1เริ่มต้นวงใหม่

ห่วงด้านในที่นี่ "เครื่องหมาย" หมายเลขบนเทปที่มี 1 kในเซลล์ทันทีขวาทุกครั้งและใช้แทนเอกเป็นนาฬิกาเพื่อตรวจสอบว่าหมายเลขทวีคูณของ

[
  [>]+             mark the current decimal number
  [[>]>]           move to end of decimal part of tape
  >[>]             move to 0 in middle of unary "clock"
  >[-<+>]          move the following 1 to the left if possible
  <[<]<            if a 1 was moved this will bring us back to a zero before the start of this "clock";
                   otherwise the looped move command doesn't move us at all and we are at the final 1
  [                if there was no gap (happens every kth iteration):
    >+[<]>>-       reset to original position
    <<<<<[[<]<]>>  go to number that was just marked
    [[-]+>]        replace digits with 0s (cell value 1)
    >[[>]>]<       go back to where we would be without this conditional
  ]
  <[[<]<]<[<]>     return to first unmarked number
]

[[-]+>]ในส่วนที่ส่วนสุดท้ายที่ผมคิดออก ก่อนหน้านั้นฉันคิดว่าโปรแกรมกำลังทำแผนกทดลองใช้ แต่ฉันไม่เห็นว่าผลลัพธ์นั้นถูกใช้ไปที่ใด

วงนี้สิ้นสุดสองเซลล์ด้านซ้ายของหมายเลขซ้ายสุดและ>>>[[>]<->>]]ลบเครื่องหมายที่วางอยู่บนเทปและพาเราไปที่ปลายเทปอีกครั้ง หลังจากนั้น>[[>]>]<<[[[-]<]<]ลบนาฬิกา unary หรือถ้าข้ามส่วนนี้ไปทั้งหมดจะเหลือ 10 วินาที <<<[<]<<]ห่วงถูกตั้งค่าสภาพเริ่มต้นด้วย

หลังจากนี้เป็นเพียงการอ่านว่าหมายเลขอินพุตถูกแทนที่ด้วย 1 ณ จุดใด ๆ :

>>>[>]<[-[[<]<]++++++++++<]>>                      do the check
[[>]+[------->++<]>.+.+++++.[---->+<]>+++.>>]      conditionally print "not "
>[>]+[------->++<]>++.++.---------.++++.--------.  unconditionally print "prime"

โชคดีที่ผลผลิตจริงไม่ได้ถูก redacted เลย


"คืนนั้นยาวนานที่ไม่เคยพบเจอวัน" มันยังคืนนี้หรือไม่? : P
Stewie Griffin

@StewieGriffin ฉันไม่สามารถทำมันในคืนนั้นได้แล้วมันก็แค่ใจของฉัน ขอบคุณสำหรับการเตือน
Nitrodon

ฉันไม่คิดว่าฉันจะสามารถอธิบายรหัสของตัวเองได้เช่นเดียวกับที่คุณทำที่นี่ การทำงานที่ดีมาก
Jo King

5

ภาษา Wolfram (Mathematica)

รอยแตกคำตอบนี้

f[x_]:=(p=ToString@Boole@PrimeQ@x;StringMatchQ[p&@@Infinity,RegularExpression@"(\
\n{}\b+, )?1"])

ลองออนไลน์!


ไม่จำเป็นต้องเลื่อนดูโค้ด :)
user202729

ดี! ค่อนข้างแตกต่างจากโซลูชันที่ตั้งใจไว้ดังนั้นฉันจะยังไม่เปิดเผยเลย
พาเวล

@Pavel แล้วเรื่องนี้ล่ะ? หรือยัง "พื้นฐานเดิม"?
user202729

ต่อไปนี้เป็นคำแนะนำ: ที่หยดขนาดใหญ่มีค่าไม่ได้Boole PrimeQ
พาเวล

5

Brain-Flak, MegaTom

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

ลองออนไลน์!

โปรแกรมนี้ทำการทดลองใช้งานดิวิชั่นจาก n-2 ลงไปที่ 1 จากนั้นเอาท์พุท 1 หากและถ้าสิ้นสุดลงด้วยปัจจัย 1


4

8086 DOS COM โดย Joshua

xxd การเป็นตัวแทนเนื่องจากการเข้ารหัสและไบต์ว่างและสิ่งที่น่ากลัวอื่น ๆ :

00000000: 31c0 b90a 0031 dbbe 8100 ac3c 0d74 3c3c  1....1.....<.t<<
00000010: 2075 f7ac 3c0d 7410 2c30 7c2f 3c09 7f2b   u..<.t.,0|/<..+
00000020: 93f7 e193 01c3 ebeb 83fb 027c 19c6 0653  ...........|...S
00000030: 0159 b902 0039 d974 1289 d831 d2f7 f109  .Y...9.t...1....
00000040: d274 0341 ebef c606 5301 4eb4 09ba 5301  .t.A....S.N...S.
00000050: cd21 c341 0d0a 24                        .!.A..$

ก่อนจะแยกชิ้นส่วนตำรวจด้วยตนเองจากนั้นประกอบโดยใช้ yasm บางไบต์เสียหายโดย conerter Joshua ที่ใช้ แต่ฉันเพิ่งปฏิบัติต่อพวกเขาเช่น redacted bytes ฉันแน่ใจ 99.72% เกี่ยวกับเนื้อหาจริงของพวกเขา มันไม่ควรใช้เวลานานในการแก้ไขถ้าฉันผิด สนุก:

; A COM file is just a 16-bit flat binary
; loaded at 0x100 in some segment by DOS

org 0x100
bits 16

; Unsurprisingly, we start by converting
; the commandline string to a number. During
; the conversion, SI is a pointer to the
; string, CX is the base, and BX holds the
; partial result
parse_input:
; We'll read the input character by character
; into AL, but we need the resulting digit as
; a 16-bit number. Therefore, initialise AX to
; zero.
    xor ax, ax
    mov cx, 10
    xor bx, bx
; When a DOS program is loaded, it's preceded
; in memory by the Program Segment Prefix,
; which holds the commandline arguments at
; offset 0x81, terminated by a carriage return
    mov si, 0x81

.skip_prog_name:
; Load a character and move the pointer
    lodsb
; If we find the terminator here, the program
; was not given any arguments.
    cmp al, 13
    je finish

    cmp al, ' '
    jne .skip_prog_name

.input_loop:
    lodsb
    cmp al, 13
    je got_input

; If the ASCII value of the character is less
; than the one of '0', error out. Adjust the
; value in AL so that it holds the digit
; itself. This exploits the fact that the
; comparison instruction is just a subtraction
; that throws away the actual result.
    sub al, '0'
    jl finish

; If we have a value larger than 9, this
; character wasn't a digit.
    cmp al, 9
    jg finish

; Multiply the intermediate result by 10 and
; add the new digit to it.

    xchg ax, bx
    mul cx
    xchg ax, bx
    add bx, ax
    jmp .input_loop

got_input:
; The loop below would go haywire when given a
; zero or a one, so make them a special case.
    cmp bx, 2
    jl composite

; Patch the output string to say that it's
; prime
    mov byte[outstr], 'Y'

; BX = number being checked
; CX = loop counter, potential divisor of BX
    mov cx, 2

.loop:
; If CX = BX, we looked everywhere and couldn't
; find a divisor, therefore the number is prime
    cmp cx, bx
    je finish

; DIV takes DX:AX as a 32-bit number for the
; dividend. We don't want nor need the extra
; precision, so we set DX to 0.
    mov ax, bx
    xor dx, dx
    div cx

; DX now contains the remainder. To check if
; it's 0, we perform some noop operation, that
; happens to set the flags appropriately. AND
; and OR are commonly used for this purpose.
; Because of what's presumably a bug in the
; encoder used by Joshua, I do not yet know
; which for certain. However, I can make an
; educated guess. All other instances of the
; bug happened with a codepoint below 32.
; Moreover, no other bytes from that range
; occur in the code. Because an AND would be
; encoded as an exclamation mark, while OR -
; - as a tab, I am highly confident that Joshua
; used an OR.
    or dx, dx
    jz composite

; Increment the counter and loop again!
    inc cx
    jmp .loop

composite:
    mov byte[outstr], 'N'

finish:
    mov ah, 9
    mov dx, outstr
    int 0x21
    ret

outstr:
    db 'A', 13, 10, '$'

ความแตกต่างเพียงอย่างเดียวระหว่างฉันbx < 2จะเสร็จสิ้นมากกว่าคอมโพสิต FYI ความเสียหายนั้นเกิดจากการใช้ X เป็นตัวละครหน้ากากและไม่ได้แก้ไขทุกอย่างให้เหมาะสมเมื่อเปลี่ยนเป็น█
โจชัว

@ โจชัวฉันใช้จนจบในตอนแรก แต่แล้วฉันจำได้ว่าจำเป็นต้องจัดการ 1 อย่างถูกต้อง เกี่ยวกับความเสียหาย - เป็นหนึ่งในสถานการณ์ที่ฉันจินตนาการ
NieDzejkob

3

วุ้น

คำตอบนี้แตก

25██26█966836897364918299█0█1█65849159233270█02█837903312854349029387313█ị██v
250126,9668368973649182994001,658491592332700020837903312854349029387313ṖịØJv

ลองออนไลน์!


คำอธิบาย:

กำลังมองหาที่และvผมคิดว่าการสร้างรายการของตัวเลขnDex มันลงในรายการบางอย่างและประเมินผล

วิธี "ไม่สำคัญ" ในการตรวจสอบสิ่งดั้งเดิมในเยลลี่คือÆPดังนั้น (หากสามารถแยกการส่งได้):

  • รายการที่จะได้รับการจัดทำดัชนีต้องมีและÆP
  • รายการของดัชนีจะต้องสอดคล้องกันแบบโมดูโลด้วย256[14, 81]

ดังนั้น ... รายการที่จุดเริ่มต้นของโปรแกรมสอดคล้องกับ[14, 81, 49]mod 256 ( TIO ) และปรากฏองค์ประกอบสุดท้าย


3

sh + coreutils

รอยแตกคำตอบนี้

eecs c "██████WyAkKHNoIC1jICJg█WNobyBabUZqZEc5eWZIUnlJQ2█2SnlBblhHNG5m██JoYVd3Z0t6SjhkMk1nTFhjSyB8YmFzZTY0IC1kYCIpIC1lcSAxIF0K█b█se6███d`"
exec sh -c "`echo WyAkKHNoIC1jICJgZWNobyBabUZqZEc5eWZIUnlJQ2M2SnlBblhHNG5mSFJoYVd3Z0t6SjhkMk1nTFhjSyB8YmFzZTY0IC1kYCIpIC1lcSAxIF0K|base64 -d`"

ไม่ลองออนไลน์! เวลาเพราะบางนี้ปัญหา แต่คุณสามารถใช้jdoodle

ส่งคืนโดยรหัสทางออก 0(สำเร็จ) สำหรับไพร์ม, 1(ข้อผิดพลาด) สำหรับคอมโพสิต

คำสั่งจริงที่ดำเนินการคือ

factor|tr ':' '\n'|tail +2|wc -w

วิธีร้าว

  1. ดูรหัสรู้จัก Base64
  2. เรียนรู้วิธีใช้base64คำสั่ง
  3. รู้ว่า+เป็นตัวละครเบส 64 ที่ถูกต้อง
  4. พยายามที่จะถอดรหัส
  5. ใช้กระดาษห่อsh -c "`echo ...|base64 -d`"กลับไปที่โปรแกรมเดิม
  6. สร้าง base64 ซ้อนกันจากคำสั่ง

วิธีการที่ถูกต้อง "บางประเด็น" tail +nจะเปิดออกจะไม่ได้ทุกเครื่องรู้เกี่ยวกับ เมื่อฉันลอง crack คุณบนเครื่องในที่ทำงานก็บ่นเกี่ยวกับมัน คุณเปิดโปงรหัสที่ถูกต้องดังนั้น :(
Joshua

3

Octave 86 ไบต์สตีวีกริฟฟิ

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

ลองออนไลน์!

นี่เป็นเกมที่สนุกมาก! ฉันดิ้นรนกับสิ่งนี้สองสามวัน

เบาะแสแรกที่ได้รับการตระหนักถึงความeval([...,'(x)'])เป็นก่อสร้างสร้างการเรียกร้องให้มีisprimeฟังก์ชั่นเช่นกำหนดการintsและcharโดยปริยายจะแปลงอาร์เรย์ไปcharดังนั้น...จำเป็นที่จะเป็นได้ทั้งisprimeหรืออาร์เรย์ที่มีค่า ASCII ของ,isprime[105, 115, 112, 114, 105, 109, 101]

ส่วนที่เหลือเป็นเพียงการอ่านเอกสารเพื่อหาความรู้ซึ่งreshapeสามารถนำมิติที่ไม่รู้จักมาด้วย[]แม้ว่าฉันคิดว่าฉันสามารถทำได้reshape(...,2, 7)ด้วยจำนวนไบต์เดียวกัน

การใช้+'e'(101) แทน+'d'(100) เป็นสิ่งที่ดีที่ทำให้ฉันอีกไม่กี่นาทีจนกว่าฉันจะสังเกตเห็นว่าตัวเลขสุดท้าย (ที่ไม่ได้ทำบาป) นั้น00ดีกว่า01และมันง่ายมาก


2

JavaScript

x=>{if(x<4)return(!0);for(y=x>>>Math.log10(p=████;--y-1;(p=x/y%1)████if(██&&(███))break████return(███)}
x=>{if(x<4)return(!0);for(y=x>>>Math.log10(p=2-1);--y-1;(p=x/y%1)){;;if(!p&&(1<2))break;;;}return(!!p)}

ลองออนไลน์!

ฉันสงสัยว่านี่คือสิ่งที่คุณมีอยู่ในใจ แต่ก็ใช้งานได้


2

> <> , ผลไม้ Esolanging

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

ถึง

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

ลองออนไลน์!

การใช้บรรทัดใหม่ที่ชาญฉลาดขึ้นบรรทัดใหม่ทำให้ฉันสับสนเล็กน้อย ดูเหมือนจะใช้งานไม่ได้สำหรับ 1 หรือ 2


ดี ใด ๆ^, v, /หรือ\ สำหรับว่างเปล่าที่สองจะได้ทำงานที่นั่น ตอนนี้ฉันหวังว่าฉันได้ปกคลุมแทน* /
แยกผลไม้

2

Java (OpenJDK 8) , Magic Octopus Urn

class X{public static void main(String[]args){System.out.println(new String(████████[Integer.parseInt(args[0])]).matches("█████████████")?███);}}
class X{public static void main(String[]args){System.out.println(new String(new char[Integer.parseInt(args[0])]).matches(".?|(..+?)\\1+")?0:1);}}

ลองออนไลน์!

รหัสจะนำมาจากRosettaCodeและอธิบายในดังนั้น


ไม่มีความคิดว่ามันเป็นที่นิยมฮะ! มีสิ่งนี้ในกระเป๋าหลังของฉันเป็นเวลานาน ฉันขโมยมันมาจากไฟล์ยูทิลิตี้ที่เคยมีมาตั้งแต่ ... Jeez ... 2014?
Magic Octopus Urn

2

Python 3 , 44 ไบต์, osuka_

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

ลองออนไลน์!

ไม่ทำงานเมื่อ x <2 or 0สามารถถูกแทนที่ด้วย>0{2 spaces}หรือแม้กระทั่ง 4 ช่องว่าง

สำหรับปัญหา x <2 เนื่องจากi>=xต้องใส่ไว้ด้านหน้า (ไม่เช่นนั้นจะมีการวนซ้ำไม่สิ้นสุด) และi>=xผลตอบแทนจะเป็นจริงทันทีเมื่อ x <2 ดังนั้นฉันคิดว่านั่นคงไม่มีปัญหาอะไร


ดังนั้นเมื่อมันปรากฏออกมาโค้ดของฉันก็ใช้ไม่ได้กับ x <2 เช่นกัน อุ่ย (ฉันอาจทดสอบด้วยช่วง (2, ... ), เพราะฉันโง่)
osuka_

2

M, dylnan

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

นี่อาจไม่ใช่วิธีแก้ปัญหาที่ตั้งใจไว้

ลองออนไลน์!

มันทำงานอย่างไร

ÆP เป็นการทดสอบเบื้องต้นในตัว

øสิ่งใหม่โซ่ niladic เนื่องจากค่าส่งคืนก่อนหน้า (ผลลัพธ์ของÆP) ออกนอกขอบเขตสิ่งนี้จะพิมพ์โดยปริยาย

“;;“»ประเมินรายการของสตริง["< Aalst" ""]และVพยายามที่จะประเมินพวกเขา sพยายามแยกอาร์กิวเมนต์ออกเป็นกลุ่มความยาว0ซึ่งทำให้ตัวแปล M หยุดทำงานหยุดการทำงานของเอาต์พุตเพิ่มเติม


ไม่ใช่โซลูชันที่ตั้งใจ แต่ดี จะอัปเดตโพสต์เป็นแคร็กในไม่ช้า ถ้าฉันพูดคำว่า "สวนสัตว์" ที่จะนำคุณไปสู่ทางออกที่เป็นไปได้อื่นหรือไม่
dylnan

หืมดูเหมือนว่าไม่มีที่สิ้นสุดที่ซับซ้อน
Dennis


1

Python 3 , user71546

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

ลองออนไลน์!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.