Zeichnen Sie die Konturen einer rechteckigen Erhebungsmatrix.
Aufgabe
Zwei Elemente xund ybefinden sich auf derselben Konturebene, wenn floor(x/10) == floor(y/10). Zum Beispiel 52und 58befinden sich auf derselben Konturebene, aber 58und 64nicht.
Das Zeichnen von Konturen wird wie folgt definiert: eErsetzen Sie jedes Element durch eine Zeichenfolge mit zwei Zeichen, die wie folgt ausgewählt wird:
- Das erste Zeichen ist,
" "wenn sich das Element daruntereauf derselben Konturebene befindet wieeoder wenn sich kein Element darunter befindet,eund"_"ansonsten - das zweite Zeichen ist ,
" "wenn das Element auf der rechten Seite dereauf der gleichen Konturebene ist wieeoder es ist kein Element auf der rechteneund"|"sonst
Die Elemente innerhalb der Zeilen werden zusammengefügt, dann werden die Zeilen mit Zeilenumbrüchen zusammengefügt.
Beispiel
Nehmen wir an, die Eingabe wird [[5,20],[3,6]]visualisiert als
5 20
3 6
Wir schauen uns zuerst an 5. Da 3sich auf derselben Konturebene wie befindet 5, ist das erste Zeichen " ". Da 20sich nicht auf derselben Konturebene wie befindet 5, ist das zweite Zeichen "|".
Nun schauen wir uns an 20. Da 6sich nicht auf derselben Konturebene wie befindet 20, ist das erste Zeichen "_". Da rechts von kein Element vorhanden ist 20, ist das zweite Zeichen " ".
Nun schauen wir uns an 3. Da es unten kein Element gibt, ist 3das erste Zeichen " ". Da 6sich auf derselben Konturebene wie befindet 3, ist das zweite Zeichen " ".
Nun schauen wir uns an 6. Da es unten kein Element gibt, ist 6das erste Zeichen " ". Da rechts von kein Element vorhanden ist 6, ist das zweite Zeichen " ".
Basierend auf diesen zwei Zeichenfolgen machen wir Ersatz, um zu bekommen [[" |","_ "],[" "," "]]. Wenn wir diese zusammenfügen, erhalten wir eine Ausgabe von
|_
Regeln
- Die Eingabematrix ist immer rechteckig und besteht aus positiven ganzen Zahlen.
- Nachgestellte Leerzeichen oder Zeilenumbrüche können beliebig sein (einschließlich 0) und müssen in keiner Weise konsistent sein.
- Sie müssen nicht denselben Algorithmus anwenden, solange Sie dieselben Ergebnisse erzielen.
- Ihr Programm oder Ihre Funktion gibt möglicherweise eine durch Zeilenumbrüche getrennte Zeichenfolge, eine Liste von Zeichenfolgen oder eine Entsprechung aus.
- Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
Testfälle
input
output
[[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]]
_ _
| |
|_ _|
[[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]]
|_|_|_|_|_|_|_|_|_
|_ |_ _|_ _|_ _
|_ |_ _ |_
|_ |_ _
|_
|_
|_
|_
|_
[[5,5,5,5,5,5,5,5,5,5,5],[5,10,10,10,10,10,10,10,10,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,25,30,25,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,10,10,10,10,10,10,10,10,5],[5,5,5,5,5,5,5,5,5,5,5]]
_ _ _ _ _ _ _ _ _
| |
| _ _ _ _ _ |
| | | |
| | _ | |
| | |_| | |
| | | |
| |_ _ _ _ _| |
| |
|_ _ _ _ _ _ _ _ _|
[[35,32,29,26,25,25,25,26,29,32,35],[32,28,25,22,20,20,20,22,25,28,32],[29,25,21,18,15,15,15,18,21,25,29],[26,22,18,14,11,10,11,14,18,22,26],[25,20,15,11,7,5,7,11,15,20,25],[25,20,15,10,5,0,5,10,15,20,25],[25,20,15,11,7,5,7,11,15,20,25],[26,22,18,14,11,10,11,14,18,22,26],[29,25,21,18,15,15,15,18,21,25,29],[32,28,25,22,20,20,20,22,25,28,32],[35,32,29,26,25,25,25,26,29,32,35]]
_| |_
_| _ _ _ _ _ |_
_| |_
| _ _ _ |
| | | |
| | | |
| |_ _ _| |
|_ _|
_ |_ _ _ _ _| _
|_ _|
| |