บทนำ
เรื่องสั้นเรื่องสั้น: ไม่กี่วันที่ผ่านมาฉันเริ่มถักถุงเท้าโดยไม่ได้ตั้งใจและโครงสร้างเชิงตรรกะที่น่ารักของรอยเย็บธรรมดาทำให้ฉันมีความคิด: ทำไมเราไม่เพียงแค่ถักถุงเท้า 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จะมีผลต่อจำนวนไบต์