角化指的是调整文本字母之间的间距。例如,考虑用以下三种符号编写的单词Top:
##### ..... .....
..#.. ..... .....
..#.. ..##. .###.
..#.. .#..# .#..#
..#.. .#..# .#..#
..#.. ..##. .###.
..... ..... .#...
..... ..... .#...我们可以用圆点来填补字形之间的空白,然后用它来完成,但是这些缺口看起来太宽了。相反,我们将字形滑动到左边,使它们几乎接触到:
#####........
..#..........
..#..##..###.
..#.#..#.#..#
..#.#..#.#..#
..#..##..###.
.........#...
.........#...这看起来好多了!注意T的条是如何位于o的左边框顶部的。在这个挑战中,您的任务是为这些矩形字形实现一个简单的kerning程序。
考虑两个形状相同的.和#的矩形2D字符数组。在我们简单的kerning过程中,我们首先将数组并排放置,中间是.s的一列。然后,我们将右边数组中的每个#向左移动一步,直到左、右阵列的#s正交或对角相邻为止。在我们介绍相邻的#s之前,你的任务就是实现这个过程。
让我们举一个例子:
Inputs:
..###
#....
#....
..##.
...#.
...##
..###
....#
Process:
..###....#.
#........##
#.......###
..##......#
..###...#.
#.......##
#......###
..##.....#
..###..#.
#......##
#.....###
..##....#
..###.#.
#.....##
#....###
..##...#
..####.
#....##
#...###
..##..#在最后一个数组中,我们有新的相邻的#s对,所以第二到最后的数组是核化过程的结果。
为了简单起见,您只需要处理两个象形文字的角化。您的输入是两个矩形2D数组,格式如下:
.,1代表#。.#上的多行字符串。.#上的字符串数组。.#的二维数组。如果将输入作为单个字符串,则可以使用任何合理的分隔符。但是,分隔符应该位于这两个数组之间,这意味着不允许您接受已经成对的逐行输入。
输出是应用于这两个数组的kerning过程的结果,这是一个与输入格式相同的矩形2D数组。您可以添加或删除任何数量的.s的领导或尾随列,但输出必须是矩形的,并且具有与输入相同的高度。保证在第二输入的左边缘滑过第一输入的左边缘之前,kerning处理结束。
评分
每种编程语言中的最低字节计数获胜。适用标准的密码-高尔夫规则。
为了帮助复制粘贴,这些测试用例作为字符串列表给出.
["#"] ["#"] -> ["#.#"]
["#.","..",".#"] ["##","..","##"] -> ["#..##",".....",".#.##"]
["..#","#..","#.."] ["...","..#","###"] -> ["..#..","#...#","#.###"]
["###.","##..","#...","...."] ["....","...#","..#.",".#.."] -> ["###..","##..#","#..#.","..#.."]
["..##...","#......","#......"] [".....##",".....##",".#...#."] -> ["..##..##","#.....##","#.#...#."]
["...#.",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["...#..",".....#",".#....","......","....#."]
["..#..",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["..#..","....#","#....",".....","....#"]
["######","#.....","#.....","#.....","######"] ["......",".....#",".#...#",".....#","......"] -> ["######..","#......#","#..#...#","#......#","######.."]
["######","#.....","#.....","#.....","######"] ["......","......",".#....","......","......"] -> ["######","#.....","#.#...","#.....","######"]
["#...#","#..#.","#.#..","##...","#.#..","#..#.","#...#"] ["...#.","..#..",".#...",".#...",".#...","..#..","...#."] -> ["#...#..#","#..#..#.","#.#..#..","##...#..","#.#..#..","#..#..#.","#...#..#"]https://codegolf.stackexchange.com/questions/148643
复制相似问题