Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package takuzu;
- import java.util.Scanner;
- public class Takuzu {
- private int size;
- private final String [][] tabel;
- private String [] kol;
- private String[] rij;
- private int aantalNaastElkaar;
- private String teken;
- private int aantal ;
- private String puzzelString;
- public Takuzu(int size) {
- tabel = new String [size][size];
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < size; j++) {
- this.tabel[i][j]="null";
- }
- }
- }
- public String getCell(int row, int column){
- return this.tabel[row-1][column-1];
- }
- public String[] getColumn(int column){
- kol = new String [this.tabel.length];
- for (int i = 0; i < this.tabel.length ; i++) {
- kol[i]= this.tabel[i][column-1];
- }
- return kol;
- }
- public String[] getRow(int row){
- rij = new String [this.tabel.length];
- for (int i = 0; i < this.tabel.length ; i++) {
- rij[i]= this.tabel[row-1][i];
- }
- return rij;
- }
- public boolean isCompleted(){
- for (int i = 0; i < this.tabel.length; i++) {
- for (int j = 0; j < this.tabel.length; j++) {
- if (this.tabel[i][j].equalsIgnoreCase("null")){
- return false;
- }
- }
- }
- return true;
- }
- public boolean isEmpty(int row, int column){
- return this.tabel[row-1][column-1].equalsIgnoreCase("null");
- }
- public boolean setCell(int row, int column, String value){
- rij = new String [this.tabel.length];
- kol = new String [this.tabel.length];
- if (value.equalsIgnoreCase("0") || value.equalsIgnoreCase("1")){
- rij = this.getRow(row);// -1 wordt al in getRow gedaan
- kol = this.getColumn(column);// -1 wordt al in getcolumn gedaan
- // Vul de waarde in indeze tijdelijke arrays
- // De waarde zal pas ingevuld worden in de "this" na volgende controles
- rij[column-1]= value;
- kol[row-1]= value;
- // maakt het niet uit of er al een waarde staat op die plaats
- aantalNaastElkaar = 0; //omdat de eerste keer altijd gelijk is
- // Eerst kijken dat er nooit meer dan 2 gelijke tekens naast elkaar staan.
- teken = value;
- for (int i = 0; i < this.tabel.length; i++) {
- if (rij[i].equalsIgnoreCase(teken)) {
- aantalNaastElkaar ++;
- if (aantalNaastElkaar >2){
- return false;
- }
- } else {
- aantalNaastElkaar = 0;
- }
- }
- aantalNaastElkaar = 0; //omdat de eerste keer altijd gelijk is
- for (int i = 0; i < this.tabel.length; i++) {
- if (kol[i].equalsIgnoreCase(teken)) {
- aantalNaastElkaar ++;
- if (aantalNaastElkaar >2){
- return false;
- }
- } else {
- aantalNaastElkaar = 0;
- }
- }
- // Dan nakijken of er niet meer dan de helft van de rij of de kolom gevuld is met hetzelfde teken
- aantal =0;
- for (int i = 0; i < this.tabel.length; i++) {
- if (rij[i].equalsIgnoreCase("0")) {
- aantal++;
- if (aantal>(this.tabel.length/2)){
- return false;
- }
- }
- }
- aantal =0;
- for (int i = 0; i < this.tabel.length; i++) {
- if (rij[i].equalsIgnoreCase("1")) {
- aantal++;
- if (aantal>(this.tabel.length/2)){
- return false;
- }
- }
- }
- aantal =0;
- for (int i = 0; i < this.tabel.length; i++) {
- if (kol[i].equalsIgnoreCase("0")) {
- aantal++;
- if (aantal>(this.tabel.length/2)){
- return false;
- }
- }
- }
- aantal =0;
- for (int i = 0; i < this.tabel.length; i++) {
- if (kol[i].equalsIgnoreCase("1")) {
- aantal++;
- if (aantal>(this.tabel.length/2)){
- return false;
- }
- }
- }
- } else{
- // er is geen 0 of 1 ingevuld
- return false;
- }
- this.tabel[row-1][column-1]= value;
- return true;
- }
- public String toString(){
- puzzelString = "╔";
- for (int i = 0; i < this.tabel.length; i++) {
- puzzelString= puzzelString + "═";
- }
- puzzelString= puzzelString + "╗" + System.lineSeparator();
- for (int i = 0; i <this.tabel.length; i++) {
- puzzelString= puzzelString + "║";
- for (int j = 0; j < this.tabel.length; j++) {
- if ("null".equalsIgnoreCase(this.tabel[i][j])){
- puzzelString= puzzelString + ".";
- } else {
- puzzelString= puzzelString + this.tabel[i][j];
- }
- }
- puzzelString= puzzelString + "║" + System.lineSeparator();
- }
- puzzelString= puzzelString + "╚" ;
- for (int i = 0; i < this.tabel.length; i++) {
- puzzelString = puzzelString + "═";
- }
- puzzelString = puzzelString + "╝";
- return puzzelString;
- }
- public static void main(String[] args) {
- int size;
- String positie;
- String sRow;
- String sCol;
- int iCol;
- int iRow;
- int plaatsKomma;
- String value;
- Scanner keyboard = new Scanner(System.in);
- System.out.println("Geef de grootte in:");
- size = Integer.parseInt(keyboard.nextLine());
- Takuzu dezeTakuzu = new Takuzu(size);
- while(!dezeTakuzu.isCompleted()){
- System.out.println("Kies een vakje (rij,kolom).");
- positie = keyboard.nextLine();
- String[] p = positie.split(",");
- // er zouden nooit meer dan 2 posities mogen zijn in deze array
- iRow = Integer.parseInt(p[0]);
- iCol = Integer.parseInt(p[1]);
- System.out.println("Kies een cijfer (0 of 1).");
- value = keyboard.nextLine();
- dezeTakuzu.setCell(iRow, iCol, value);
- System.out.println(dezeTakuzu.toString());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement