Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

java random number in 7*7 array without repeat

$
0
0
Hello! I want to generate a java random number in 7x7 array without repeat?
Please help!!!
Below are my codes, can't work, please help!!

import java.applet.*;
import java.awt.*;

public class randomGen extends Applet implements Runnable {
	protected int model[][];
	protected Button view[][];

	protected void createModel() {
		model = new int[7][7];

		
		for (int row = 0; row < 7; row++)
			for (int col = 0; col < 7; col++)
				model[row][col] = 0;

		
		model[0][0] = 1;

		model[1][0] = 3;

		model[2][1] = 2;
		
		model[3][4] = 6;

		model[4][6] = 7;
		
		model[5][1] = 5;
		
		model[6][6] = 4;
		
	}

	protected void createView() {
		setLayout(new GridLayout(7, 7));

		view = new Button[7][7];

	
		for (int row = 0; row < 7; row++)
			for (int col = 0; col < 7; col++) {
				view[row][col] = new Button();
				add(view[row][col]);
			}
	}

	protected void updateView() {
		for (int row = 0; row < 7; row++)
			for (int col = 0; col < 7; col++)
				if (model[row][col] != 0)
					view[row][col].setLabel(String.valueOf(model[row][col]));
				else
					view[row][col].setLabel("");
	}

	public void init() {
		createModel();
		createView();
		updateView();
	}

	protected boolean checkRow(int row, int num) {
		for (int col = 0; col < 7; col++)
			if (model[row][col] == num)
				return false;

		return true;
	}

	protected boolean checkCol(int col, int num) {
		for (int row = 0; row < 7; row++)
			if (model[row][col] == num)
				return false;

		return true;
	}

	protected boolean checkBox(int row, int col, int num) {
		row = (row / 3) * 3;
		col = (col / 3) * 3;

		for (int r = 0; r < 3; r++)
			for (int c = 0; c < 3; c++)
				if (model[row + r][col + c] == num)
					return false;

		return true;
	}

	public void start() {
		(new Thread(this)).start();
	}

	public void run() {
		try {

			Thread.sleep(1000);

			solve(0, 0);
		} catch (Exception e) {
		}
	}

	public void solve(int row, int col) throws Exception {
		
		if (row > 6)
			throw new Exception("Solution found");

		if (model[row][col] != 0)
			next(row, col);
		else {
			for (int num = 1; num < 8; num++) {
				if (checkRow(row, num) && checkCol(col, num)
						&& checkBox(row, col, num)) {
					model[row][col] = num;
					updateView();

					Thread.sleep(1000);

					next(row, col);
				}
			}

			model[row][col] = 0;
			updateView();
		}
	}

	public void next(int row, int col) throws Exception {
		if (col < 6)
			solve(row, col + 1);
		else
			solve(row + 1, 0);
	}
}


Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>