Étant donné une matrice rectangulaire d'élévations, dessinez ses contours.
Tâche
Deux éléments x
et y
sont au même niveau de contour si floor(x/10) == floor(y/10)
. Par exemple, 52
et 58
sont sur le même niveau de contour, mais 58
et 64
ne sont pas.
L'acte de dessiner des contours est défini comme suit: Pour chaque élément e
, remplacez-le par une chaîne de deux caractères choisie comme suit:
- le premier caractère est
" "
si l'élément cie
- dessous est au même niveau de contour quee
s'il n'y a pas d'élément en dessouse
et"_"
sinon - le deuxième caractère est
" "
si l'élément à droite dee
est au même niveau de contour quee
s'il n'y a pas d'élément à droite dee
et"|"
autrement
Les éléments des lignes sont joints ensemble, puis les lignes sont jointes avec des retours à la ligne.
Exemple
Disons que l'entrée est [[5,20],[3,6]]
, visualisée comme
5 20
3 6
Nous regardons d'abord 5
. Puisque se 3
trouve au même niveau de contour que 5
, le premier caractère est " "
. Puisque 20
n'est pas au même niveau de contour que 5
, le deuxième caractère l'est "|"
.
Maintenant, nous regardons 20
. Puisque 6
n'est pas au même niveau de contour que 20
, le premier caractère l'est "_"
. Puisqu'il n'y a aucun élément à droite de 20
, le deuxième caractère est " "
.
Maintenant, nous regardons 3
. Puisqu'il n'y a aucun élément ci 3
- dessous , le premier caractère est " "
. Puisque 6
est au même niveau de contour que 3
, le deuxième caractère est " "
.
Maintenant, nous regardons 6
. Puisqu'il n'y a aucun élément ci 6
- dessous , le premier caractère est " "
. Puisqu'il n'y a aucun élément à droite de 6
, le deuxième caractère est " "
.
Sur la base de ces chaînes de deux caractères, nous effectuons des remplacements pour obtenir [[" |","_ "],[" "," "]]
. En les joignant ensemble, nous obtenons une sortie de
|_
Règles
- La matrice d'entrée sera toujours rectangulaire et composée d'entiers positifs.
- Les espaces de fin ou les sauts de ligne peuvent être de n'importe quelle quantité (y compris 0) et ne doivent en aucun cas être cohérents.
- Vous n'avez pas à suivre le même algorithme tant que vous produisez les mêmes résultats.
- Votre programme ou fonction peut générer une chaîne, une liste de chaînes séparées par des sauts de ligne ou l'équivalent.
- C'est le code-golf , donc le code le plus court en octets gagne.
Cas de test
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]]
_| |_
_| _ _ _ _ _ |_
_| |_
| _ _ _ |
| | | |
| | | |
| |_ _ _| |
|_ _|
_ |_ _ _ _ _| _
|_ _|
| |