让我们定义一个具有唯一数字的非空,未排序和有限矩阵,如下所示:
让我们定义4个矩阵移动为:
- ↑*(向上):向上移动一列
- ↓*(向下):向下移动一列
- →*(右):向右移动一行
- ←*(左):向左移动一行
星号(*)表示受移动影响的列/行(可以是0索引或1索引。由您决定。请在您的答案中说明哪一个)。
面临的挑战是,使用上述动作以升序对矩阵进行排序(左上角最低,右下角最高)。
例
输入:
可能的输出:或。(请注意,所有这些举动都可以对矩阵进行排序,因此两个答案都是正确的)↑0
↓0
输入:
可能的输出:→0
输入(测试用例示例):
可能的输出:↑0↑1←1↑2
输入:
可能的输出:
↑0↑2→0→2↑0→2↑1↑2←1
输入:
可能的输出:
↑2↑1←3→0←3↓0←0←2→3↑3↑4
输入:
输出:
或任何移动
输入:
输出:
笔记
- 可以有不同的正确输出(不必与测试用例相同或最短的用例相同)
- 您可以假设它将始终是订购矩阵的一种方式
- 边缘连接(例如pacman:v)
- 不会有超过9列或/和行的矩阵
- 假设矩阵仅包含正非零唯一整数
- 您可以使用数字以外的任意4个不同的值来表示移动(如果是这种情况,请在答案中说明)
- 列/行可以索引0或1
- 获胜标准代码高尔夫球
总是欢迎额外的测试用例
5
这是一个您可以自己解决这些难题的网站。
—
门把手
@Doorknob当我编写挑战Dx时,这将很有用。不管怎么说,还是要谢谢你!
—
路易斯·费利佩·德·耶稣·穆诺兹
我认为您在任何地方都不会说给出的解决方案必须尽可能短。那是故意的吗?例如
—
FryAmTheEggman
←0←0
,对于第二个示例,它是一个有效的解决方案,其中您给出的解决方案为→0
。如果是这样,我认为可能不会使用一半的移动选项。