对于二维数组,我们将将第一行或最后一列中的元素定义为数组中最大的“J-括号”。例如,在J-括号中的以下数组元素中突出显示:
J-括号是从第一行的第一个元素开始,顺时针方向排列的。行和列中的元素不重复。因此,对于上述情况,即:
要获得下一个最大的J-括号,只需从数组中移除最大的J-括号,并取其余的最大J-括号:
以此类推,直到每个元素都在1J括号中。
数组中的J括号集合不一定是唯一的。事实上,如果矩阵是非平方的,那么每个矩阵都有一个具有相同J-括号集的孪生体。
这个孪生体有相反的维度,在方阵的情况下,它是自己的孪生体。
你的任务是接受一个二维正整数数组并输出它的J-孪生子。您可以采用任何标准格式的输入和输出,但输入格式应与输出相同。
这是密码-高尔夫,所以答案将以字节为单位得分,目标是更少的字节。
[[2]] -> [[2]]
[[1,2,3]] -> [[1],[2],[3]]
[[1,2,4,8],[9,3,6,7],[3,3,2,9]] -> [[1,2,4],[9,3,8],[3,6,7],[3,2,9]]
[[1,2,4],[9,3,8],[3,6,7],[3,2,9]] -> [[1,2,4,8],[9,3,6,7],[3,3,2,9]]
发布于 2022-03-30 17:33:13
ZL_Lṙ@ŒdŒḍ
一种一元链接,它接受列表的矩形列表,并将其J-括号-孪生作为列表列表。
ZL_Lṙ@ŒdŒḍ - Link: list of lists, A
Z - transpose A
L - length of that -> columnCount(A)
L - length of A -> rowCount(A)
_ - columnCount(A) subtract rowCount(A) = N
Œd - anti-diagonals of A
ṙ@ - rotate this list of anti-diagonals left by N
Œḍ - create a matrix with these anti-diagonals
发布于 2022-03-30 13:22:02
https://codegolf.stackexchange.com/questions/245748
复制相似问题