พื้นหลัง
Manufactoriaเป็นเกมเกี่ยวกับการเขียนโปรแกรม ผู้เล่นจะต้องใช้รูปแบบของภาษาโปรแกรมสองมิติเพื่อทำงานที่สมบูรณ์ หากคุณไม่เคยได้ยินมาก่อนวิธีที่ง่ายที่สุดในการเรียนรู้คือการลองเล่นเกมแรก ๆ
ท้าทาย
ความท้าทายของคุณคือการสร้างโปรแกรมที่ทดสอบความเป็นอันดับหนึ่งของตัวเลข
อินพุตจะเป็นชุดของเครื่องหมายสีน้ำเงิน N ในคิว ถ้า N เป็นค่าเฉพาะโปรแกรมของคุณควรยอมรับ (ย้ายหุ่นยนต์ไปจนจบ) ถ้า N เป็นคอมโพสิตโปรแกรมของคุณควรจะปฏิเสธมัน (วางไว้บนพื้นที่ใดที่หนึ่ง)
ตัวเลือกการส่ง
เนื่องจากนี่เป็นความท้าทายที่ซับซ้อนกว่าความท้าทายทั่วไปของ Manufactoria ฉันจึงตัดสินใจอนุญาตให้มีวิธีเพิ่มเติมในการส่งคำตอบของคุณ
วนิลา
ฉันได้สร้างระดับที่กำหนดเอง 13x13 เพื่อสร้างและทดสอบการส่ง ระดับการทดสอบที่กำหนดเองมีดังนี้
เกมดังกล่าวอนุญาตให้มีเพียง 8 กรณีทดสอบในระดับที่กำหนดเอง แต่การสร้างของคุณควรจะสามารถจัดการกับจำนวนธรรมชาติใด ๆ N ซึ่งถูก จำกัด โดยหน่วยความจำที่มีอยู่เท่านั้น สำหรับวัตถุประสงค์ในการให้ข้อมูลกรณีทดสอบที่มีให้ในระดับที่กำหนดเองมีดังนี้:
1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject
กริดที่ขยาย
ผู้ใช้บางคนอาจต้องการพื้นที่มากกว่าตาราง 13x13 นี่คือลิงค์ไปสู่ระดับที่กำหนดเองในเกม 15x15 ที่สร้างโดยการเปลี่ยนตัวเลขใน URL:
น่าเศร้าที่ระดับที่กำหนดเองที่ใหญ่กว่าไม่ทำงานเนื่องจากเซลล์เพิ่มเติมไม่สามารถเข้าถึงได้
Manufactoria Esolang
มีการดัดแปลงของ Manufactoria เป็นภาษาที่ใช้ ASCII หากคุณต้องการวิธีที่แตกต่างในการออกแบบ / ทดสอบการสร้างของคุณหรือถ้าคุณไม่สามารถแก้ปัญหาขั้นสุดท้ายของคุณลงบนกระดานเกมคุณสามารถใช้ esolang นี้ คุณสามารถหาข้อมูลเกี่ยวกับ esolang นี้ได้ที่นี่:
มีความแตกต่างเล็กน้อยระหว่าง esolang และเกมจริง ตัวอย่างเช่นการลำเลียงข้ามได้รับการจัดการแตกต่างกัน พยายามหลีกเลี่ยงการใช้ประโยชน์จากความแตกต่างเหล่านี้
วิธีที่เร็วกว่าในการทดสอบ
เกมดังกล่าวช้ามากเมื่อพูดถึงโปรแกรมที่ใช้เวลาหลายพันขั้นตอนในการดำเนินการ โซลูชันพิสูจน์แนวคิดของฉันใช้เวลา 28042 ขั้นตอนในการปฏิเสธ 15 แม้ในเกม 50x speedup ที่ใช้เวลานานเกินไป
ผมพบว่าเป็นประโยชน์อย่างนี้เว็บไซต์ เพียงคัดลอกวางลิงก์ไปยังคำตอบของคุณและคุณสามารถทดสอบคำตอบของคุณด้วยอินพุตเฉพาะ กระบวนการขั้นตอน 28042 ใช้เวลาน้อยกว่าหนึ่งวินาที
สิ่งหนึ่งที่ควรทราบคือมันมักจะพูดอะไรบางอย่างเช่น "ยอมรับไม่ถูกต้อง" แม้ว่าเครื่องของคุณจะทำงานอย่างถูกต้อง นี่เป็นเพราะหน้าเว็บรู้กรณีทดสอบเท่านั้น ตัวอย่างเช่นมันจะบอกว่าทางออกของฉัน "ยอมรับไม่ถูกต้อง" หมายเลข 3 แม้ว่าเครื่องของฉันจะถูกต้องจริง
วิธีชนะ
เกณฑ์การให้คะแนนคือจำนวนชิ้นส่วน (เซลล์ที่ใช้งาน) นี่คือรหัสกอล์ฟดังนั้นการส่งชิ้นส่วนที่น้อยที่สุดจะเป็นผู้ชนะ
สำหรับผู้ที่สนใจโซลูชันมาตรฐานของฉันมี 96 ชิ้นส่วนและเหมาะกับตาราง 13x13 การค้นหาอัลกอริทึมที่ดีกว่าอาจนำไปสู่การปรับปรุงที่ยิ่งใหญ่เนื่องจากฉันรู้ว่าฉันใช้อัลกอริธึมที่เหมาะสมที่สุด