Hôm nay, chúng ta sẽ tính toán hàm nhị phân hiệu quả nhất. Cụ thể hơn, chúng ta sẽ tính toán hàm, khi một biểu thức được tạo từ việc áp dụng hàm cho đầu vào không đổi 0 hoặc đầu ra của chính nó, có thể biểu diễn tất cả các số nguyên dương với các biểu thức ngắn nhất có thể, đặt mức độ ưu tiên cao hơn cho các số nguyên nhỏ hơn.
Chức năng này được xây dựng như sau:
Đối với mỗi số nguyên, bắt đầu từ 1 và đi lên, chọn biểu thức ngắn nhất mà chúng ta chưa gán đầu ra và biến số nguyên đó thành đầu ra của biểu thức đó. Các mối quan hệ về độ dài biểu thức sẽ bị phá vỡ bởi đối số bên trái nhỏ hơn và sau đó bằng đối số bên phải nhỏ hơn. Đây là cách nó hoạt động:
Ban đầu, 1 không được chỉ định. Biểu thức chưa được gán ngắn nhất là
f(0, 0)
, vì vậy chúng tôi sẽ đặt thành 1.Bây giờ, 2 là không được chỉ định. Các biểu thức chưa được gán ngắn nhất là
f(f(0, 0), 0)
=f(1, 0)
vàf(0, f(0, 0))
=f(0, 1)
. Ties bị phá vỡ đối với đối số bên trái nhỏ hơn, vì vậyf(0, 1) = 2
.Biểu thức chưa được gán ngắn nhất còn lại là
f(f(0, 0), 0)
=f(1, 0)
, vì vậyf(1, 0) = 3
.Bây giờ, chúng tôi đã hết các biểu thức chỉ với 2
f
giây và 30
giây, vì vậy chúng tôi sẽ phải thêm một biểu thức nữa. Phá vỡ mối quan hệ bằng lập luận trái, sau đó tranh luận phải, chúng ta có đượcf(0, 2) = 4
, kể từ đóf(0, f(0, f(0, 0))) = f(0, f(0, 1)) = f(0, 2)
.Tiếp tục, chúng tôi có
f(0, 3) = 5
,f(1, 1) = 6
,f(2, 0) = 7
,f(3, 0) = 8
,f(0, 4) = 9
, ...
Đây là bảng tôi đã điền cho một vài giá trị đầu tiên:
0 1 2 3 4 5 6 7 8
/---------------------------
0| 1 2 4 5 9 10 11 12 13
1| 3 6 14 15 37 38 39 40 41
2| 7 16 42 43
3| 8 17 44 45
4| 18 46
5| 19 47
6| 20 48
7| 21 49
8| 22 50
Một cách khác để xem xét nó là mỗi đầu ra có một kích thước, bằng tổng kích thước của các đầu vào của nó cộng với một. Bảng được điền theo thứ tự tăng kích thước đầu ra, các mối quan hệ bị phá vỡ bằng cách giảm thiểu đầu vào bên trái sau đó đầu vào bên phải.
Thách thức của bạn là, đưa ra hai số nguyên không âm là đầu vào, tính toán và xuất giá trị của hàm này. Đây là mã golf. Giải pháp ngắn nhất, tính bằng byte, thắng. Sơ hở tiêu chuẩn bị cấm.
((0, (0, (0, 0))), 0)
nhỏ hơn về mặt từ vựng (((0, 0), 0), (0, 0))
, tuy nhiên cái sau có cạnh trái nhỏ hơn.