12
绘制轮廓
给定高程的矩形矩阵,绘制其轮廓。 任务 如果,则两个元素x和y处于同一轮廓线级别floor(x/10) == floor(y/10)。例如,52和58处于相同的轮廓级别,但是58和64不在同一轮廓级别。 绘制轮廓的行为定义如下:对于每个元素e,将其替换为如下选择的两个字符的字符串: 第一个字符是" "下面的元素是否与下面的元素处于e相同的轮廓线级别,e或者下面没有任何元素e,"_"否则 第二个字符是," "如果右边的元素与该元素e处于相同的轮廓线级别,e或者右边没有元素e,"|"否则 将行中的元素连接在一起,然后用换行符将这些行连接在一起。 例 假设输入为[[5,20],[3,6]],可视为 5 20 3 6 我们先来看一下5。由于3处于与相同的轮廓水平5,因此第一个字符为" "。由于20与的轮廓级别不同5,因此第二个字符是"|"。 现在我们来看20。由于6轮廓线级别与相同20,因此第一个字符为"_"。由于的右边没有元素20,因此第二个字符是" "。 现在我们来看3。由于下面没有元素3,因此第一个字符为" "。由于6与处于相同的轮廓水平3,第二个字符是" "。 现在我们来看6。由于下面没有元素6,因此第一个字符为" "。由于的右边没有元素6,因此第二个字符是" "。 基于这些两个字符的字符串,我们进行替换以获得[[" |","_ "],[" "," "]]。将这些结合在一起,我们得到的输出 |_ 规则 输入矩阵将始终为矩形,并由正整数组成。 尾随空格或换行符可以为任意数量(包括0),并且不必以任何方式保持一致。 只要产生相同的结果,就不必遵循相同的算法。 您的程序或函数可能会输出以换行符分隔的字符串,字符串列表或等效字符串。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 测试用例 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]] …