In meiner vorherigen Herausforderung habe ich das erste Diagramm größtenteils von Hand gezeichnet (mithilfe des visuellen Blockmodus von vim). Aber es muss doch einen besseren Weg geben ...
Bei einer Eingabe von zwei Dimensionen, einer Breite und einer Höhe, wird in ASCII-Grafik ein hexagonales Raster mit diesen Dimensionen ausgegeben.
Hier ist das Diagramm, auf das im Intro verwiesen wird (mit geringfügigen Änderungen), das Ihre Ausgabe für die Eingabe sein sollte 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 \
\ / \ / \ / \ /
\_____/ \_____/ \_____/ \_____/
Beachten Sie einige Dinge:
Die Breite und Höhe entsprechen im Wesentlichen der Anzahl der Sechsecke für eine gegebene y- bzw. x-Koordinate. Dies sind immer ungerade Zahlen.
Jedes Sechseck wird durch die ASCII-Kunst dargestellt
_____ / \ / \ \ / \_____/
aber Grenzen werden zwischen benachbarten Sechsecken "geteilt".
Das Komma in den Koordinaten ist immer genau zwei Zeichen unterhalb der Mitte der Oberkante. Die x-Koordinate wird dann direkt vor dem Komma und die y-Koordinate direkt danach positioniert.
Sie können davon ausgehen, dass die Koordinaten niemals so groß werden, dass sie die Sechskantgrenzen überlappen.
Die Eingabe kann als durch Leerzeichen / Komma getrennte Zeichenfolge, als Array von Ganzzahlen oder als Argument für zwei Funktionen / Befehlszeilen erfolgen. Die Ausgabe muss eine einzelne Zeichenfolge sein (an STDOUT als Rückgabewert usw.).
Da es sich um Code-Golf , wird der kürzeste Code in Bytes gewinnen.
Das obige Raster kann als Testfall verwendet werden. Es width=199, height=199
ist offensichtlich unpraktisch, das Raster mit der maximalen Größe
hier einzuschließen, aber die ersten paar Zeilen und Spalten sollten wie folgt aussehen:
_____ ___
/ \ /
_____/-98,-99\_____/-96,
/ \ / \
/-99,-99\_____/-97,-99\___
\ / \ /
\_____/-98,-98\_____/-96,
/ \ / \
/-99,-98\_____/-97,-98\___
\ / \ /
\_____/-98,-97\_____/-96,
/ \ / \
/-99,-97\_____/-97,-97\___
\ / \ /