This commit is contained in:
15
app/src/main/java/sudoku/constraint/BlockConstraint.java
Normal file
15
app/src/main/java/sudoku/constraint/BlockConstraint.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package sudoku.constraint;
|
||||
|
||||
import sudoku.Bloc;
|
||||
import sudoku.Case;
|
||||
import sudoku.Sudoku;
|
||||
|
||||
public class BlockConstraint implements IConstraint{
|
||||
|
||||
@Override
|
||||
public boolean canBePlaced(final Sudoku s, int x, int y, int newSymbolIndex) {
|
||||
Bloc bloc = s.getCase(x, y).getBloc();
|
||||
return !bloc.getCases().contains(new Case(newSymbolIndex));
|
||||
}
|
||||
|
||||
}
|
||||
16
app/src/main/java/sudoku/constraint/ColumnConstraint.java
Normal file
16
app/src/main/java/sudoku/constraint/ColumnConstraint.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package sudoku.constraint;
|
||||
|
||||
import sudoku.Sudoku;
|
||||
|
||||
public class ColumnConstraint implements IConstraint {
|
||||
|
||||
@Override
|
||||
public boolean canBePlaced(final Sudoku s, int x, int y, int newSymbolIndex) {
|
||||
for (int i = 0; i < s.getSize(); i++) {
|
||||
if (s.getCase(x, newSymbolIndex).getSymboleIndex() == newSymbolIndex)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
22
app/src/main/java/sudoku/constraint/IConstraint.java
Normal file
22
app/src/main/java/sudoku/constraint/IConstraint.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package sudoku.constraint;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import sudoku.Sudoku;
|
||||
|
||||
public interface IConstraint {
|
||||
|
||||
boolean canBePlaced(final Sudoku s, int x, int y, int newSymbolIndex);
|
||||
|
||||
default List<Integer> getPossibleSymbols(final Sudoku s, int x, int y) {
|
||||
List<Integer> possibilities = new ArrayList<>();
|
||||
for (int i = 0; i < s.getSize(); i++) {
|
||||
if (canBePlaced(s, x, y, i)) {
|
||||
possibilities.add(i);
|
||||
}
|
||||
}
|
||||
return possibilities;
|
||||
}
|
||||
|
||||
}
|
||||
16
app/src/main/java/sudoku/constraint/LineConstraint.java
Normal file
16
app/src/main/java/sudoku/constraint/LineConstraint.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package sudoku.constraint;
|
||||
|
||||
import sudoku.Sudoku;
|
||||
|
||||
public class LineConstraint implements IConstraint {
|
||||
|
||||
@Override
|
||||
public boolean canBePlaced(final Sudoku s, int x, int y, int newSymbolIndex) {
|
||||
for (int i = 0; i < s.getSize(); i++) {
|
||||
if (s.getCase(newSymbolIndex, y).getSymboleIndex() == newSymbolIndex)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user