Immagina che una griglia rettangolare di |caratteri rappresenti le corde tese su un telaio ( l'ordito ) su cui possono essere intessuti altri fili ( la trama ), che rappresenteremo come -.
Ecco l'ordito non tessuto di un telaio 7 × 4:
|||||||
|||||||
|||||||
|||||||
Esistono diversi modi in cui la trama può essere intessuta nell'ordito, la più semplice è la trama semplice .
Nella prima riga di una trama semplice la trama inizia sopra la prima stringa di ordito, passa sotto la seconda stringa, quindi sopra la terza stringa, quindi sotto la quarta e così via.
La seconda riga di trama è identica alla prima ma sfalsata a destra di una stringa di curvatura, quindi inizia sotto poi va oltre e così via.
Sul nostro telaio 7 × 4 la trama semplice si presenta così:
-|-|-|-
|-|-|-|
-|-|-|-
|-|-|-|
Possiamo descrivere la trama semplice dicendo che la trama supera 1 volta l'ordito , quindi meno di 1 volta, e ogni riga successiva viene spostata di 1 stringa verso destra.
Una trama generalizzata può essere descritta facendo in modo che la trama superi i tempi di curvatura v volte, quindi sotto i tempi u , con ogni riga successiva spostata dalle stringhe di s a destra. (Tutti i valori sono numeri interi, s può essere 0 o negativo, u e v devono essere non negativi.)
Un telaio 7 × 4 con v = 1 , u = 2 , s = 2 , un tipo di armatura a saia :
-||-||-
||-||-|
|-||-||
-||-||-
Sfida
Il tuo compito è quello di scrivere il programma più breve (in byte) che produca un modello di barre e trattini dato v , u , s , la larghezza e l'altezza del telaio e lo spostamento iniziale .
Lo spostamento iniziale è il numero di stringhe che la prima riga nella trama viene spostata verso destra (0 negli esempi sopra). Ogni riga successiva viene spostata di s più stringhe.
Il tuo programma dovrebbe prendere questi 6 numeri in un formato facile da usare (stdin, una chiamata di funzione, ecc.) E generare la griglia tessuta di barre e rettangoli su stdout. Si può presumere che tutti gli input siano validi. (Tutti i valori sono numeri interi, larghezza e altezza devono essere positivi, lo spostamento iniziale può essere qualsiasi cosa.)
Esempi
larghezza = 5, altezza = 4, spostamento iniziale = 0, v = 1, u = 3, s = -2:
-|||-
||-||
-|||-
||-||
larghezza = 5, altezza = 4, spostamento iniziale = 3, v = 1, u = 3, s = -2:
|||-|
|-|||
|||-|
|-|||
larghezza = 5, altezza = 4, spostamento iniziale = 1, v = 1, u = 1, s = 0:
|-|-|
|-|-|
|-|-|
|-|-|
larghezza = 5, altezza = 4, spostamento iniziale = 0, v = 1, u = 0, s = 0:
-----
-----
-----
-----
Appunti
- Il modello inizia sempre con la trama sopra l'ordito nell'angolo in alto a sinistra della griglia (a meno che non sia inizialmente spostata).
- Tutti i fili di trama arrivano da sinistra. Loro non lo fanno spirale come questo .
- u + v non è necessariamente un multiplo della larghezza della griglia.
- u e v potrebbero non essere entrambi 0