ในฐานะนักวิทยาศาสตร์คอมพิวเตอร์คุณอาจคุ้นเคยกับการทำรายการป๊อปและพุชพื้นฐาน เหล่านี้เป็นการดำเนินการอย่างง่ายที่แก้ไขรายการองค์ประกอบ อย่างไรก็ตามคุณเคยได้ยินเรื่องการปฏิบัติการล้มเหลวบ้างไหม? (เช่นเดียวกับflip- flop )? มันค่อนข้างง่าย รับตัวเลขnให้กลับองค์ประกอบnแรกของรายการ นี่คือตัวอย่าง:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a.flop(4)
[4, 3, 2, 1, 5, 6, 7, 8, 9, 10]
สิ่งดีๆเกี่ยวกับการดำเนินการล้มเหลวคือการที่คุณสามารถใช้มันทำสิ่งบางเย็นในรายการเช่นการเรียงลำดับมัน เราจะทำสิ่งที่คล้ายกับรองเท้าแตะ:
รับรายการจำนวนเต็ม "Neighbor it" กล่าวอีกนัยหนึ่งให้เรียงลำดับเพื่อให้องค์ประกอบที่ซ้ำกันปรากฏขึ้นอย่างต่อเนื่อง
สามารถทำได้ด้วย flops! ตัวอย่างเช่นใช้รายการต่อไปนี้:
>>> a = [3, 2, 1, 4, 3, 3, 2]
>>> a.flop(4)
[4, 1, 2, 3, 3, 3, 2]
>>> a.flop(3)
[2, 1, 4, 3, 3, 3, 2]
>>> a.flop(6)
[3, 3, 3, 4, 1, 2, 2]
สิ่งนี้นำเราไปสู่คำจำกัดความของความท้าทายในปัจจุบัน:
รับรายการจำนวนเต็มส่งออกชุดของไฟล์ใด ๆ ที่จะส่งผลให้รายการอยู่ในรูป
ใช้รายการสุดท้ายเป็นตัวอย่างคุณควรเอาท์พุท:
4
3
6
เพราะ flopping รายการด้วย 4 จากนั้น 3 โดย 6 แล้วจะส่งผลให้รายการเพื่อนบ้าน โปรดทราบว่าคุณไม่จำเป็นต้องพิมพ์รายการย่อที่สั้นที่สุดที่เป็นไปได้ของรายการ หากคุณพิมพ์แล้ว:
4
4
4
3
1
1
6
2
2
แต่นี่จะเป็นผลลัพธ์ที่ถูกต้อง อย่างไรก็ตามคุณอาจไม่ส่งออกจำนวนมากเกินความยาวของรายการ นี่เป็นเพราะสำหรับรายการการa = [1, 2, 3]
โทรa.flop(4)
เป็นเรื่องไร้สาระ
นี่คือตัวอย่างบางส่วน:
#Input:
[2, 6, 0, 3, 1, 5, 5, 0, 5, 1]
#Output
[3, 7, 8, 6, 9]
#Input
[1, 2]
#Output
<any list of integers under 3, including an empty list>
#Input
[2, 6, 0, 2, 1, 4, 5, 1, 3, 2, 1, 5, 6, 4, 4, 1, 4, 6, 6, 0]
#Output
[3, 19, 17, 7, 2, 4, 11, 15, 2, 7, 13, 4, 14, 2]
#Input
[1, 1, 1, 1, 2, 2, 2, -1, 4]
#Output
[]
#Input
[4, 4, 8, 8, 15, 16, 16, 23, 23, 42, 42, 15]
#Output
[12, 7]
โปรดทราบว่าในแต่ละตัวอย่างเหล่านี้เอาต์พุตที่ให้เป็นเพียงเอาต์พุตที่ถูกต้องที่อาจเกิดขึ้นได้ ที่ผมกล่าวก่อน, ชุดใด ๆ ที่ flops เพื่อนบ้านรายการที่กำหนดเป็นเอาท์พุทที่ถูกต้อง คุณสามารถใช้สคริปต์ python นี้เพื่อตรวจสอบว่ารายการที่กำหนดของ flops นั้นอยู่ใกล้กับรายการอย่างถูกต้องหรือไม่
คุณสามารถนำเข้าและส่งออกในรูปแบบที่เหมาะสม ตัวอย่างเช่นฟังก์ชันอาร์กิวเมนต์ / ค่าส่งคืน STDIN / STDOUT การอ่าน / เขียนไฟล์เป็นต้นล้วน แต่ใช้ได้ทั้งหมด ตามปกตินี่คือcode-golfดังนั้นสร้างโปรแกรมที่สั้นที่สุดที่คุณสามารถทำได้และขอให้สนุก! :)