Meta-พื้นหลัง
นี่เป็นคำถามเกี่ยวกับ Puzzlingและปฏิกิริยาโต้ตอบแบบทันทีคือ "เอาล่ะใครสักคนจะแก้ปัญหาด้วยคอมพิวเตอร์" มีการถกเถียงกันว่าความซับซ้อนของโปรแกรมในการแก้ปัญหานี้จะต้องเป็นอย่างไร "โปรแกรมนี้ต้องซับซ้อนแค่ไหน" เป็นคำจำกัดความของcode-golf ที่ค่อนข้างซับซ้อนดังนั้นบางที PPCG สามารถแก้ไขปัญหาได้?
พื้นหลัง
สมไม้ขีดไฟเป็นพื้นสมการทางคณิตศาสตร์ปกติ แต่ที่ตัวเลขและผู้ประกอบการมีการสร้างทางร่างกายโดยการวางไม้ขีดไฟลงบนโต๊ะ (คุณสมบัติที่เกี่ยวข้องหลักของไม้ขีดไฟที่นี่คือพวกมันค่อนข้างแข็งและมีความยาวคงที่บางครั้งคนใช้วัตถุอื่นแทนเช่นสำลีก้าน)
สำหรับความท้าทายนี้เราไม่จำเป็นต้องกำหนดกฎเฉพาะสำหรับการจัดเรียงไม้ขีดไฟ (เช่นเดียวกับความท้าทายที่เชื่อมโยง) แต่เราแค่แคร์ว่าจะต้องใช้ไม้ขีดไฟจำนวนเท่าไหร่ในการแทนค่านิพจน์ที่ประเมินเป็นจำนวนที่กำหนด
งาน
นี่คือตัวอักษรตัวเลขและตัวดำเนินการทางคณิตศาสตร์ที่คุณสามารถใช้ได้โดยแต่ละอันมีค่าใช้จ่ายเป็นไม้ขีดไฟ:
0
ราคา 6 ไม้ขีดไฟ1
ราคา 2 matchsticks2
ราคาทุน 5 ไม้ขีดไฟ3
ราคาทุน 5 ไม้ขีดไฟ4
ราคา 4 ไม้ขีดไฟ5
ราคาทุน 5 ไม้ขีดไฟ6
ราคา 6 ไม้ขีดไฟ7
ราคาทุน 3 ไม้ขีดไฟ8
ราคา 7 matchsticks9
ราคา 6 ไม้ขีดไฟ+
ราคา 2 matchsticks-
ราคา 1 แท่งไม้ขีดไฟ×
ราคา 2 matchsticks
(คุณอาจเป็นตัวแทน×
เป็น*
ในการส่งออกโปรแกรมของคุณหากคุณต้องการในการสั่งซื้อเพื่อหลีกเลี่ยงการต้องใช้ตัวอักษรที่ไม่ใช่ ASCII. ในการเข้ารหัสส่วนใหญ่×
จะใช้เวลามากขึ้นไบต์กว่า*
และดังนั้นผมจึงคิดว่าโปรแกรมส่วนใหญ่จะต้องการที่จะใช้ประโยชน์จากงานที่คั่งค้างนี้ .)
คุณต้องเขียนโปรแกรมที่ใช้จำนวนเต็มที่ไม่ใช่ค่าลบเป็นอินพุต (ผ่านวิธีการที่สมเหตุสมผล ) และสร้างนิพจน์ที่ประเมินเป็นจำนวนเต็มนั้นเป็นเอาต์พุต (อีกครั้งผ่านวิธีการที่สมเหตุสมผล) นอกจากนี้การแสดงออกจะต้องขับเคลื่อน: จะต้องมีอย่างน้อยหนึ่งผู้ประกอบการ+
, หรือ-
×
ในที่สุดนิพจน์ที่คุณส่งออกจะต้องเป็นค่าที่ถูกที่สุด (หรือเชื่อมโยงกับค่าที่ถูกที่สุด) ในแง่ของต้นทุนแท่งไม้ขีดไฟทั้งหมดในบรรดาเอาต์พุตทั้งหมดที่เป็นไปตามข้อกำหนด
ชี้แจง
- คุณสามารถสร้างตัวเลขหลายหลักผ่านการแสดงผลหลายหลักในแถว (เช่น
11-1
ผลผลิตที่ถูกต้องในการผลิต10
) เพียงเพื่อให้แม่นยำอย่างสมบูรณ์จำนวนผลลัพธ์จะถูกตีความเป็นทศนิยม การเรียงต่อกันแบบนี้ไม่ได้เป็นการดำเนินการที่ทำงานกับผลลัพธ์ระดับกลาง เฉพาะตัวเลขตัวอักษรที่ปรากฏในการแสดงออกเดิม - สำหรับจุดประสงค์ของการท้าทายนี้
+
,,-
และ×
เป็นตัวดำเนินการมัด พวกเขาต้องการการโต้แย้งทางด้านซ้ายและทางขวา คุณยังไม่ได้รับอนุญาตให้ใช้พวกเขาอยู่ในตำแหน่งที่คำนำหน้าเหมือนหรือ+5
-8
- คุณไม่มีวงเล็บ (หรือวิธีอื่นในการควบคุมลำดับความสำคัญ) ที่มีอยู่ นิพจน์ประเมินตามกฎลำดับความสำคัญเริ่มต้นตามปกติ (การคูณเกิดขึ้นก่อนจากนั้นการบวกและการลบจะถูกประเมินจากซ้ายไปขวา)
- คุณไม่มีสิทธิ์เข้าถึงตัวดำเนินการทางคณิตศาสตร์หรือค่าคงที่อื่นนอกเหนือจากที่ระบุไว้ข้างต้น "ความคิดด้านข้าง" มักจะเป็นที่ยอมรับในการแก้ปัญหาของ Puzzling แต่มันก็ไม่สมเหตุสมผลที่จะต้องใช้คอมพิวเตอร์ในการสร้างมันขึ้นมาเองและที่นี่ใน PPCG เราต้องการให้มันเป็นไปตามวัตถุประสงค์หรือไม่
- ใช้กฎโอเวอร์โฟลว์จำนวนเต็มตามปกติ: วิธีแก้ปัญหาของคุณจะต้องสามารถทำงานกับจำนวนเต็มขนาดใหญ่ตามอำเภอใจในภาษาของคุณ (หรืออาจจะเป็นจริง) ในรูปแบบสมมุติซึ่งจำนวนเต็มทั้งหมดถูก จำกัด โดยค่าเริ่มต้น แต่ถ้าโปรแกรมของคุณล้มเหลว ไม่รองรับจำนวนเต็มที่มีขนาดใหญ่ซึ่งไม่ได้ทำให้โซลูชันไม่ถูกต้อง
- หากคุณใช้ตัวเลขหรือตัวดำเนินการเดียวกันมากกว่าหนึ่งครั้งคุณจะต้องจ่ายค่าจับคู่ของมันทุกครั้งที่คุณใช้ (เพราะเห็นได้ชัดว่าคุณไม่สามารถนำมาใช้ซ้ำอีกครั้งในสถานที่สองแห่งบนโต๊ะ)
- ไม่มีการ จำกัด เวลา วิธีการแก้ปัญหาแบบบังคับกำลังเป็นที่ยอมรับ (แม้ว่าคุณจะมีวิธีการแก้ปัญหาที่เร็วกว่ากำลังดุร้าย แต่คุณสามารถโพสต์ได้แม้จะนานกว่านั้นดูวิธีเปรียบเทียบทางเลือกที่น่าสนใจอยู่เสมอ)
- แม้ว่าการเขียนคำอธิบายรหัสของคุณจะไม่จำเป็นแต่ก็น่าจะเป็นความคิดที่ดี การอ่านโค้ดกอล์ฟมักยากที่จะอ่าน (โดยเฉพาะกับคนที่ไม่คุ้นเคยกับภาษาที่เขียน) และอาจเป็นการยากที่จะประเมิน (และลงคะแนนให้) การแก้ปัญหาถ้าคุณไม่เข้าใจวิธีการทำงาน
เงื่อนไขชัยชนะ
ในฐานะที่เป็นความท้าทายของcode-golfคำตอบที่มีจำนวนไบต์น้อยกว่าจะถือว่าดีกว่า อย่างไรก็ตามตามปกติอย่าลังเลที่จะโพสต์คำตอบด้วยวิธีการที่แตกต่างกันหรือในภาษาที่เฉพาะเจาะจงแม้ว่าพวกเขาจะ verbose มากกว่าภาษาอื่น ๆ บางอย่าง; เป้าหมายของการเล่นกอล์ฟคือการดูว่าคุณสามารถเพิ่มประสิทธิภาพของโปรแกรมใดและการทำสิ่งต่าง ๆ ในลักษณะนี้ทำให้เรามีโปรแกรมที่เป็นไปได้ที่จะเพิ่มประสิทธิภาพ ดังนั้นอย่าท้อแท้หากมีคนส่งวิธีการแก้ปัญหาโดยใช้วิธีการที่แตกต่างกันโดยสิ้นเชิงหรือภาษาที่แตกต่างกันโดยสิ้นเชิงและได้รับคำตอบที่สั้นกว่ามาก มันอาจเป็นไปได้ว่าคำตอบของคุณนั้นได้รับการปรับปรุงให้ดีขึ้นและแสดงทักษะมากขึ้นและผู้ลงคะแนนใน PPCG มักจะชื่นชมสิ่งนั้น