"Row-Column Coordinates" 块中的一个字符

"Row-Column Coordinates" of a Character in a Block

这么大的集合中,能根据“行-列”坐标找到一个字符吗?

LLLLLLL.L.LL.L.LLLL.LLLLLLL.LLLLL.LLLLLL.LLLLLLL.L.LLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLL
        LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLL..LLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL
        LLLLLLLLL.LLLLLLLLLLLLLLLLL**.**LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL..LL.L.LLLLLLLLLLLLLLLLLLL.LLLL.

我们的目标是解决 Advent of Code Day 11 如果您知道或它可以帮助您理解问题。 这是涉及行列坐标的解题方法: 鉴于每行有 91 个字符(索引 0-90),并且这里有三行(0,1,2),“.”可以吗?在星号内被标识为第 2 行第 27 列(或任何组合)。目标是对照其左侧、右侧、顶部和底部的四个字符检查每个字符。也许有更好的方法,但是使用这个问题所涉及的方法,可以检查:

/* “。”行 [2] 列 [27] 反对:

rows[1]columns[27] above 
rows[3]columns[27] below, not shown, because the input is very long), 
rows[2]columns[26] left
rows[2]columns[28  right

*/

看看它们是“L”还是“.”那部分很简单,但它依赖于能够将每个字符识别为“行[行],列[列]”。

二维数组不起作用,因为每个字符都需要在行和列数组中。 92x91 字符块的当前方法(非常低效)是创建 92 个数组,每个数组包含 91 个字符,然后将这 92 个数组放在 char[][] 中。当通过 for 循环时,行将是 char[][] 中的 index/char[],并在其中使用另一个 for 循环,列将是 char[] 中的索引。可行,但如果您提出更好的方法或指出某个地方解释了更好的解决方案,那就太好了。谢谢!

二维数组在 3.8.5 小节中介绍过,但从那时起我们就没有对它们做过太多。二维数组具有诸如 int[][] 或 String[][] 之类的类型,带有两对方括号。二维数组的元素按行和列排列,二维数组的新运算符指定行数和列数。例如,

int[][] A;
A = new int[3][4];

这将创建一个二维 int 数组,其中 12 个元素排列成 3 行和 4 列。虽然我没有提到它,但二维数组有初始化器。例如,此语句创建下图所示的 3×4 数组:

int[][]  A  =  {  {  1,  0, 12, -1 },
                  {  7, -3,  2,  5 },
                  { -5, -2,  2, -9 }
               };

二维数组的数组初始值设定项包含 A 的行,以逗号分隔并括在大括号中。每一行依次是一个值列表,值以逗号分隔并括在大括号中。还有具有类似语法的二维数组文字,可以在任何地方使用,而不仅仅是在声明中。例如,

A  =  new int[][] {  {  1,  0, 12, -1 },
                     {  7, -3,  2,  5 },
                     { -5, -2,  2, -9 }
                  };

所有这些自然地扩展到三维、四维甚至更高维的数组,但它们在实践中并不经常使用。

7.5.1 二维数组的真相 但在我们走得更远之前,有一点惊喜。 Java其实没有二维数组。在真正的二维数组中,数组的所有元素都占据一块连续的内存,但在 Java 中并非如此。数组类型的语法是一个线索:对于任何类型 BaseType,我们应该能够形成类型 BaseType[],意思是“BaseType 的数组”。如果我们使用 int[] 作为基本类型,我们得到的类型是“int[][],意思是“int[] 的数组”或“int 的数组的数组。”事实上,就是这样。元素在 int[][] 类型的二维数组中是 int[] 类型的变量。请记住,int[] 类型的变量只能保存指向 int 数组的指针。因此,二维数组实际上是指针,其中每个指针可以引用一个一维数组。那些一维数组是二维数组的行。一张图片将有助于解释这一点。考虑上面定义的 3×4 数组 A。 从 http://math.hws.edu/javanotes/c7/s5.html#:~:text=A%202D%20array%20has%20a,and%20the%20number%20of%20columns.

逐字复制

(n.d)。 2020 年 12 月 29 日检索自 http://math.hws.edu/javanotes/c7/s5.html