Traceless Busy Beaver


20

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

เราต้องการวิธีใหม่ในการเล่นเกมบีเวอร์ที่วุ่นวายซึ่งไม่ได้ทำลายทุกเทปที่เราใช้

กฎระเบียบ

Brainfuck เท่านั้น เทปหน่วยความจำไม่ได้ จำกัด ทั้งสองวิธี คำสั่งอินพุตจะอ่านเสมอดังนั้นจึงสามารถใช้ล้างค่าได้0

ขีด จำกัด แหล่งที่มา 50 ไบต์

ในตอนท้ายของการดำเนินการหน่วยความจำจะต้องทั้งหมดวินาที0

คะแนนเป็นระยะทางระหว่างสถานที่เริ่มต้นชี้หน่วยความจำและสถานที่สุดท้าย - ถ้ามันใช้เวลาคำแนะนำย้ายไประหว่างพวกเขาคะแนนของคุณเป็นn สูงกว่าดีกว่า ระบุค่าที่แน่นอนหากคุณสามารถทำได้มิฉะนั้นจะให้ค่าประมาณnn

ตัวอย่าง

32 ไบต์22551

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

คำอธิบาย

-                                Initialize the list to [255].
 [                             ] Repeat as long as the list is not empty.
 [-                            ] Decrement the left end. We need to shrink the numbers so it ends eventually.
 [ [                         ] ] Skip if 0 already.
 [ [[>]                      ] ] Move to the cell past the right end.
 [ [   +                     ] ] Make this cell 1.
 [ [    >                    ] ] Go right again.
 [ [     +                   ] ] Make this cell 1. We've now appended [1, 1].
 [ [      [<]>               ] ] Go back to the first nonzero cell on the left.
 [ [          -              ] ] And decrement it.
 [ [           [            ]] ] We will need to transfer the rest of the number from the left to the right, so keep looping.
 [ [           [[>]<        ]] ] Go to the last nonzero cell on the right.
 [ [           [    +<+     ]] ] Increment this and the one on the left. These are the cells we appended earlier. We transfer to them.
 [ [           [       [<]> ]] ] Go back to the first nonzero cell on the left, which we are transferring from.
 [ [           [           -]] ] Decrement here on the left to balance out the incrementing on the right.
 [                            >] We end the iteration on a now empty cell. Move right, the new left end is there.

เราเริ่มต้นด้วยรายการ ] ในการวนซ้ำแต่ละครั้งเราใช้ค่าnทางด้านซ้ายของรายการและหากn > 1เราผนวก[ n - 1 , n - 1 ]ไปทางขวา ตัวเลขที่ต่อท้าย( n - 1 )ต่ำกว่าต้นฉบับ( n )ดังนั้นพวกมันจะเล็กลงจนกระทั่งเป็น1ซึ่งเป็นจุดที่ใช้งานโดยไม่ขยาย ดังนั้นกระบวนการสิ้นสุดในที่สุดด้วยทั้งหมด0[255]nn>1[n1,n1](n1)(n)10ในหน่วยความจำ อย่างไรก็ตามในแต่ละขั้นตอนจำนวนสำเนาของจำนวนสองเท่า คะแนนของโปรแกรมนี้เริ่มต้นได้ด้วยรายการเป็น2 n - 1[n]2n1

ตัวอย่างนี้มีไว้เพื่อแสดงเทคนิคบางอย่างที่ใช้ในการสร้างการส่ง มันไม่สามารถแข่งขันกับขนาดของมันได้


3
@ อ็อกซ์ไม่มีปัญหา - นั่นไม่ได้มีไว้สำหรับการวิจารณ์ ถ้ามีวิธีที่จะทำคะแนนที่ช่วยให้ความยาวของรหัสที่กำหนดเองอีกตอนนี้เป็นเวลาที่จะหามันก่อนที่จะตอบมาในฉันจะติดแท็กนี้ในปัจจุบันแท็กกอล์ฟรหัสเป็นความเข้าใจผิด.
Trichoplax

3
จะต้องมีข้อ จำกัด เนื่องจากไบต์เพิ่มเติมช่วยให้คุณกำหนดฟังก์ชันที่เติบโตเร็วขึ้น ไม่มีเหตุผลอย่างใดอย่างหนึ่งสำหรับ 50 มันดูสูงพอสำหรับการเติบโตที่เหมาะสม (ดีกว่าตัวอย่างของฉันแบบ exponential) และโซลูชั่นที่สร้างสรรค์ แต่ยังเล็กเกินไปสำหรับหนอนของ Beklemishev หรือการเติบโตที่รวดเร็วมาก // ขอบคุณที่แก้ไขแท็กของฉันโดยวิธีนี้ฉันรีบออกไปเล็กน้อย
EPICI

2
สำหรับพื้นหลัง: เราพยายามหลีกเลี่ยงคะแนนขั้นต่ำสำหรับการตีกอล์ฟแต่ความท้าทายนี้ไม่ใช่การตีกอล์ฟและจำนวนไบต์ไม่ใช่คะแนนดังนั้นฉันจึงเห็นว่าไม่มีปัญหาใด ๆ กับการ จำกัด 50 ไบต์ในกรณีนี้
trichoplax

1
ข้อมูล: ฉันคิดว่าฉันสามารถ "พอร์ตนิด ๆ" คำตอบนี้จากความท้าทายอื่น ๆและได้รับคะแนนที่คล้ายกัน
user202729

1
@EPICI ของฉันก่อนหน้านี้ช่องคลอดไม่ว่างก็แล้ว traceless ซึ่งเป็นเหตุผลที่ผมพยายามที่จะปรับตัวเข้ากับมัน
Jo King

คำตอบ:


10

A(255,2)1=(22535)4

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

A[-[<+>>[-<[->+<]+>>]+<-]>[>]+[<]+<]A(m,n)1 - m, m, 1 <n times>mA(m,n)

ฉันใช้โปรแกรม Python ต่อไปนี้เพื่อสร้างโมเดลพฤติกรรมของโปรแกรม:

def a(M, N):
    assert M > 0
    m = [-M + 1, M]
    n = N
    while m[-1]:
        while m[-1] > 1:
            m[-1] -= 1
            m[-2] += 1
            while n:
                m.insert(-1, 1)
                n -= 1
            n = 1
        n += 2
        m.pop()
    return n

1
>คุณสามารถเพิ่มคะแนนของคุณโดยการเพิ่มต่อท้าย
Jonathan Frech

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