การค้นหาโปรแกรมในช่วงเวลาต่างๆ


9

มากำหนดตัวเลข 0 ถึง 94 ให้กับอักขระ ASCII 95 ที่พิมพ์ได้ :

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

ช่องว่างคือ 0 !คือ 1 และต่อ ๆ ไปจนถึง~94 เราจะกำหนด 95 ให้กับแท็บ ( \t) และ 96 ให้กับบรรทัดใหม่ ( \n)

ตอนนี้ให้พิจารณาสตริงที่ไม่มีที่สิ้นสุดซึ่งมีอักขระ Nth เป็นตัวละครด้านบนที่มีการกำหนดหมายเลขเฉพาะของ Nth แบบโมดูโล 97 เราจะเรียกสตริงนี้ว่า S

ตัวอย่างเช่นหมายเลขเฉพาะตัวแรกคือ 2 และ 2 mod 97 คือ 2 และ 2 ถูกกำหนดให้ "เพื่อให้ตัวอักษรตัวแรกของ S "เป็น ในทำนองเดียวกันนายกหมายเลข 30 คือ 113 และ 113 mod 97 เป็น 16 และ 16 ได้รับมอบหมายให้0เพื่อให้ตัวละครที่ 30 ของ S 0เป็น

อักขระ 1,000 ตัวแรกของ S มีดังนี้:

"#%'+-137=?EIKOU[]cgiosy $&*,0>BHJTV\bflrt~
#%1=ACGMOY_ekmswy"046:HNXZ^dlrx|!)-5?AKMSW]eiko{"&.28DFX^hntv|%+139?CEQ[]agmo{  $,6>HPV\`hnrz~+5ACMOSU_mqsw$(*.BFNX`djp~!'-5;GKQS]_eoq{}"48:>DJRX^tv
'17=EQU[aciu    026<>DHJNZ\b#)/7ISaegkqy}   $0:<@BFLXdlx~!'/3;?MQWY]ceku(.24LPR\hjt|!'-?EIKWamu$28<>BDNZ`fxz)+AGOUY[_gmwy"0:@LNRT^jl|~#')3;Meiow&(,4DFJRX^bnp%+-37=KQUW]agsy    ,06BJPTn
)15;=CYegw  ".<FHLTZ`dfjpx|~#-/9AES]ikquw&48>FLPbjtz
'1=KOU[]y{$,0>BJV\hlr%/1A[_amsw"(04<RTXZf!#)/59?AMQ]_ik{},2FV^bdhj
'39CEIOQWacoy{$28<BJPVfrtx%+/7AIOUkqs}*.4FHR`dfp~!);?EGKQS_cw,8:>DJLRhjp
%139EUW[aosu&>HNPZ\fhrxz#%/5=[egqy  (:@LXZlrv|!35?MSWY]uw"(8@FL^nptz|!'17COacim &>BDHNP\`n+5;GU[eqsw}$*46:HNTX^`jl|'/AEKWY_ek&,:>FPXdvz|
7CIK[agu    ,0NTZ`hnrt
%)+1GMOSegkwy   "<BHLT^~-/59;?AKY_cku{.24:X\dntz!'37=?EIOQ[]ms&*6D`fz~/7=AGU[akmw"*46@HT^vx|#)-5GQW]_eo{}&,28@FPVX^djt|39OQcgoy6>PTV`fhnr#+7IY_ams} (*0:HLdfvx!#-AEGKScioq},48>\^hjptz
'-1=CKW[iu  6<HNPfn
)/=ACIS[aek(6@BNXZjl~5GM]ouw(,24>FPV\dhnpz|'+179EIWims&*28<DHV\`nz~
=AY_eq}*046:LR^

Stack Exchange เปลี่ยนแท็บให้เป็นช่องว่างดังนั้น นี่คือ PasteBinพร้อมกับแท็บที่ไม่เปลี่ยนแปลง

ท้าทาย

ค้นหาsubstringของ S ซึ่งเป็นโปรแกรมที่ถูกต้องในภาษาที่คุณเลือกซึ่งจะแสดงผลหมายเลข M Prime ตัวแรกหนึ่งคำต่อบรรทัดตามลำดับสำหรับจำนวนเต็มบวก M บางตัว

ตัวอย่างเช่น2เป็นสตริงย่อยของ S (มันเกิดขึ้นในหลาย ๆ ที่ แต่จะทำอะไรก็ตาม) และ2เป็นโปรแกรมCJam ที่ถูกต้องซึ่งเอาต์พุตเป็น

2

ซึ่งเป็นครั้งแรก M = 1 จำนวนเฉพาะหนึ่งคนต่อหนึ่งบรรทัดตามลำดับ

ในทำนองเดียวกันสตริง2N3N5อาจเป็นสตริงย่อยของ S บางแห่งและ2N3N5เป็นโปรแกรม CJam ที่ถูกต้องที่ส่งออก

2
3
5

ซึ่งเป็น M / M หมายเลขแรก 3 หมายเลขต่อหนึ่งบรรทัดตามลำดับ

เกณฑ์การให้คะแนน

การส่งที่มีการชนะ M สูงสุด ไทเกอร์เบรกเกอร์ไปที่การส่งที่โพสต์ก่อน

รายละเอียด

  • ไม่ควรมีเอาต์พุตเพิ่มเติมนอกเหนือจากช่วงเวลาเดียวในแต่ละบรรทัดยกเว้นบรรทัดใหม่ที่เป็นทางเลือกหลังจากบรรทัดสุดท้าย ไม่มีอินพุต

  • ซับสตริงอาจมีความยาวเท่าใดก็ได้ตราบใดที่มัน จำกัด

  • สตริงย่อยอาจเกิดขึ้นที่ใดก็ได้ภายใน S (และ S อาจมีหลายตำแหน่ง)

  • โปรแกรมจะต้องเป็นโปรแกรมที่สมบูรณ์แบบ คุณอาจไม่คิดว่ามันทำงานในสภาพแวดล้อม REPL

  • โปรแกรมจะต้องเรียกใช้และยุติในเวลาที่แน่นอนโดยไม่มีข้อผิดพลาด

  • "Newline" อาจตีความได้ว่าเป็นคำขึ้นบรรทัดใหม่ทั่วไปที่จำเป็นสำหรับระบบ / ล่าม / etc ของคุณ เพียงถือว่าเป็นตัวละครตัวหนึ่ง

คุณต้องให้ดัชนีของ S ที่สตริงย่อยของคุณเริ่มต้นรวมถึงความยาวของสตริงย่อยหากไม่ใช่สตริงย่อยนั้น คุณอาจไม่เพียงแสดงว่าซับสตริงต้องมีอยู่เท่านั้น

ที่เกี่ยวข้อง: กำลังมองหาโปรแกรมในกระดานเกรงกลัวขนาดใหญ่


1
คุณสามารถให้รหัสในการผลิตสตริงใหญ่ที่เกินจำนวนอักขระใด ๆ ? (ฉันคิดว่าคุณมีอยู่แล้ว)
เครื่องมือเพิ่มประสิทธิภาพ

หากมีอักขระ ASCII ที่พิมพ์ได้ 95 ตัวทำไมคุณถึงทำ modulo 97 ไม่เป็นไรคุณยังใช้แท็บและขึ้นบรรทัดใหม่
aditsu ออกจากเพราะ SE นั้นชั่วร้าย

เมื่อพิจารณาว่า 0 mod 97 สามารถเกิดขึ้นได้เพียงครั้งเดียวการขาดพื้นที่เจ็บจริงๆ ...
Sp3000

@ Sp3000 Shoot นั่นไม่ได้เกิดขึ้นกับฉัน : /
งานอดิเรกของ Calvin

คำตอบ:


18

Lenguage , M = ∞

โปรแกรมทั้งหมดเริ่มต้นที่จุดเริ่มต้นของสตริง โปรแกรม Python ที่เขียนไม่ดีต่อไปนี้คำนวณจำนวนอักขระที่ต้องการสำหรับ M ที่กำหนด

def program_length(n):
    PLUS, MINUS, DOT = '000', '001', '100'
    i = 1
    s = ''
    while n > 0:
        i += 1
        if all(i%f for f in range(2,i)): 
            s += str(i) + '\n'
            n -= 1
    out = '110111'
    ch = 0
    for c in s:
        dif = ord(c) - ch
        if dif > 0: out += PLUS * dif
        else: out += MINUS * -dif
        out += DOT
        ch = ord(c)
    return int(out, 2)

ตัวอย่างเช่นสำหรับ M = 5 โปรแกรมคือ 2458595061728800486379873255763299470031450306332287344758771914371767127738856987726323081746207100511846413417615836995266879023298634729597739072625027450872641123623948113460334798483696686473335593598924642330139401455349473945729379748942060643508071340354553446024108199659348217846094898762753583206697609445347611002385321978831186831089882700897165873209445730704069057276108988230177356 อักษรตัวแรก


หากมีข้อสงสัยมีตัวแปร BF ที่จะทำเพื่อคุณ
ymbirtt

3
มันตลกที่ Lenguage ได้รับแรงบันดาลใจจากการท้าทายอีกครั้งของฉัน มันเหมือนกับว่าฉันกำลังนำความพินาศมาเอง
งานอดิเรกของ Calvin

3

CJam, M = 2

สั้นและหวาน:

2NZ

ลำดับนี้เริ่มต้นที่ตำแหน่ง 54398 โดยใช้การจัดทำดัชนี 1 ของสตริง คุณสามารถทดสอบออนไลน์ได้ที่นี่ที่นี่

ฉันพยายามค้นหารูปแบบต่าง ๆ ที่เป็นไปได้ แต่นี่เป็นทางออกแรกที่ฉันพบ

ฉันกำลังพยายามค้นหารุ่น M = 3 แต่ฉันไม่คิดว่าจะหารุ่นใดรุ่นหนึ่งภายในระยะเวลาที่เหมาะสม หากลำดับนั้นสุ่มอย่างสม่ำเสมอ (การประมาณ) ดังนั้นดัชนีเริ่มต้นสำหรับลำดับความยาว 5 อาจอยู่ในลำดับที่ 10 ^ 9


ตรวจสอบแล้ว: 1e6{mp},97f%' f+"2NZ"# ลิงค์ (ใช้เวลาสักครู่: p)
aditsu ออกเพราะ SE นั้นชั่วร้าย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.