Nella mia precedente sfida , ho disegnato il primo diagramma principalmente a mano (con l'aiuto della modalità blocco visivo di Vim). Ma sicuramente ci deve essere un modo migliore ...
Dato un input di due dimensioni, una larghezza e un'altezza, emette una griglia esagonale con quelle dimensioni nell'arte ASCII.
Ecco il diagramma a cui si fa riferimento nell'introduzione (con modifiche minori), che dovrebbe essere l'output per l'input width=7, height=3
:
_____ _____ _____
/ \ / \ / \
_____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____
/ \ / \ / \ / \
/ -3,-1 \_____/ -1,-1 \_____/ 1,-1 \_____/ 3,-1 \
\ / \ / \ / \ /
\_____/ -2,0 \_____/ 0,0 \_____/ 2,0 \_____/
/ \ / \ / \ / \
/ -3,0 \_____/ -1,0 \_____/ 1,0 \_____/ 3,0 \
\ / \ / \ / \ /
\_____/ -2,1 \_____/ 0,1 \_____/ 2,1 \_____/
/ \ / \ / \ / \
/ -3,1 \_____/ -1,1 \_____/ 1,1 \_____/ 3,1 \
\ / \ / \ / \ /
\_____/ \_____/ \_____/ \_____/
Nota diverse cose:
La larghezza e l'altezza sono essenzialmente equivalenti a quanti esagoni ci sono per una data coordinata y e x rispettivamente. Questi saranno sempre numeri dispari.
Ogni esagono è rappresentato dall'arte ASCII
_____ / \ / \ \ / \_____/
ma i bordi sono "condivisi" tra esagoni vicini.
La virgola nelle coordinate è sempre esattamente due caratteri sotto il centro del bordo superiore. La coordinata x viene quindi posizionata direttamente prima della virgola e la coordinata y direttamente dopo.
Si può affermare che le coordinate non saranno mai troppo grandi in modo tale da sovrapporsi ai bordi dell'esagono.
L'input può essere considerato come una stringa separata da spazi bianchi / virgola, una matrice di numeri interi o due argomenti funzione / riga di comando. L'output deve essere una stringa singola (su STDOUT, come valore di ritorno, ecc.).
Poiché si tratta di code-golf , vincerà il codice più breve in byte.
La griglia sopra può essere utilizzata come test case. La width=199, height=199
griglia di dimensioni massime
è ovviamente poco pratica da includere qui, ma le prime righe e colonne dovrebbero apparire come le seguenti:
_____ ___
/ \ /
_____/-98,-99\_____/-96,
/ \ / \
/-99,-99\_____/-97,-99\___
\ / \ /
\_____/-98,-98\_____/-96,
/ \ / \
/-99,-98\_____/-97,-98\___
\ / \ /
\_____/-98,-97\_____/-96,
/ \ / \
/-99,-97\_____/-97,-97\___
\ / \ /