ในการท้าทายนี้คุณจะถูกขอให้ใช้งานฟังก์ชั่นใด ๆ (หรือโปรแกรมเต็มรูปแบบ) ที่ตอบสนองสองคุณสมบัติ คุณสมบัติเหล่านั้นคือ:
ฟังก์ชั่นของคุณจะต้องเป็นฟังก์ชั่นการฉีด (ย้อนกลับ) จากชื่อพหุนามที่มีค่าสัมประสิทธิ์จำนวนเต็มไม่เป็นลบถึงจำนวนเต็มไม่เป็นลบ ซึ่งหมายความว่าไม่มีอินพุตที่ไม่เท่ากันสองตัวที่สามารถแมปกับเอาต์พุตที่เท่ากัน
ฟังก์ชั่นของคุณจะต้องรักษาจำนวน "บนบิต" ทั้งหมดจากอินพุตไปยังเอาต์พุต นี่หมายความว่าถ้าคุณนับ 1 บิตของสัมประสิทธิ์ของพหุนามแต่ละผลรวมของพวกเขาควรจะเท่ากับจำนวน 1 บิตในการแทนเลขฐานสองของเอาต์พุต ตัวอย่างเช่น
9
อยู่1001
ในไบนารีดังนั้นจึงมี 21
บิต
IO
พหุนามจำนวนเต็มที่ไม่เป็นลบจะเหมือนกับรายการอนันต์ของจำนวนเต็มที่ไม่เป็นลบเช่นนั้นหลังจากจุดใดจุดหนึ่งจำนวนเต็มทั้งหมดจะเป็นศูนย์ ดังนั้นชื่อพหุนามอาจถูกแทนด้วยรายการอนันต์ (แม้ว่าอาจไม่เป็นที่พึงปรารถนา) หรือโดยรายการ จำกัด ด้วยค่าศูนย์โดยนัยหลังจากสิ้นสุดรายการ
ความแตกต่างที่สำคัญระหว่างชื่อพหุนามกับรายการ จำกัด คือการเพิ่มศูนย์ไปยังจุดสิ้นสุดของรายการจะเปลี่ยนรายการ:
ในขณะที่การเพิ่มศูนย์ถึงจุดสิ้นสุดของพหุนามจะไม่เปลี่ยนค่าของมัน:
ดังนั้นหากฟังก์ชั่นของคุณรับรายการ จำกัด ซึ่งแทนพหุนามเป็นอินพุตการเพิ่มศูนย์จะต้องไม่เปลี่ยนผลลัพธ์
เมื่อแสดงชื่อพหุนามเป็นรายการคุณอาจเป็นตัวแทนพวกนั้นด้วยรายการแรกหรือรายการสุดท้ายที่แทนคำคงที่ ตัวอย่างเช่นคุณอาจมีความเป็นไปได้อย่างใดอย่างหนึ่งต่อไปนี้:
ในกรณีแรกการเพิ่มค่าศูนย์ที่ส่วนท้ายของรายการไม่ควรเปลี่ยนผลลัพธ์ ในกรณีที่สองให้เพิ่มศูนย์ลงในด้านหน้าของรายการไม่ควรเปลี่ยนผลลัพธ์
แน่นอนว่าถ้าภาษาของคุณรองรับพหุนามคุณอาจใช้เป็นอินพุต
เอาต์พุตควรเป็นเอาต์พุตจำนวนเต็มที่ไม่เป็นลบผ่านวิธีมาตรฐานใด ๆ
นี่คือcode-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์น้อยกว่าจะดีกว่า
[]
หรือ[0]
การป้อนข้อมูลที่ถูกต้อง?