Imagine que uma grade retangular de |
caracteres represente as cordas esticadas de um tear ( a urdidura ) em que outros fios ( a trama ), que iremos representar como -
, podem ser tecidos.
Aqui está a urdidura não tecida de um tear 7 × 4:
|||||||
|||||||
|||||||
|||||||
Existem várias maneiras pelas quais a trama pode ser tecida na urdidura, sendo a mais simples a trama simples .
Na primeira linha de uma trama simples, a trama começa acima da primeira corda de urdidura, fica abaixo da segunda corda, depois acima da terceira corda, depois abaixo da quarta e assim por diante.
A segunda linha de trama é idêntica à primeira, mas deslocada para a direita por uma corda de distorção;
Em nosso tear 7 × 4, a trama simples é assim:
-|-|-|-
|-|-|-|
-|-|-|-
|-|-|-|
Podemos descrever a trama simples dizendo que a trama ultrapassa a dobra 1 vez e depois menos de 1 vez, e cada linha subseqüente é deslocada 1 corda para a direita.
Uma trama generalizada pode ser descrita fazendo a trama ultrapassar os tempos de urdidura v , depois os tempos u , com cada linha subsequente deslocada por s strings para a direita. (Todos os valores são inteiros, s pode ser 0 ou negativo, u e v devem não ser negativos.)
Um tear 7 × 4 com v = 1 , u = 2 , s = 2 , um tipo de tecido de sarja :
-||-||-
||-||-|
|-||-||
-||-||-
Desafio
Sua tarefa é escrever o programa mais curto (em bytes) que produz um padrão entrelaçado de barras e traços, dados v , u , s , a largura e altura do tear e o deslocamento inicial .
O deslocamento inicial é o número de strings que a primeira linha da trama é deslocada para a direita (0 nos exemplos acima). Cada linha subseqüente é deslocada por mais s strings.
Seu programa deve receber esses 6 números em um formato fácil de usar (stdin, uma chamada de função etc.) e gerar a grade de barras e retângulos entrelaçados para stdout. Você pode assumir que todas as entradas são válidas. (Todos os valores são números inteiros, a largura e a altura devem ser positivas, o deslocamento inicial pode ser qualquer coisa.)
Exemplos
largura = 5, altura = 4, deslocamento inicial = 0, v = 1, u = 3, s = -2:
-|||-
||-||
-|||-
||-||
largura = 5, altura = 4, deslocamento inicial = 3, v = 1, u = 3, s = -2:
|||-|
|-|||
|||-|
|-|||
largura = 5, altura = 4, deslocamento inicial = 1, v = 1, u = 1, s = 0:
|-|-|
|-|-|
|-|-|
|-|-|
largura = 5, altura = 4, deslocamento inicial = 0, v = 1, u = 0, s = 0:
-----
-----
-----
-----
Notas
- O padrão sempre começa com a trama sobre a urdidura no canto superior esquerdo da grade (a menos que seja inicialmente alterado).
- Todas as linhas da trama vêm da esquerda. Eles não espiral como este .
- u + v não é necessariamente um múltiplo da largura da grade.
- u e v podem não ser ambos 0