Imagine que una cuadrícula rectangular de |caracteres representa las cuerdas tensas en un telar ( la urdimbre ) que otros hilos ( la trama ), que representaremos como -, se pueden entrelazar.
Aquí está la urdimbre no tejida de un telar de 7 × 4:
|||||||
|||||||
|||||||
|||||||
Hay varias formas en que la trama se puede tejer en la urdimbre, la más simple es la trama simple .
En la primera fila de un tejido plano, la trama comienza por encima de la primera cadena de urdimbre, va por debajo de la segunda cadena, luego por encima de la tercera cadena, luego por debajo de la cuarta, y así sucesivamente.
La segunda fila de trama es idéntica a la primera, pero desplazada a la derecha por una cadena de urdimbre, por lo que comienza debajo, luego pasa, y así sucesivamente.
En nuestro telar 7 × 4, el tejido liso se ve así:
-|-|-|-
|-|-|-|
-|-|-|-
|-|-|-|
Podemos describir el tejido liso diciendo que la trama pasa la urdimbre 1 vez, luego menos de 1 vez, y cada fila posterior se desplaza 1 cadena hacia la derecha.
Se puede describir un tejido generalizado haciendo que la trama pase por la urdimbre v veces, luego debajo de u veces, con cada fila posterior desplazada por s cadenas a la derecha. (Todos los valores son enteros, s puede ser 0 o negativo, u y v deben ser no negativos).
Un telar de 7 × 4 con v = 1 , u = 2 , s = 2 , un tipo de tejido de sarga :
-||-||-
||-||-|
|-||-||
-||-||-
Desafío
Su tarea es escribir el programa más corto (en bytes) que produce un patrón tejido de barras y guiones dados v , u , s , el ancho y la altura del telar y el desplazamiento inicial .
El cambio inicial es el número de cadenas que la primera fila de la trama se desplaza hacia la derecha (0 en los ejemplos anteriores). Cada fila posterior se desplaza por s más cadenas.
Su programa debe tomar estos 6 números en un formato fácil de usar (stdin, una llamada a función, etc.) y generar la cuadrícula tejida de barras y rectángulos en stdout. Puede suponer que todas las entradas son válidas. (Todos los valores son enteros, el ancho y la altura deben ser positivos, el desplazamiento inicial puede ser cualquier cosa).
Ejemplos
ancho = 5, altura = 4, desplazamiento inicial = 0, v = 1, u = 3, s = -2:
-|||-
||-||
-|||-
||-||
ancho = 5, altura = 4, desplazamiento inicial = 3, v = 1, u = 3, s = -2:
|||-|
|-|||
|||-|
|-|||
ancho = 5, altura = 4, desplazamiento inicial = 1, v = 1, u = 1, s = 0:
|-|-|
|-|-|
|-|-|
|-|-|
ancho = 5, altura = 4, desplazamiento inicial = 0, v = 1, u = 0, s = 0:
-----
-----
-----
-----
Notas
- El patrón siempre comienza con la trama sobre la urdimbre en la esquina superior izquierda de la cuadrícula (a menos que se cambie inicialmente).
- Todos los hilos de trama vienen desde la izquierda. No hacen espiral como este .
- u + v no es necesariamente un múltiplo del ancho de la cuadrícula.
- u y v pueden no ser ambos 0