Advertisement
franji

Untitled

Mar 30th, 2020
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.76 KB | None | 0 0
  1. package il.ac.tau.cs.franji;
  2.  
  3. import sun.reflect.generics.reflectiveObjects.NotImplementedException;
  4.  
  5. /**
  6.  * Created by talfranji on 30/03/2020.
  7.  */
  8. public class Main {
  9.     static final String game =
  10.             " _ _ 4  _ _ _  _ 5 7 " +
  11.                     " 2 _ _  _ _ _  8 _ _ " +
  12.                     " 3 9 _  5 _ _  _ _ 6" +
  13.  
  14.                     " _ 1 _  4 7 5  9 _ _" +
  15.                     " _ _ _  _ 3 _  _ _ _" +
  16.                     " _ _ 5  2 1 8  _ 3 _" +
  17.  
  18.                     " 7 _ _  _ _ 9  _ 4 8" +
  19.                     " _ _ 9  _ _ _  _ _ 3" +
  20.                     " 1 8 _  _ _ _  2 _ _";
  21.  
  22.     static final String gameTest =
  23.             "_ 2 3  4 5 6  7 8 9\n" +
  24.                     "_ 5 _  _ _ _  _ _ _\n" +
  25.                     "_ 6 _  _ _ _  _ _ _\n" +
  26.                     "\n" +
  27.                     "_ 3 _  _ _ _  _ _ _\n" +
  28.                     "_ 4 _  _ _ _  _ _ _\n" +
  29.                     "_ 7 _  _ _ _  _ _ _\n" +
  30.                     "\n" +
  31.                     "_ 8 _  _ _ _  2 3 4\n" +
  32.                     "_ 9 _  _ _ _  5 6 7\n" +
  33.                     "_ _ _  _ _ _  8 9 _\n";
  34.  
  35.     static int[][][] BoardFromInput(String game) {
  36.         int[][][] res = new int[9][][];
  37.         int x = 0;
  38.         int y = 0;
  39.         for(char ch :game.toCharArray()) {
  40.             int[] item = null;
  41.             if (Character.isDigit(ch)) {
  42.                 // constatnt cell
  43.                 item = new int[]{1, Character.getNumericValue(ch)};
  44.             } else if (ch == '_') {
  45.                 item = new int[]{0, -1};  // empty cell
  46.             } else {
  47.                 // not a digit and not empty cell.
  48.                 continue;
  49.             }
  50.  
  51.             if (res[y] == null) {
  52.                 res[y] = new int[9][];  // start new line
  53.             }
  54.             res[y][x] = item;
  55.             x += 1;
  56.             if (x >= 9) {
  57.                 y += 1;
  58.                 x = 0;
  59.             }
  60.             if (y >= 9) {
  61.                 break;  //exit even if mnore chars in string
  62.             }
  63.         }
  64.         return res;
  65.     }
  66.     static String repeat(String s, int n) {
  67.         String res = "";
  68.         for (int i = 0; i < n; i++) {
  69.             res += s;
  70.         }
  71.         return res;
  72.     }
  73.  
  74.     static void PrintBoard(int[][][] board) {
  75.         int y = -1; //line index
  76.         for (int[][] line : board) {
  77.             y += 1;
  78.             if (y % 3 == 0) {
  79.                 System.out.println(repeat("-",37));
  80.             }
  81.             int x = -1;
  82.             for (int[] item : line) {
  83.                 x += 1;
  84.                 if (x % 3 == 0) {
  85.                     System.out.print(" | ");
  86.                 }
  87.                 if (item[1] >= 0) {
  88.                     System.out.format("%2d ", item[1]);
  89.                 } else {
  90.                     System.out.print(" _ ");
  91.                 }
  92.             }
  93.             System.out.println("");  // end of line
  94.         }
  95.         System.out.println(repeat("=",37));
  96.     }
  97.  
  98.  
  99.     static boolean inLine(int n, int[][][] board, int line) {
  100.         throw new NotImplementedException();
  101.     }
  102.  
  103.     static boolean inCol(int n, int[][][] board, int col) {
  104.         throw new NotImplementedException();
  105.     }
  106.  
  107.     static boolean inSq(int n, int[][][] board, int line, int col) {
  108.         throw new NotImplementedException();
  109.     }
  110.  
  111.  
  112.     static void test() {
  113.         int[][][] board = BoardFromInput(gameTest);
  114.         assert (inLine(2, board, 0));
  115.         assert (!inLine(1, board, 0));
  116.         assert (inCol(2, board, 1));
  117.         assert (!inCol(1, board, 1));
  118.         assert (inSq(2, board, 8, 8));
  119.         assert (!inSq(1, board, 8, 8));
  120.     }
  121.  
  122.     public static void main(String[] args) {
  123.         int[][][] board = BoardFromInput(game);
  124.         PrintBoard(board);
  125.         test();
  126.     }
  127.  
  128.  
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement