ลองนึกภาพ|
ตัวละครที่เป็นรูปสี่เหลี่ยมผืนผ้ากริดเป็นตัวแทนของสตริงที่ตึงบนเครื่องทอผ้า ( ด้ายยืน ) ที่ด้ายอื่น ( ด้านซ้าย ) ซึ่งเราจะใช้แทน-
สามารถถักทอ
นี่คือวิปริตที่ไม่ทอของทอผ้าขนาด 7 × 4:
|||||||
|||||||
|||||||
|||||||
มีหลายวิธีที่ผ้าสามารถทอเป็นวิปริตเป็นที่ง่ายเป็นทอธรรมดา
ในแถวแรกของการสานธรรมดาผ้าเริ่มต้นขึ้นเหนือสตริงวาร์ปแรกไปต่ำกว่าสตริงที่สองจากนั้นอยู่เหนือสตริงที่สามจากนั้นต่ำกว่าที่สี่และอื่น ๆ
แถวผ้าที่สองนั้นเหมือนกันกับแถวแรก แต่ชดเชยไปทางขวาด้วยสตริงวาร์ปหนึ่งอันดังนั้นมันจึงเริ่มจากด้านล่างแล้วข้ามไป
บนเครื่องทอผ้า 7 × 4 ของเราผ้าทอธรรมดามีลักษณะดังนี้:
-|-|-|-
|-|-|-|
-|-|-|-
|-|-|-|
เราสามารถอธิบายการทอธรรมดาได้โดยบอกว่าผ้าพุ่งผ่านวิปริต1ครั้งจากนั้นต่ำกว่า1ครั้งและแต่ละแถวถัดมาจะเลื่อน1สตริงไปทางขวา
สานทั่วไปสามารถอธิบายได้โดยมีผ้าไปกว่าวิปริตวีครั้งจากนั้นภายใต้ยูครั้งกับแต่ละแถวต่อมาขยับsสตริงไปทางขวา (ค่าทั้งหมดเป็นจำนวนเต็มsอาจเป็น 0 หรือลบได้uและvต้องไม่เป็นลบ)
เครื่องทอผ้า 7 × 4 ที่มีv = 1 , u = 2 , s = 2 , เครื่องทอลายทแยงชนิดหนึ่ง:
-||-||-
||-||-|
|-||-||
-||-||-
ท้าทาย
งานของคุณคือการเขียนโปรแกรมที่สั้นที่สุด (ไบต์) ที่ก่อให้เกิดรูปแบบการทอของบาร์และรอยขีดข่วนให้โวลต์ , U , s , ความกว้างและความสูงของเครื่องทอผ้าและการเปลี่ยนแปลงเริ่มต้น
การเปลี่ยนแปลงครั้งแรกคือจำนวนของสตริงที่แถวแรกในผ้าถูกเลื่อนไปทางขวา (0 ในตัวอย่างด้านบน) แต่ละแถวที่ตามมาจะเลื่อนโดยsสตริงมากขึ้น
โปรแกรมของคุณควรใช้ตัวเลข 6 ตัวเหล่านี้ในรูปแบบที่ใช้งานง่าย (stdin, function call, ฯลฯ ) และออกตารางกริดทอของแถบและสี่เหลี่ยมเพื่อ stdout คุณอาจจะถือว่าข้อมูลทั้งหมดนั้นถูกต้อง (ค่าทั้งหมดเป็นจำนวนเต็มความกว้างและความสูงต้องเป็นค่าบวกการเลื่อนครั้งแรกอาจเป็นอะไรก็ได้)
ตัวอย่าง
width = 5, height = 4, shift shift เริ่มต้น = 0, v = 1, u = 3, s = -2:
-|||-
||-||
-|||-
||-||
width = 5, height = 4, shift shift เริ่มต้น = 3, v = 1, u = 3, s = -2:
|||-|
|-|||
|||-|
|-|||
width = 5, height = 4, shift shift = 1, v = 1, u = 1, s = 0:
|-|-|
|-|-|
|-|-|
|-|-|
width = 5, height = 4, shift shift เริ่มต้น = 0, v = 1, u = 0, s = 0:
-----
-----
-----
-----