Một số bạn có thể quen thuộc với BigNum Bakeoff , kết thúc khá thú vị. Mục tiêu ít nhiều có thể được tóm tắt là viết chương trình C mà đầu ra của nó sẽ là lớn nhất, trong một số hạn chế và điều kiện lý thuyết, ví dụ như một máy tính có thể chạy chương trình.
Theo cùng một tinh thần, tôi đang đặt ra một thách thức tương tự mở ra cho tất cả các ngôn ngữ. Các điều kiện là:
Tối đa 512 byte .
Kết quả cuối cùng phải được in thành STDOUT. Đây là điểm số của bạn. Nếu nhiều số nguyên được in, chúng sẽ được nối.
Đầu ra phải là một số nguyên. (Lưu ý: Infinity không phải là số nguyên .)
Không có hằng số tích hợp nào lớn hơn 10, nhưng chữ số / chữ số vẫn ổn (ví dụ: hằng số Avogadro (là hằng số tích hợp) không hợp lệ, nhưng 10000 thì không.)
Chương trình phải chấm dứt khi được cung cấp đủ tài nguyên để chạy.
Đầu ra được in phải có tính xác định khi được cung cấp đủ tài nguyên để chạy.
Bạn được cung cấp số nguyên hoặc số lượng lớn đủ lớn để chương trình của bạn chạy. Ví dụ: nếu chương trình của bạn yêu cầu áp dụng các thao tác cơ bản cho các số nhỏ hơn 10 1.000.000 , thì bạn có thể cho rằng máy tính đang chạy này có thể xử lý các số ít nhất lên tới 10 1.000.000 . (Lưu ý: Chương trình của bạn cũng có thể được chạy trên máy tính xử lý số lượng lên tới 10 2.000.000 , do đó, chỉ cần gọi số nguyên tối đa mà máy tính có thể xử lý sẽ không dẫn đến kết quả xác định.)
Bạn được cung cấp đủ sức mạnh tính toán để chương trình của bạn hoàn thành việc thực hiện trong vòng dưới 5 giây. (Vì vậy, đừng lo lắng nếu chương trình của bạn đã chạy được một giờ trên máy tính của bạn và sẽ không hoàn thành sớm bất cứ lúc nào.)
Không có tài nguyên bên ngoài, vì vậy đừng nghĩ đến việc nhập chức năng Ackermann đó trừ khi nó được tích hợp sẵn.
Tất cả các vật phẩm ma thuật đang được mượn tạm thời từ một vị thần hào phóng.
Vô cùng lớn với giới hạn không xác định
- Steven H , Pyth f 3 + B³F + ω² (256 26 )
Trong đó B³F là giáo phẩm Church-Kleene với trình tự cơ bản là
B³F[n] = B³F(n), the Busy Beaver BrainF*** variant
B³F[x] = x, ω ≤ x < B³F
Bảng xếp hạng:
Đơn giản chỉ cần đẹp Nghệ thuật , Ruby f ψ 0 (X (Ω M + X (Ω M + 1 Ω M + 1 ) )) + 29 (9 9 9 )
Steven H , Pyth f ψ (Ω Ω ) + ω² + 183 (256 27! )
Leaky Nun , Python 3 f ε 0 (9 9 9 )
fejfo , Python 3 e w w 6 (f w w 5 (9e999))
Steven H , Python 3 e w w + ω² (9 9 9 99 )
Nghệ thuật đơn giản đẹp , Ruby f ω + 35 (9 9 99 )
i .. , Python 2 , f 3 (f 3 (141))
Một số lưu ý phụ:
Nếu chúng tôi không thể xác minh điểm của bạn, chúng tôi không thể đưa nó lên bảng xếp hạng. Vì vậy, bạn có thể muốn giải thích chương trình của bạn một chút.
Tương tự như vậy, nếu bạn không hiểu số lượng của bạn lớn như thế nào, hãy giải thích chương trình của bạn và chúng tôi sẽ cố gắng giải quyết nó.
Nếu bạn sử dụng loại chương trình số của Trình tải , tôi sẽ đặt bạn vào một danh mục riêng gọi là "Cực kỳ lớn với giới hạn không xác định" , vì số của Trình tải không có giới hạn trên không tầm thường về mặt phân cấp phát triển nhanh cho ' tiêu chuẩn 'trình tự cơ bản.
Số sẽ được xếp hạng thông qua hệ thống phân cấp phát triển nhanh .
Đối với những người muốn tìm hiểu cách sử dụng hệ thống phân cấp đang phát triển nhanh để ước tính số lượng thực sự lớn, tôi đang lưu trữ một máy chủ Discord chỉ vì điều đó. Ngoài ra còn có một phòng trò chuyện: Pháp lệnh .
Những thách thức tương tự:
Chương trình kết thúc ngắn nhất có kích thước đầu ra vượt quá số của Graham
Đối với những người muốn xem một số chương trình đơn giản tạo ra hệ thống phân cấp phát triển nhanh cho các giá trị nhỏ, thì đây là:
Ruby: hệ thống phân cấp phát triển nhanh
#f_0:
f=->n{n+=1}
#f_1:
f=->n{n.times{n+=1};n}
#f_2:
f=->n{n.times{n.times{n+=1}};n}
#f_3:
f=->n{n.times{n.times{n.times{n+=1}}};n}
#f_ω:
f=->n{eval("n.times{"*n+"n+=1"+"}"*n);n}
#f_(ω+1):
f=->n{n.times{eval("n.times{"*n+"n+=1"+"}"*n)};n}
#f_(ω+2):
f=->n{n.times{n.times{eval("n.times{"*n+"n+=1"+"}"*n)}};n}
#f_(ω+3):
f=->n{n.times{n.times{n.times{eval("n.times{"*n+"n+=1"+"}"*n)}}};n}
#f_(ω∙2) = f_(ω+ω):
f=->n{eval("n.times{"*n+"eval(\"n.times{\"*n+\"n+=1\"+\"}\"*n)"+"}"*n);n}
Vân vân.
Để đi từ f_x
đến f_(x+1)
, chúng tôi thêm một vòng lặp của n.times{...}
.
Mặt khác, chúng ta chéo với tất cả các ví dụ trước
f_ω(1) = f_1(1)
f_ω(2) = f_2(2)
f_ω(3) = f_3(3)
f_(ω+ω)(1) = f_(ω+1)(1)
f_(ω+ω)(2) = f_(ω+2)(2)
f_(ω+ω)(3) = f_(ω+3)(3)
Vân vân.