Tracless Busy Beaver


20

Tất cả những ngọn hải đăng bận rộn đã làm cho một mớ hỗn độn. Họ đã viết tất cả trên băng. Với tốc độ này, hàng xóm của chúng tôi sẽ ngừng cho chúng tôi mượn băng không giới hạn.

Chúng tôi cần một cách mới để chơi trò chơi hải ly bận rộn, một cách không làm hỏng mọi băng chúng tôi sử dụng.

Những quy định

Brainfuck thôi. Băng nhớ không bị ràng buộc cả hai cách. Hướng dẫn nhập sẽ luôn đọc , vì vậy nó có thể được sử dụng để xóa giá trị.0

Giới hạn nguồn 50 byte.

Khi kết thúc thực thi, bộ nhớ phải là s.0

Điểm là khoảng cách giữa vị trí bắt đầu của con trỏ bộ nhớ và vị trí cuối cùng - nếu cần hướng dẫn di chuyển để đi giữa chúng, điểm của bạn là n . Cao hơn thì tốt hơn. Cung cấp một giá trị chính xác nếu bạn có thể, nếu không thì cung cấp một ước tính.nn

Thí dụ

32 byte, 2255-1

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

Giải trình

-                                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.

Chúng tôi bắt đầu với danh sách . Ở mỗi lần lặp, chúng ta tiêu thụ giá trị n ở bên trái của danh sách và nếu n > 1 , chúng ta sẽ thêm [ n - 1 , n - 1 ] vào bên phải. Các số được nối ( n - 1 ) thấp hơn số gốc ( n ) , vì vậy chúng sẽ nhỏ hơn cho đến khi chúng là 1 , tại thời điểm chúng được tiêu thụ mà không mở rộng. Do đó, quá trình kết thúc cuối cùng, với tất cả 0[255]nn>1[n-1,n-1](n-1)(n)10s trong bộ nhớ. Tuy nhiên, ở mỗi bước, số lượng bản sao của số nhân đôi. Điểm của chương trình này được khởi tạo với danh sách 2 n - 1 .[n]2n-1

Ví dụ này có nghĩa là để hiển thị một số kỹ thuật được sử dụng trong việc tạo một đệ trình. Nó không cạnh tranh cho kích thước của nó.


3
@Okx không có vấn đề gì - đó không phải là một lời chỉ trích. Nếu có một cách khác để ghi điểm này cho phép độ dài mã tùy ý, thì bây giờ là lúc bạn tìm thấy nó trước khi có câu trả lời. Tôi sẽ thử lại điều này vì hiện tại thẻ golf mã bị sai lệch
trichoplax

3
Phải có một số giới hạn, vì nhiều byte hơn cho phép bạn xác định hàm phát triển nhanh hơn. Không có lý do cụ thể nào cho 50, nó có vẻ đủ cao cho một số tăng trưởng tốt (chắc chắn tốt hơn so với số mũ của tôi) và các giải pháp sáng tạo nhưng vẫn còn quá nhỏ đối với sâu của Beklemishev hoặc tăng trưởng cực nhanh khác. // Cảm ơn vì đã sửa các thẻ của tôi bằng cách này, tôi đã vội vàng một chút để có được điều này.
EPICI

2
Chỉ để làm nền: Chúng tôi cố gắng tránh điểm tối thiểu cho môn đánh gôn , nhưng thử thách này không phải là môn đánh gôn và số byte không phải là điểm số, vì vậy tôi thấy hoàn toàn không có vấn đề gì với việc có giới hạn 50 byte trong trường hợp này.
trichoplax

1
Thông tin: Tôi nghĩ rằng tôi có thể "chuyển tầm thường" câu trả lời này từ thử thách khác và nhận được điểm tương tự.
dùng202729

1
@EPICI Chú hải ly bận rộn trước đây của tôi đã vô dụng , đó là lý do tại sao tôi cố gắng thích nghi với nó.
Jo King

Câu trả lời:


10

Điểm: Một(255,2)-1= =(22535)-4

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

ở đây là công thức Péter-Ackermann củachức năng AckermannMột[-[<+>>[-<[->+<]+>>]+<-]>[>]+[<]+<]Một(m,n)1 - m, m, 1 <n times>mMột(m,n)

Tôi đã sử dụng chương trình Python sau để mô hình hóa hành vi của chương trình:

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
Bạn có thể tăng điểm của bạn bằng cách thêm một dấu >.
Jonathan Frech

wow, rất ấn tượng
alan2here 17/11/18
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.