Compare commits
2 Commits
a84a407c31
...
b90d94bf41
Author | SHA1 | Date | |
---|---|---|---|
b90d94bf41 | |||
096a49e0a8 |
BIN
bin/uebung06/Field.class
Normal file
BIN
bin/uebung06/Field.class
Normal file
Binary file not shown.
BIN
bin/uebung06/Sudoku.class
Normal file
BIN
bin/uebung06/Sudoku.class
Normal file
Binary file not shown.
BIN
bin/uebung06/SudokuApp.class
Normal file
BIN
bin/uebung06/SudokuApp.class
Normal file
Binary file not shown.
BIN
bin/uebung06/VALUE.class
Normal file
BIN
bin/uebung06/VALUE.class
Normal file
Binary file not shown.
87
src/uebung06/Field.java
Normal file
87
src/uebung06/Field.java
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
package uebung06;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class Field {
|
||||||
|
private Sudoku sudoku;
|
||||||
|
private int x;
|
||||||
|
private int y;
|
||||||
|
private VALUE value = null;
|
||||||
|
|
||||||
|
private List<Field> dependents;
|
||||||
|
private Set<VALUE> domain;
|
||||||
|
|
||||||
|
|
||||||
|
public Field(Sudoku sudoku, int x, int y) {
|
||||||
|
this.sudoku = sudoku;
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Sudoku getSudoku() {
|
||||||
|
return sudoku;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getx() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int gety() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VALUE getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(VALUE value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Field> getDependents() {
|
||||||
|
if (dependents == null) {
|
||||||
|
dependents = calculateDependents();
|
||||||
|
}
|
||||||
|
return dependents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<VALUE> getDomainSet() {
|
||||||
|
return domain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return value == null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
if (value != null) {
|
||||||
|
return value.toString();
|
||||||
|
} else {
|
||||||
|
return ".";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//TODO
|
||||||
|
private List<Field> calculateDependents() {
|
||||||
|
List<Field> rtn = new ArrayList<>();
|
||||||
|
|
||||||
|
//add all the ones in the same col
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
rtn.add(sudoku.getField(x, i));
|
||||||
|
}
|
||||||
|
|
||||||
|
// //add all the ones in the same row
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
rtn.add(sudoku.getField(i, y));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return rtn;
|
||||||
|
}
|
||||||
|
}
|
66
src/uebung06/Sudoku.java
Normal file
66
src/uebung06/Sudoku.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
package uebung06;
|
||||||
|
|
||||||
|
public class Sudoku {
|
||||||
|
private Field[][] board;
|
||||||
|
|
||||||
|
public Sudoku() {
|
||||||
|
board = new Field[9][9];
|
||||||
|
createEmptyboard();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Field getField(int x, int y){
|
||||||
|
return board[x][y];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setField(int x, int y, VALUE value){
|
||||||
|
board[x][y].setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createEmptyboard() {
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
for (int j = 0; j < 9 ; j++) {
|
||||||
|
board[i][j] = new Field(this, i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder str = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < board.length; i++) {
|
||||||
|
for (int j = 0; j < board.length; j++) {
|
||||||
|
str.append(board[i][j].toString() + " ");
|
||||||
|
|
||||||
|
if (j == 2 || j == 5) {
|
||||||
|
str.append("| ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
str.append("\n");
|
||||||
|
|
||||||
|
if (i == 2 || i ==5) {
|
||||||
|
str.append("------+-------+------\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return str.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initialize(int[] values) {
|
||||||
|
int c = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < board.length; i++) {
|
||||||
|
for (int j = 0; j < board.length; j++) {
|
||||||
|
board[i][j].setValue(VALUE.of(values[c]));
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean solve() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
28
src/uebung06/SudokuApp.java
Normal file
28
src/uebung06/SudokuApp.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package uebung06;
|
||||||
|
|
||||||
|
|
||||||
|
public class SudokuApp {
|
||||||
|
private static Sudoku sud;
|
||||||
|
public static void main(String[] args) {
|
||||||
|
sud = new Sudoku();
|
||||||
|
// sud1.setField(0, 0, VALUE.FOUR);
|
||||||
|
// sud1.setField(0, 1, VALUE.FIVE);
|
||||||
|
// sud1.setField(0, 6, VALUE.TWO);
|
||||||
|
// sud1.setField(0, 0, VALUE.FOUR);
|
||||||
|
// sud1.setField(0, 0, VALUE.FOUR);
|
||||||
|
// sud1.setField(0, 0, VALUE.FOUR);
|
||||||
|
|
||||||
|
sud.initialize(new int[]{
|
||||||
|
4, 5, 0, 0, 0, 0, 2, 0, 0,
|
||||||
|
6, 0, 0, 0, 2, 4, 8, 0, 0,
|
||||||
|
8, 0, 0, 0, 6, 1, 3, 0, 0,
|
||||||
|
0, 9, 0, 4, 0, 0, 0, 5, 0,
|
||||||
|
0, 1, 0, 2, 0, 8, 0, 7, 0,
|
||||||
|
0, 3, 0, 0, 0, 9, 0, 8, 0,
|
||||||
|
0, 0, 7, 1, 4, 0, 0, 0, 8,
|
||||||
|
0, 0, 2, 7, 9, 0, 0, 0, 6,
|
||||||
|
0, 0, 5, 0, 0, 0, 0, 2, 1});
|
||||||
|
|
||||||
|
System.out.println(sud.toString());
|
||||||
|
}
|
||||||
|
}
|
50
src/uebung06/VALUE.java
Normal file
50
src/uebung06/VALUE.java
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package uebung06;
|
||||||
|
|
||||||
|
public enum VALUE {
|
||||||
|
ZERO,
|
||||||
|
ONE,
|
||||||
|
TWO,
|
||||||
|
THREE,
|
||||||
|
FOUR,
|
||||||
|
FIVE,
|
||||||
|
SIX,
|
||||||
|
SEVEN,
|
||||||
|
EIGHT,
|
||||||
|
NINE;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
switch (this) {
|
||||||
|
case ONE: return "1";
|
||||||
|
case TWO: return "2";
|
||||||
|
case THREE: return "3";
|
||||||
|
case FOUR: return "4";
|
||||||
|
case FIVE: return "5";
|
||||||
|
case SIX: return "6";
|
||||||
|
case SEVEN: return "7";
|
||||||
|
case EIGHT: return "8";
|
||||||
|
case NINE: return "9";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VALUE of(int id) {
|
||||||
|
switch (id) {
|
||||||
|
// case 0: return null; handle via default
|
||||||
|
case 1: return ONE;
|
||||||
|
case 2: return TWO;
|
||||||
|
case 3: return THREE;
|
||||||
|
case 4: return FOUR;
|
||||||
|
case 5: return FIVE;
|
||||||
|
case 6: return SIX;
|
||||||
|
case 7: return SEVEN;
|
||||||
|
case 8: return EIGHT;
|
||||||
|
case 9: return NINE;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return ZERO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user