Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.31 KB | None | 0 0
  1. package takuzu;
  2.  
  3.  
  4. import java.util.Scanner;
  5.  
  6. public class Takuzu {
  7. private int size;
  8. private final String [][] tabel;
  9. private String [] kol;
  10. private String[] rij;
  11. private int aantalNaastElkaar;
  12. private String teken;
  13. private int aantal ;
  14. private String puzzelString;
  15.  
  16. public Takuzu(int size) {
  17. tabel = new String [size][size];
  18. for (int i = 0; i < size; i++) {
  19. for (int j = 0; j < size; j++) {
  20. this.tabel[i][j]="null";
  21. }
  22. }
  23. }
  24.  
  25.  
  26. public String getCell(int row, int column){
  27. return this.tabel[row-1][column-1];
  28. }
  29.  
  30. public String[] getColumn(int column){
  31. kol = new String [this.tabel.length];
  32. for (int i = 0; i < this.tabel.length ; i++) {
  33. kol[i]= this.tabel[i][column-1];
  34. }
  35. return kol;
  36. }
  37.  
  38. public String[] getRow(int row){
  39. rij = new String [this.tabel.length];
  40. for (int i = 0; i < this.tabel.length ; i++) {
  41. rij[i]= this.tabel[row-1][i];
  42. }
  43. return rij;
  44. }
  45.  
  46. public boolean isCompleted(){
  47. for (int i = 0; i < this.tabel.length; i++) {
  48. for (int j = 0; j < this.tabel.length; j++) {
  49. if (this.tabel[i][j].equalsIgnoreCase("null")){
  50. return false;
  51. }
  52. }
  53. }
  54. return true;
  55. }
  56.  
  57. public boolean isEmpty(int row, int column){
  58. return this.tabel[row-1][column-1].equalsIgnoreCase("null");
  59. }
  60.  
  61. public boolean setCell(int row, int column, String value){
  62. rij = new String [this.tabel.length];
  63. kol = new String [this.tabel.length];
  64. if (value.equalsIgnoreCase("0") || value.equalsIgnoreCase("1")){
  65. rij = this.getRow(row);// -1 wordt al in getRow gedaan
  66. kol = this.getColumn(column);// -1 wordt al in getcolumn gedaan
  67. // Vul de waarde in indeze tijdelijke arrays
  68. // De waarde zal pas ingevuld worden in de "this" na volgende controles
  69. rij[column-1]= value;
  70. kol[row-1]= value;
  71. // maakt het niet uit of er al een waarde staat op die plaats
  72. aantalNaastElkaar = 0; //omdat de eerste keer altijd gelijk is
  73. // Eerst kijken dat er nooit meer dan 2 gelijke tekens naast elkaar staan.
  74. teken = value;
  75. for (int i = 0; i < this.tabel.length; i++) {
  76. if (rij[i].equalsIgnoreCase(teken)) {
  77. aantalNaastElkaar ++;
  78. if (aantalNaastElkaar >2){
  79. return false;
  80. }
  81. } else {
  82. aantalNaastElkaar = 0;
  83. }
  84. }
  85. aantalNaastElkaar = 0; //omdat de eerste keer altijd gelijk is
  86. for (int i = 0; i < this.tabel.length; i++) {
  87. if (kol[i].equalsIgnoreCase(teken)) {
  88. aantalNaastElkaar ++;
  89. if (aantalNaastElkaar >2){
  90. return false;
  91. }
  92. } else {
  93. aantalNaastElkaar = 0;
  94. }
  95. }
  96. // Dan nakijken of er niet meer dan de helft van de rij of de kolom gevuld is met hetzelfde teken
  97. aantal =0;
  98. for (int i = 0; i < this.tabel.length; i++) {
  99. if (rij[i].equalsIgnoreCase("0")) {
  100. aantal++;
  101. if (aantal>(this.tabel.length/2)){
  102. return false;
  103. }
  104. }
  105. }
  106. aantal =0;
  107. for (int i = 0; i < this.tabel.length; i++) {
  108. if (rij[i].equalsIgnoreCase("1")) {
  109. aantal++;
  110. if (aantal>(this.tabel.length/2)){
  111. return false;
  112. }
  113. }
  114. }
  115. aantal =0;
  116. for (int i = 0; i < this.tabel.length; i++) {
  117. if (kol[i].equalsIgnoreCase("0")) {
  118. aantal++;
  119. if (aantal>(this.tabel.length/2)){
  120. return false;
  121. }
  122. }
  123. }
  124. aantal =0;
  125. for (int i = 0; i < this.tabel.length; i++) {
  126. if (kol[i].equalsIgnoreCase("1")) {
  127. aantal++;
  128. if (aantal>(this.tabel.length/2)){
  129. return false;
  130. }
  131. }
  132. }
  133. } else{
  134. // er is geen 0 of 1 ingevuld
  135. return false;
  136. }
  137. this.tabel[row-1][column-1]= value;
  138. return true;
  139. }
  140.  
  141. public String toString(){
  142. puzzelString = "╔";
  143. for (int i = 0; i < this.tabel.length; i++) {
  144. puzzelString= puzzelString + "═";
  145. }
  146. puzzelString= puzzelString + "╗" + System.lineSeparator();
  147.  
  148. for (int i = 0; i <this.tabel.length; i++) {
  149. puzzelString= puzzelString + "║";
  150. for (int j = 0; j < this.tabel.length; j++) {
  151. if ("null".equalsIgnoreCase(this.tabel[i][j])){
  152. puzzelString= puzzelString + ".";
  153. } else {
  154. puzzelString= puzzelString + this.tabel[i][j];
  155. }
  156. }
  157. puzzelString= puzzelString + "║" + System.lineSeparator();
  158. }
  159. puzzelString= puzzelString + "╚" ;
  160. for (int i = 0; i < this.tabel.length; i++) {
  161. puzzelString = puzzelString + "═";
  162. }
  163. puzzelString = puzzelString + "╝";
  164. return puzzelString;
  165. }
  166.  
  167.  
  168.  
  169. public static void main(String[] args) {
  170. int size;
  171. String positie;
  172. String sRow;
  173. String sCol;
  174. int iCol;
  175. int iRow;
  176. int plaatsKomma;
  177. String value;
  178. Scanner keyboard = new Scanner(System.in);
  179. System.out.println("Geef de grootte in:");
  180. size = Integer.parseInt(keyboard.nextLine());
  181. Takuzu dezeTakuzu = new Takuzu(size);
  182. while(!dezeTakuzu.isCompleted()){
  183. System.out.println("Kies een vakje (rij,kolom).");
  184. positie = keyboard.nextLine();
  185.  
  186. String[] p = positie.split(",");
  187. // er zouden nooit meer dan 2 posities mogen zijn in deze array
  188. iRow = Integer.parseInt(p[0]);
  189. iCol = Integer.parseInt(p[1]);
  190.  
  191. System.out.println("Kies een cijfer (0 of 1).");
  192. value = keyboard.nextLine();
  193. dezeTakuzu.setCell(iRow, iCol, value);
  194. System.out.println(dezeTakuzu.toString());
  195. }
  196. }
  197.  
  198.  
  199.  
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement