ฟังก์ชั่นครึ่งชี้แจงเป็นหนึ่งซึ่งเมื่อประกอบกับตัวเองให้ฟังก์ชั่นการชี้แจง ตัวอย่างเช่นถ้าf(f(x)) = 2^x
ไปแล้วf
จะเป็นฟังก์ชั่นครึ่งชี้แจง ในความท้าทายนี้คุณจะคำนวณฟังก์ชันเลขชี้กำลังแบบครึ่งหนึ่ง
โดยเฉพาะคุณจะคำนวณฟังก์ชันจากจำนวนเต็มไม่เป็นลบถึงจำนวนเต็มที่ไม่ใช่ลบด้วยคุณสมบัติต่อไปนี้:
เพิ่มขึ้นอย่างน่าเบื่อ: ถ้า
x < y
เช่นนั้นf(x) < f(y)
อย่างน้อยครึ่งชี้แจง: สำหรับทุกคน
x
,f(f(x)) >= 2^x
เล็กที่สุดในพจนานุกรม: ในบรรดาฟังก์ชั่นทั้งหมดที่มีคุณสมบัติด้านบนให้ส่งเอาท์พุตที่ย่อเล็กสุด
f(0)
ซึ่งให้ตัวเลือกนั้นย่อเล็กสุดf(1)
จากนั้นf(2)
จึงเป็นต้น
ค่าเริ่มต้นของฟังก์ชันนี้สำหรับอินพุต0, 1, 2, ...
คือ:
[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]
คุณสามารถส่งออกฟังก์ชั่นนี้ผ่านวิธีการใด ๆ ต่อไปนี้ไม่ว่าจะเป็นฟังก์ชั่นหรือเป็นโปรแกรมเต็มรูปแบบ:
ใช้เป็นอินพุทเอาท์พุท
x
f(x)
ใช้
x
เป็นอินพุทเอาท์พุทแรกค่าx
f
f
การส่งออกทั้งหมดของอนันต์
หากคุณต้องการที่จะใช้x
และเอาท์พุทf(x)
, x
ต้องเป็นศูนย์การจัดทำดัชนี
นี่คือรหัสกอล์ฟ - รหัสสั้นที่สุดในหน่วยชนะไบต์ ช่องโหว่มาตรฐานถูกแบนเช่นเคย