บทนำ
เรื่องสั้นเรื่องสั้น: ไม่กี่วันที่ผ่านมาฉันเริ่มถักถุงเท้าโดยไม่ได้ตั้งใจและโครงสร้างเชิงตรรกะที่น่ารักของรอยเย็บธรรมดาทำให้ฉันมีความคิด: ทำไมเราไม่เพียงแค่ถักถุงเท้า ASCII?
อินพุต
การป้อนข้อมูลที่เป็นจำนวนเต็ม N [2,30]
ในช่วง
เอาท์พุต
ผลลัพธ์คือถุงเท้าแน่นอน
โครงสร้าง
เพราะเราจะใช้การเย็บธรรมดาเท่านั้นคุณจะใช้v
สำหรับการเย็บที่ลดลงและ>
สำหรับการเย็บที่ถูกต้อง ให้ฉันอธิบายโครงสร้างแบบเต็มด้วยตัวอย่างสำหรับN=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- บล็อกแรกคือส่วนบน มันมีความกว้าง
N
และความสูงN*1.5
- หลังจากนั้นส้นเท้าก็เริ่ม คุณลบหนึ่งรายการ
v
ต่อแถวจากด้านขวาจนกว่าคุณจะมีN/2
ความกว้าง จากนั้นคุณเพิ่มN/2
แถวที่มีความกว้างN/2
ด้านล่างเพื่อทำให้ถักได้ด้านล่าง โปรดทราบว่ามันให้จำนวนN/2 + 1
แถวที่มีความกว้างN/2
ส่วนแรก:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- ตอนนี้คนไข้เริ่มถักไหมพรม คุณเริ่มต้นด้วยแถวที่ลดลงแรกเติม
>
จนกว่าคุณจะมีความกว้างN
และเพิ่มอีกสอง ดำเนินการต่อกระบวนการนั้นรวมถึงแถวแรกที่มีN/2
ความกว้าง - เติมแถวด้านล่างลงในระดับนั้นและเพิ่ม
N*1.5
เวลา>
ลงไป - ให้ชิ้นส่วนด้านนอกตามที่เป็นอยู่และเพิ่มลงในแถวด้านล่างส่วนที่หนึ่งและส่วนที่สองให้มากขึ้น
>'s
จนกว่าจะเสร็จ
ส่วนที่สอง:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
กฎระเบียบ
ลากเส้นขึ้นบรรทัดใหม่ก็โอเค
คุณสามารถเลือกระหว่างตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กV
แต่ต้องสอดคล้องกัน
นี่คือcode-golfดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์จะชนะ
กรณีทดสอบ
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
หรือV
แลกเปลี่ยนได้หรือไม่? ฉันจะสมมติช่วงเวลาที่v
เป็นเพียงคนเดียวที่ได้รับอนุญาต แต่การอนุญาตV
จะมีผลต่อจำนวนไบต์