พื้นหลัง
ตัวต่อนี้เป็นรูปแบบของตัวต่อสี่สี่ตัว (เป็นหัวข้อของคำถามที่ผ่านมา ) เช่นเดียวกับจิ๊กซอร์นั้นเป้าหมายคือการค้นหานิพจน์ทางคณิตศาสตร์สำหรับจำนวนเต็มที่แตกต่างกันโดยใช้เพียงตัวเลขสี่หลักและตัวดำเนินการทางคณิตศาสตร์บางตัว ในกรณีนี้ แต่ตัวเลขที่ได้รับอนุญาตเป็นเพียง 2, 0, 1 และ 5 แต่ละคนจะต้องปรากฏอย่างแม่นยำหนึ่งครั้งในการแก้ปัญหาและในลำดับที่ถูกต้อง น่าแปลกที่ตัวเลขทั้งหมดจำนวนมากสามารถแสดงด้วยวิธีนี้ เราขอแนะนำให้นักแก้ปัญหาลองแก้ปัญหาด้วยมือก่อนเพราะสนุกอย่างน่าประหลาด
กฎระเบียบ
ค่าคงที่อาจถูกสร้างขึ้นจากตัวเลขเดียวหรือหลายหลัก:
- จำนวนเต็ม: เช่น 2, 0, 15 เป็นต้น
- ทศนิยม: เช่น .2, .01, 1.5, ฯลฯ
- ทำซ้ำทศนิยม : เช่น. 2 ~ (= 0.222 ... ), .15 ~ (= 0.1555 ... ), 20.15 ~~ (= 20.1515 ... )
อนุญาตให้มีการปฏิบัติงานที่ไม่เกิดเหตุต่อไปนี้:
- การปฏิเสธคู่กัน: -x
- รากที่สอง: sqrt (x)
- จำนวนเต็ม: x!
อนุญาตการดำเนินการไบนารีต่อไปนี้:
- ตัวดำเนินการทางคณิตศาสตร์มาตรฐาน: x + y, xy, x * y และ x / y
- การยกกำลังโดยพลการ: x ^ y
- รากเอง: rt [x] (y) (= x'th root ของ y)
งาน
โปรแกรมของคุณควรพิมพ์นิพจน์สำหรับจำนวนเต็มจำนวนมากระหว่าง 0 ถึง 100 เท่าที่จะทำได้จากนั้นส่งออกจำนวนนิพจน์ที่สร้างขึ้น
- ต้องพิมพ์โซลูชั่นตามลำดับในรูปแบบ n = [expr]
- นิพจน์ต้องใช้ตัวเลขทั้งหมด 2, 0, 1, 5, แต่ละครั้งตามลำดับ
- นิพจน์จะต้องพิมพ์โดยใช้สัญลักษณ์ที่อธิบายไว้ข้างต้น อนุญาตวงเล็บที่ไม่จำเป็น แต่ไม่จำเป็นเช่นเดียวกับช่องว่าง ลำดับความสำคัญของโอเปอเรเตอร์คือการปฏิเสธค่าแฟกทอเรียลการยกกำลังการคูณ / การหารและการบวก / การลบ
- โปรแกรมไม่จำเป็นต้องส่งคืนโซลูชั่นสำหรับหมายเลขทั้งหมด โปรแกรมที่แสดงผลลัพธ์ 0 เพียงอย่างเดียวจึงใช้ได้ อย่างไรก็ตามดูหัวข้อการให้คะแนนด้านล่าง
- โปรแกรมควรทำงานภายใน 15 นาทีบนคอมพิวเตอร์ที่ทันสมัย
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น ควรพิมพ์นิพจน์ไปที่ STDOUT (หรือทางเลือกอื่นที่ใกล้เคียงที่สุด) จำนวนนิพจน์สามารถพิมพ์เป็น STDOUT หรือส่งคืนเป็นจำนวนเต็ม บังคับใช้ข้อ จำกัด ของรหัสมาตรฐานกอล์ฟ
ตัวอย่างผลลัพธ์
0=2*0*1*5
10=20*1*.5
42=((2+0!)!+1)!/5!
100=20*1*5
4
เกณฑ์การให้คะแนน
ปรับปรุง : @ orlp ได้สังเกตเห็นข้อบกพร่องในระบบการให้คะแนน ดูhttp://meta.codegolf.stackexchange.com/questions/5106/way-of-salvaging-two-zero-one-five-puzzle-challengeสำหรับการสนทนาว่าควรแก้ไขอย่างไร
โซลูชั่นจะได้รับคะแนนก่อนตามจำนวนนิพจน์ที่พวกเขาสร้างขึ้นและจากนั้นตามความยาวโค้ดเป็นไบต์ ดังนั้นโปรแกรม 1,000 ไบต์ที่สร้างผลลัพธ์ 80 รายการจะชนะโปรแกรม 100 ไบต์ที่สร้างเพียง 79 เท่านั้น (แม้ว่าโปรแกรมหลังสามารถขยายได้อย่างง่ายดายเพื่อรวมผลลัพธ์ที่หายไป)
สำหรับผู้ที่ต้องการเป้าหมายที่สร้างแรงบันดาลใจด้านล่างจะเป็นขอบเขตล่างของจำนวนนิพจน์ที่สามารถแสดงได้ ฉันไม่ได้วางแผนที่จะส่งผลงานดังนั้นอาจเป็นไปได้ที่จะได้รับรางวัลน้อยลง!
อย่างน้อย 85 (จาก 101) แม้ว่ามันอาจจะสูงกว่าก็ตาม
ป้ายบอกคะแนน
นี่เป็นบทสรุปของความก้าวหน้าของคะแนน เมื่อใดก็ตามที่คุณเอาชนะคะแนนสูงสุดรู้สึกอิสระที่จะเพิ่มตัวเองไปด้านบนของตาราง (หรือขอให้คนอื่น)
- 0 นิพจน์, 1 ไบต์ (Pyth): การใช้งานที่เพิ่งส่งออก 0