[英]Java: How to randomize an array list without duplicates
import java.util.Random;
public class Sudoku {
int[][] SquareNumbers = {
{ 4, 3, 5, 8, 7, 6, 1, 2, 9 }, { 8, 7, 6, 2, 1, 9, 3, 4, 5 }, { 2, 1, 9, 4, 3, 5, 7, 8, 6 },
{ 5, 2, 3, 6, 4, 7, 8, 9, 1 }, { 9, 8, 1, 5, 2, 3, 4, 6, 7 }, { 6, 4, 7, 9, 8, 1, 2, 5, 3 },
{ 7, 5, 4, 1, 6, 8, 9, 3, 2 }, { 3, 9, 2, 7, 5, 4, 6, 1, 8 }, { 1, 6, 8, 3, 9, 2, 5, 7, 4 } };
Random Digits = new Random(); // random numbers to exchange Rows
Random HiddenNumbers = new Random();
int Grid[][] = new int[9][9];
public int[][] Generator() {
for (int x = 0; x < Digits.nextInt(); x++) {
for (int da = 0; da < 3; da++) {
}
}
return SquareNumbers;
}
int[][] Hide() {
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
Grid[i][j] = SquareNumbers[i][j];
int Row, Columns, Concealer;
Concealer = 55 + Digits.nextInt(1);
for (int i = 0; i < Concealer; i++) {
Row = HiddenNumbers.nextInt(9);
Columns = HiddenNumbers.nextInt(9);
Grid[Row][Columns] = -1;
}
return Grid;
}
public int[][] getSquareNumbers() {
return SquareNumbers;
}
public void setSquareNumbers(int[][] SquareNumbers) {
this.SquareNumbers = SquareNumbers;
}
private static Sudoku instance = null;
protected Sudoku() {
// Exists only to defeat instantiation.
}
public static Sudoku getInstance() {
if (instance == null) {
instance = new Sudoku();
}
return instance;
}
}
Instead of a double array list, is there a way to randomize it so it works like a Sudoku game?有没有办法随机化它而不是双数组列表,使其像数独游戏一样工作? As in it has no duplicates within columns or rows and every three by three smaller grid uses a number once?
因为它在列或行内没有重复项,并且每三乘三较小的网格使用一个数字一次?
One method for generating random sudoku puzzles would be as follows:生成随机数独谜题的一种方法如下:
While these will look like different puzzles, they will in fact, all be isotropic latin squares (ie all equivalent since they can be reduced to the same puzzle by reordering rows/columns).虽然这些看起来像是不同的谜题,但实际上它们都是各向同性的拉丁方格(即所有等价的,因为它们可以通过重新排序行/列来减少到相同的谜题)。
If you want a more random solution, this may have already been answered here: https://stackoverflow.com/a/6964044/2471910如果你想要一个更随机的解决方案,这可能已经在这里回答: https : //stackoverflow.com/a/6964044/2471910
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.