StickStack เป็นภาษาการเขียนโปรแกรมแบบกองซ้อนที่ง่ายมากโดยมีเพียงสองคำสั่งเท่านั้น:
|
ดันความยาวของสแต็กลงบนสแต็ก-
ดึงองค์ประกอบสองอันดับแรกจากสแต็กและผลักกลับความแตกต่าง (second topmost - topmost
)
รายละเอียดภาษา
- สแต็กว่างเปล่าเมื่อเริ่มต้นโปรแกรม
- คำแนะนำทั้งหมดจะดำเนินการตามลำดับจากซ้ายไปขวา
- หากมีจำนวนน้อยกว่า 2 หมายเลขในสแต็ก
-
คำแนะนำนั้นผิดกฎหมาย - ในตอนท้ายของการดำเนินการกองควรมีตรงหนึ่งหมายเลข
จำนวนเต็มใด ๆ สามารถสร้างได้โดยโปรแกรม StickStack ตัวอย่างเช่น:
|||--||-- generates the number 2 through the following stack states:
[]
[0]
[0, 1]
[0, 1, 2]
[0, -1]
[1]
[1, 1]
[1, 1, 2]
[1, -1]
[2]
ในการประเมินรหัส StickStack ของคุณคุณสามารถใช้ตัวประเมินออนไลน์ (CJam)นี้ (ขอบคุณสำหรับ @Martin สำหรับรหัส)
งาน
คุณควรเขียนโปรแกรมหรือฟังก์ชั่นที่ได้รับจำนวนเต็มเป็นอินพุตเอาต์พุตหรือส่งคืนสตริงที่แสดงถึงโปรแกรม StickStack ซึ่งส่งออกตัวเลขที่กำหนด
เกณฑ์การให้คะแนน
- คะแนนหลักของคุณคือความยาวทั้งหมดของโปรแกรม StickStackสำหรับกรณีทดสอบด้านล่าง คะแนนต่ำกว่าดีกว่า
- การส่งของคุณจะถูกต้องเฉพาะเมื่อคุณรันโปรแกรมของคุณในทุกกรณีทดสอบและนับคะแนนของคุณ
- คะแนนรองของคุณคือความยาวของโปรแกรมหรือฟังก์ชั่นการสร้างของคุณ
กรณีทดสอบการป้อนข้อมูล
(แต่ละหมายเลขเป็นกรณีทดสอบที่แตกต่างกัน)
-8607 -6615 -6439 -4596 -4195 -1285 -72 12 254 1331 3366 3956 5075 5518 5971 7184 7639 8630 9201 9730
โปรแกรมของคุณควรทำงานกับจำนวนเต็มใด ๆ (ซึ่งชนิดข้อมูลของคุณสามารถจัดการได้) ไม่เพียง แต่สำหรับกรณีทดสอบที่กำหนด โซลูชันสำหรับหมายเลขทดสอบไม่ควรฮาร์ดโค้ดในโปรแกรมของคุณ หากมีข้อสงสัยเกี่ยวกับการเข้ารหัสรหัสการทดสอบจะเปลี่ยนไป