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