ฟังก์ชั่นครึ่งชี้แจงเป็นหนึ่งซึ่งเมื่อประกอบกับตัวเองให้ฟังก์ชั่นการชี้แจง ตัวอย่างเช่นถ้า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, ...]
คุณสามารถส่งออกฟังก์ชั่นนี้ผ่านวิธีการใด ๆ ต่อไปนี้ไม่ว่าจะเป็นฟังก์ชั่นหรือเป็นโปรแกรมเต็มรูปแบบ:
ใช้เป็นอินพุทเอาท์พุท
xf(x)ใช้
xเป็นอินพุทเอาท์พุทแรกค่าxffการส่งออกทั้งหมดของอนันต์
หากคุณต้องการที่จะใช้xและเอาท์พุทf(x), xต้องเป็นศูนย์การจัดทำดัชนี
นี่คือรหัสกอล์ฟ - รหัสสั้นที่สุดในหน่วยชนะไบต์ ช่องโหว่มาตรฐานถูกแบนเช่นเคย