ความท้าทายนี้ได้รับแรงบันดาลใจจากบล็อกการเขียนโปรแกรมที่ฉันใช้บ่อย โปรดดูโพสต์ต้นฉบับที่นี่: ปริศนาการเขียนโปรแกรม
ท้าทาย
กำหนดฟังก์ชั่นf:Q->Q
เช่นนั้นf(f(n)) = -n
สำหรับจำนวนเต็มทั้งหมดที่ไม่เป็นศูนย์n
และQ
เป็นชุดของจำนวนตรรกยะ
รายละเอียด
ในสิ่งที่ภาษาที่คุณต้องการกรุณากำหนดหนึ่งฟังก์ชั่นหรือโปรแกรมf
ที่ยอมรับเป็นพารามิเตอร์หนึ่งจำนวนn
และผลตอบแทนหรือผลอย่างใดอย่างหนึ่งf(n)
จำนวน
อาจมีการป้อนข้อมูลผ่านกลไกใดก็ตามที่เป็นธรรมชาติที่สุดสำหรับภาษาของคุณ: อาร์กิวเมนต์ฟังก์ชั่น, อ่านจาก STDIN, อาร์กิวเมนต์บรรทัดคำสั่ง, ตำแหน่งสแต็ค, อินพุตเสียง, สัญญาณแก๊งค์ ฯลฯ
เอาต์พุตควรเป็นค่าส่งคืนจากฟังก์ชัน / โปรแกรมหรือพิมพ์ไปยัง STDOUT
ผมอยากจะ จำกัด คำตอบให้กับฟังก์ชั่นที่ไม่ได้ใช้ประโยชน์ของรัฐโปรแกรมหรือหน่วยความจำระดับโลก / f
ข้อมูลที่สามารถมองเห็นจากด้านนอกของฟังก์ชั่น ตัวอย่างเช่นการรักษาตัวนับนอกf
จำนวนสิ่งที่f
ถูกเรียกและเพียงแค่การปฏิเสธตามจำนวนนี้ไม่ได้ท้าทายหรือน่าสนใจสำหรับทุกคน การตัดสินใจf
ควรอาศัยข้อมูลในf
ขอบเขตของคำศัพท์เท่านั้น
อย่างไรก็ตามข้อ จำกัด นี้อาจไม่เหมาะสมสำหรับภาษาที่เน้นกองซ้อนหรือภาษาประเภทอื่นที่ไม่แยกความแตกต่างของข้อมูลหรือขอบเขตเหล่านี้ โปรดใช้วิจารณญาณที่ดีที่สุดของคุณเพื่อรักษาจิตวิญญาณของความท้าทายนี้
เกณฑ์การให้คะแนน
กฎกอล์ฟทั่วไปที่บังคับใช้ - คะแนนของคุณคือจำนวนไบต์ในซอร์สโค้ดของคุณ
คำตอบน้อยที่สุดต้องมีโดเมนและโคโดเมนของf
ที่จะเป็นส่วนหนึ่งของ Q
rationals หากคุณ จำกัด โดเมนและโคโดเมนของคุณf
เป็นจำนวนเต็มZ
คะแนนของคุณจะอยู่ที่ 90% ของจำนวนไบต์ในซอร์สโค้ดของคุณ
เบรค
ในกรณีที่เสมอการต่อไปนี้จะถูกใช้ตามลำดับ:
- จำนวนสัญลักษณ์ที่ไม่ใช่ช่องว่างที่พิมพ์ได้น้อยที่สุดในซอร์สโค้ดของคุณ
- วันที่และเวลาที่ส่งคำตอบเร็วที่สุด
แก้ไข
คุณไม่จำเป็นต้องให้การสนับสนุนหมายเลขที่มีขนาดตามอำเภอใจ โปรดตีความชุดZ
และQ
เป็นประเภทข้อมูลในภาษาที่คุณเลือก (โดยทั่วไปจะเป็นจำนวนเต็มและจุดลอยตัวตามลำดับ)
หากโซลูชันของคุณขึ้นอยู่กับโครงสร้างพื้นฐานหรือรูปแบบบิตของชนิดข้อมูลทั้งหมดโปรดอธิบายข้อ จำกัด และวิธีการใช้งาน
f:Q->Q
หมายได้อย่างไร
f
เป็นสมาชิกในการทำแผนที่การทำงานของQ
(สรุปตัวเลข) เพื่อสมาชิกคนอื่น ๆ (อาจจะเหมือนกัน) Q
ของ ดูen.wikipedia.org/wiki/Function_(mathematics)#Notation