Hàm nửa hàm mũ là hàm mà khi được cấu tạo với chính nó sẽ cho hàm số mũ. Ví dụ, nếu f(f(x)) = 2^x
, sau đó f
sẽ là một hàm số mũ. Trong thử thách này, bạn sẽ tính một hàm số mũ cụ thể.
Cụ thể, bạn sẽ tính hàm từ các số nguyên không âm sang các số nguyên không âm với các thuộc tính sau:
Tăng đơn điệu: nếu
x < y
, thìf(x) < f(y)
Ít nhất là một nửa số mũ: Đối với tất cả
x
,f(f(x)) >= 2^x
Nhỏ nhất về mặt số học: Trong số tất cả các chức năng có các thuộc tính trên, hãy xuất ra hàm tối thiểu hóa
f(0)
, cho phép lựa chọn đó giảm thiểuf(1)
, sau đóf(2)
, v.v.
Các giá trị ban đầu của hàm này, cho các đầu vào 0, 1, 2, ...
là:
[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]
Bạn có thể xuất hàm này thông qua bất kỳ phương thức nào sau đây, dưới dạng hàm hoặc là một chương trình đầy đủ:
Lấy
x
làm đầu vào, đầu raf(x)
.Lấy
x
làm đầu vào, đầu ra cácx
giá trị đầu tiên củaf
.Đầu ra vô hạn tất cả
f
.
Nếu bạn muốn lấy x
và đầu ra f(x)
, x
phải được lập chỉ mục bằng không.
Đây là mã golf - mã ngắn nhất tính bằng byte thắng. Lỗ hổng tiêu chuẩn bị cấm, như mọi khi.