Представьте, что прямоугольная сетка |
символов представляет собой натянутые нити на ткацком станке ( основы ), вокруг которых могут быть сплетены другие нити ( уток ), которые мы представим как -
.
Вот нетканая основа ткацкого станка 7 × 4:
|||||||
|||||||
|||||||
|||||||
Существует несколько способов вплетения утка в основу, самым простым из которых является простое переплетение .
В первом ряду простого плетения уток начинается над первой строкой основы, идет под второй строкой, затем над третьей строкой, затем под четвертой и т. Д.
Вторая уточная строка идентична первой, но смещена вправо на одну строку основы, поэтому она начинается под, затем переходит и так далее.
На нашем ткацком станке 7 × 4 простое плетение выглядит так:
-|-|-|-
|-|-|-|
-|-|-|-
|-|-|-|
Мы можем описать простое плетение, сказав, что уток проходит основную часть 1 раз, затем менее 1 раза, и каждая последующая строка сдвигается на 1 строку вправо.
Обобщенное плетение можно описать, если уток будет проходить через основу v раз, затем под u раз, причем каждый последующий ряд сдвигается на s строк вправо. (Все значения являются целыми числами, s может быть 0 или отрицательным, u и v должны быть неотрицательными.)
Ткацкий станок 7 × 4 с v = 1 , u = 2 , s = 2 , тип переплетения твила :
-||-||-
||-||-|
|-||-||
-||-||-
Вызов
Ваша задача состоит в том, чтобы написать самую короткую программу (в байтах), которая создает тканый узор из полос и штрихов, заданных v , u , s , шириной и высотой ткацкого станка и начальным смещением .
Начальное смещение является числом строк , первая строка в утке смещаются вправо (0 в вышеприведенных примерах). Каждая последующая строка сдвигается на s больше строк.
Ваша программа должна взять эти 6 чисел в удобном для использования формате (стандартный ввод, вызов функции и т. Д.) И вывести сетку из полос и прямоугольников в стандартный вывод. Вы можете предположить, что все данные верны. (Все значения целые, ширина и высота должны быть положительными, начальный сдвиг может быть любым.)
Примеры
ширина = 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