|文字の長方形のグリッドが、織機のピンと張ったストリングス(縦糸)を表し、他の糸(横糸)を表すと想像してください-。
7×4織機の不織布ワープは次のとおりです。
|||||||
|||||||
|||||||
|||||||
緯糸を経糸に織り込む方法はいくつかありますが、最も簡単なのは平織りです。
平織りの最初の行では、緯糸は最初のたて糸ストリングの上から始まり、2番目のストリングの下、3番目のストリングの上、4番目の下などに続きます。
2番目の横糸の行は最初の横糸の行と同じですが、1本の縦糸によって右にオフセットされているため、下から始まり、上に行く、というように続きます。
7×4織機では、平織りは次のようになります。
-|-|-|-
|-|-|-|
-|-|-|-
|-|-|-|
緯糸は経糸を1回、次に1回未満通過し、後続の各行は1ストリング右にシフトされると言うことで、平織りを説明できます。
一般化された織りは、緯糸を縦にv回、次にu回、それぞれの行を右にs文字列シフトすることで説明できます。(すべての値は整数であり、sは 0または負であってもよい、U及びVは非負でなければなりません。)
v = 1、u = 2、s = 2、ツイル織りのタイプの7×4織機:
-||-||-
||-||-|
|-||-||
-||-||-
チャレンジ
あなたの仕事は、v、u、s、織機の幅と高さ、および初期シフトを与えられたバーとダッシュの織りパターンを生成する最短のプログラム(バイト単位)を書くことです。
最初のシフトは、緯糸の最初の行は、右(上記の例では0)にシフトされた文字列の数です。後続の各行は、さらにs個の文字列だけシフトされます。
プログラムは、これらの6つの数値を使いやすい形式(stdin、関数呼び出しなど)で取得し、バーと長方形の編まれたグリッドをstdoutに出力する必要があります。すべての入力が有効であると想定できます。(すべての値は整数で、幅と高さは正である必要があります。初期シフトは何でもかまいません。)
例
幅= 5、高さ= 4、初期シフト= 0、v = 1、u = 3、s = -2:
-|||-
||-||
-|||-
||-||
幅= 5、高さ= 4、初期シフト= 3、v = 1、u = 3、s = -2:
|||-|
|-|||
|||-|
|-|||
幅= 5、高さ= 4、初期シフト= 1、v = 1、u = 1、s = 0:
|-|-|
|-|-|
|-|-|
|-|-|
幅= 5、高さ= 4、初期シフト= 0、v = 1、u = 0、s = 0:
-----
-----
-----
-----
ノート
- パターンは常に、グリッドの左上隅の縦糸上の横糸から始まります(最初にシフトされていない場合)。
- すべての横糸が左から入ります。彼らはこのようにらせん状ではありません。
- u + vは必ずしもグリッド幅の倍数ではありません。
- uとvの両方が0でない場合があります