Учитывая сетка из пХп квадратов, где каждый квадрат имеет идентификатор, первый (верхний левый) квадрат имеет идентификатор 0 (так 5x5 сетка есть идентификаторы 0-24), как показано ниже:TicTacToe - растворы генерации
00 01 02 03 04
05 06 07 08 09
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
мне нужно генерировать все диагональные решения длины Y. Таким образом, если Y равен 3, то некоторые из решений будет:
0,6,12
и
11,17,23
, но, очевидно, НЕ
3,9,15 (because the 15 does not follow on diagonally)
Любые идеи о том, как эти решения могут быть сгенерированы?
Это то, что у меня до сих пор (размер = 5, inARow = 3):
public ArrayList<int[]> getSolutions(int dimension, int inARow) {
ArrayList<int[]> solutions = new ArrayList<int[]>();
//create row solutions
for(int i=0; i<dimension*dimension; i = i+dimension) {
for(int j=i; j<=i+dimension - inARow; j++){
int[] row = new int[inARow];
int counter = 0;
for(int k=j; k<j+inARow; k++){
row[counter++] = k;
}
solutions.add(row);
}
}
//create column solutions
for(int i=0;i<dimension;i++){
for(int j=i; j<(dimension*dimension)-(dimension*inARow)+dimension;j=j+dimension){
int[] col = new int[inARow];
int counter = 0;
for(int k=j;k<j+(dimension*inARow);k=k+dimension){
col[counter++] = k;
}
solutions.add(col);
}
}
//create diagonals
for(int i=0; i<dimension*dimension; i++){
for(int j=i; j<i+(dimension * inARow); j = j+dimension+1){
System.out.println(j);
}
}
return solutions;
Это дает мне все диагональные решения, но и дает мне плохие, как 3,9,15 , У меня проблемы с устранением этих проблем.
Антидиагонали также являются решениями, так что 2,6,10 также будет решением, но если я получу нормальные диагонали, я, возможно, сделаю то же самое для антидиагоналей.
Каковы некоторые из ваших идей или вещей, которые вы пробовали? – AHungerArtist
Это, наверное, очень просто для нас, однако какой код/алгоритм вы написали? – Woot4Moo
Действительно ли решение 2, 6, 10? – emory