Piet เป็นภาษาการเขียนโปรแกรมที่น่าสนใจด้วยเหตุผลหลายประการ วันนี้เราจะเน้นไปที่เหตุผลหนึ่งข้อ: คำสั่งการหมุน คำสั่ง roll นั้นมาจาก PostScript และเป็นวิธีที่มีประสิทธิภาพในการจัดการกับ stack
คำสั่ง roll จะแสดงองค์ประกอบสองอันดับแรกของสแต็กและใช้เป็นพารามิเตอร์ เราจะเรียกค่าแรกโผล่และครั้งที่สองturns
depth
การหมุนไปยังความลึก n จะใช้องค์ประกอบสูงสุดของสแต็กทำให้เป็นองค์ประกอบที่ n ในสแต็กและย้ายองค์ประกอบแต่ละรายการที่อยู่ด้านบนขึ้นมา หากturns
เป็นลบจะกระทำในทิศทางตรงกันข้าม นั่นคือองค์ประกอบที่ n จะถูกย้ายไปด้านบนและองค์ประกอบอื่น ๆ จะถูกย้ายลง นี่เป็นabs(turns)
ครั้งซ้ำแล้วซ้ำอีก
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสแต็กและส่งคืนสแต็กนั้นหลังจากดำเนินการม้วน
กฎระเบียบ
- อินพุตและเอาต์พุตอาจอยู่ในรายการอาร์เรย์สตริงที่มีตัวคั่นผ่านในองค์ประกอบหนึ่งครั้งหรือรูปแบบอื่นที่สมเหตุสมผล เอาต์พุตจะต้องอยู่ในรูปแบบเดียวกับอินพุต
depth
จะไม่เป็นลบและจะไม่มากกว่าความยาวของสแต็ก- สแต็คอินพุตจะมีองค์ประกอบอย่างน้อยสององค์ประกอบเสมอ
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในแต่ละภาษาจะชนะ ดังนั้นฉันจะไม่รับคำตอบ
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
กรณีทดสอบ
in: out:
2
4
1 3
2 4
3 1
4 2
5 5
6 6
in: out:
-2
3
1 2
2 3
3 1
in: out:
-42
0
1 1
2 2
3 3
4 4
5 5