Gegeben
- eine Matrix
a
von Zeichen ausu=" ╶╺╵└┕╹┖┗╴─╼┘┴┶┚┸┺╸╾━┙┵┷┛┹┻╷┌┍│├┝╿┞┡┐┬┮┤┼┾┦╀╄┑┭┯┥┽┿┩╃╇╻┎┏╽┟┢┃┠┣┒┰┲┧╁╆┨╂╊┓┱┳┪╅╈┫╉╋"
- die Koordinaten eines Submatrix wie
x
,y
,w
,h
(links, oben, Breite> 1, Höhe> 1) - eine Dicke
t
von 1 (wie in┌
) oder 2 (wie in┏
)
Rendern Sie einen inneren Rand für die Submatrix mit der angegebenen Dicke unter Berücksichtigung vorhandener Linien.
x=4;y=1;w=2;h=3;t=2;
a=[' ┌───┐',
'┌┼┐ │',
'│└┼──┘',
'└─┘ ']
// output
r=[' ┌───┐',
'┌┼┐ ┏┪',
'│└┼─╂┨',
'└─┘ ┗┛']
Beim Überschreiben eines Linienfragments sollte die neue Dicke größer sein als die alte Dicke und t
.
Es geht nicht um Eingabe Parsen oder die Kolmogorov - Komplexität von Unicode zu finden, so dass man davon ausgehen kann a
, u
, x
, y
, w
, h
, t
Sie als Variablen zur Verfügung steht. Sie können das Ergebnis auch in eine Variable r
einfügen, anstatt es zurückzugeben oder auszugeben, solange r
es vom selben Typ ist wie a
.
Wenn Ihre Sprache Sie zwingt, Code in Funktionen (C, Java, Haskell usw.) einzufügen, und Ihre Lösung aus einer einzigen Funktion besteht, können Sie die Funktionskopf- und -fußzeile weglassen.
Größerer Test:
x=4;y=1;w=24;h=4;t=1;
a=['┏┱─────┐ ┌┐ ┎──┲━┓',
'┠╂─────┘ ││ ┃ ┗━┛',
'┃┃ ││ ┃ ',
'┠╂──┲━━┓ ┏━━━━┓ ││ ┌╂┰┐ ',
'┃┃ ┗━━┩ ┃ ┃ └╆━┓ └╂┸┘ ',
'┃┃ │ ┃ ┃ ┃ ┃ ┃ ',
'┗┹─────┘ ┗━━━━┛ ┗━┛ ╹ ']
// output
r=['┏┱─────┐ ┌┐ ┎──┲━┓',
'┠╂──┬──┴─────────┼┼─────╂──╄━┛',
'┃┃ │ ││ ┃ │ ',
'┠╂──╆━━┓ ┏━━━━┓ ││ ┌╂┰┐│ ',
'┃┃ ┗━━╃──╂────╂─┴╆━┱──┴╂┸┴┘ ',
'┃┃ │ ┃ ┃ ┃ ┃ ┃ ',
'┗┹─────┘ ┗━━━━┛ ┗━┛ ╹ ']
0 <= x < x + w < width(a)
und0 <= y < y + h < height(a)
?Antworten:
JavaScript, 218 Bytes
a
sollte als Array von Array von char genommen werden.Code-Snippet anzeigen
quelle
(a,x,y,w,h,t,u)=>...
mitr=...
Python 3 ,
226201197 BytesProbieren Sie es online aus!
Ungolfed:
quelle
(p%3,p%9//3,p%27//9,p//27)[o]
→p//3**o%3
speichert eine Reihe von Bytes. Dannmax(…)*3**o for
→3**o*max(…)for
speichert noch einen. Und dann können Sie noch einen herausholen, indem Sie das einfügen3**
und herumschlurfen,P
um es zu indiziereno%5-1
, was ergibt:sum(o*max((i<n*A,j<m*B,y<j*B,x<i*A)[o%5-1]*t,p//o%3)for o in(1,3,9,27))
R=range
und es auf 201JavaScript (ES6), 174 Byte
Code-Snippet anzeigen
quelle