试图实施更大规模的井字游戏
这个游戏可以有超过3行和3列
每当发现4个连续的模式(水平,垂直或交叉)
选手是赢家
我已经找到了水平和垂直匹配的实现方法
但是找不到一种方法来识别2d数组中某个字符的交叉模式
考虑下面的二维数组
`
char[][] char2d={
{'*','o','o','*'},
{'o','*','o','o'},
{'o','o','*','o'},
{'o','o','o','*'}
}
`
如何检查“*”字符在这个2d数组中是否有四个连续的交叉模式
您可以使用IntStream
检查对角线是否只有“*”
:
public static boolean checkDiagonals(char[][] arr) {
int dimension = arr.length;
return IntStream.range(0, dimension)
.allMatch(i -> arr[i][i] == '*')
|| IntStream.range(0, dimension)
.allMatch(i -> arr[i][dimension - i - 1] == '*');
}
另一个...
public static void main(String[] args) {
char[][] char2d={
{'*','o','o','*'},
{'o','*','o','o'},
{'o','o','*','o'},
{'o','o','o','*'}
};
System.out.println(hasCross(char2d, '*'));
}
public static boolean hasCross(char[][] board, char c) {
// Assumes a SQUARE board!
boolean crossA = true;
boolean crossB = true;
for(int col=0, rowA=0, rowB=(board.length-1); col<board.length; col++, rowA++, rowB--) {
if (board[rowA][col]!=c) {
crossA = false;
}
if (board[rowB][col]!=c) {
crossB = false;
}
}
return crossA || crossB;
}
如果给定的起始位置是长度s
充满字符c
的向下对角线(如图中所示,从左到右前进),则此函数返回true
。
public static void isFullDownDiagonal(char[][] board,
int startCol, int startRow, int s, char c) {
for (int i=0; i<s; i++) {
if (board[startRow+i][startCol+i] != c) return false;
// \_ change this sign to test up diagonal
}
return true;
}
只需做一点小改动,就可以测试向上的对角线。在NxN
板中,左上角和下角的(N-s1)x(N-s1)
区域中只能有对角线的起点。
因此,我想在一个泛型类列表中交叉匹配数据,其中需要检查名称与姓氏的匹配,如果存在匹配,则返回数据或返回布尔值。这是我想到的 这返回TRUE,因为我使用GETTER AND SETTER通过设置布尔值从lambda表达式返回布尔值。 所以我在寻找最简单的lambda表达式来实现这一点?请问外面有人吗。
我是编程新手,我有一个任务要求从一维数组创建二维数组。我想到了这一点(没有任何外部来源的帮助,因为这会剥夺学习经验)。它适用于我们教授的测试输入,我只是想知道这是一个丑陋/低效的解决方案。 测试输入:twoDArray([1,2,3,4,5],3)输出将是:[[1,2,3],[4,5]]
为什么上面的代码不起作用,我应该如何纠正?
在这里,我试图实现一个具有单个隐藏层的神经网络来分类两个训练示例。该网络利用sigmoid激活函数。 各层尺寸和重量如下: 我在反向传播中遇到了一个矩阵维数不正确的问题。此代码: 返回错误: 如何计算上一层的误差? 更新: 返回错误: 是否未正确设置矩阵尺寸?
我试着做一个Loto游戏,我必须生成一张随机的卡,在第一个collum数字从1-9,第二个10-19一直到90。这张牌的另一个规则是,每行的随机位置上只能有5个数字,这就是我遇到的麻烦。 我从这个开始在每个collum中添加数字: 然后在数组的每一行的一个数字位置上放5个数字我试过这样做: 第三个也一样。 输出: 0 18 0 0 46 0 61 72 88 0 18 0 31 0 55 0 0
我试图将一个2d数组中的特定元素添加到另一个数组中,添加的过程是在数组的第一行选择最小的元素,并将该元素添加到同一位置的另一个2d数组中,例如: 2 22 3 5 1 54 7 3 10 20 22 21 这里,第一行中的最小元素是2,所以应该在相同的位置将2添加到另一个2d数组中,对于第二行,1是最小元素,所以我们也将1添加到另一个2d数组中,第三行中的最小元素是3,最后一行,第四行,最小的元素