Tomasm21

Check whether 2D array is Latin square

Sep 28th, 2021
1,102
11 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. public class Check_Latin {
  3.    
  4.     public static boolean isSquare(int[][] a) {
  5.         int rows_num = a.length;
  6.         boolean sq = true;
  7.         for(int i = 0; i < rows_num; i++)
  8.             if(a[i].length != a.length)
  9.             {
  10.                 sq = false;
  11.                 break;
  12.             }
  13.         return sq;
  14.     }
  15.    
  16.     public static boolean is0RowElementsAscending(int[][] a) {
  17.         boolean asc = true;
  18.         int rowLength = a[0].length;
  19.        
  20.         for(int i = 0; i < rowLength-1; i++)
  21.             if(a[0][i] != a[0][i+1]-1)
  22.                 {
  23.                     asc = false;
  24.                     break;
  25.                 }
  26.         return asc;
  27.     }
  28.  
  29.     public static boolean doColumnsElementsNotRepeat(int[][] a) {
  30.         boolean notRepeat = true;
  31.         int colsLength = a.length;
  32.         int row0Length = a[0].length;
  33.        
  34.     outer:  for(int i = 0; i < row0Length; i++)
  35.             for(int k = 0; k < colsLength-1; k++)
  36.             for(int j = k; j < colsLength-1; j++)
  37.                 if(a[k][i] == a[j+1][i])
  38.                 {
  39.                     notRepeat = false;
  40.                     break outer;
  41.                 }
  42.         return notRepeat;
  43.     }
  44.    
  45.     public static boolean isLatin(int[][] a) {
  46.        
  47.         return (isSquare(a) && is0RowElementsAscending(a) && doColumnsElementsNotRepeat(a));
  48.     }
  49.    
  50.     public static void main(String[] args) {
  51.         //int[][] array_2D = {{1, 2, 3, 4},{3, 1, 4, 1},{4, 2, 3, 1},{2, 1, 3, 4}};
  52.         //int[][] array_2D = {{1, 2, 3, 4},{3, 1, 4, 1},{4, 3, 2, 1},{2, 1, 1, 2}};
  53.         //int[][] array_2D = {{1, 2, 3, 4},{2, 1, 4, 3},{3, 4, 1, 2},{4, 3, 2, 1}};
  54.         int[][] array_2D = {{1, 2, 3, 4},{2, 3, 4, 1},{3, 4, 1, 2},{4, 1, 2, 3}};
  55.         //int[][] array_2D = {{1, 2, 3, 4},{4, 3, 2, 1},{3, 1, 4, 2},{2, 4, 1, 3}};
  56.         System.out.println("We have 2D array:\n");
  57.         for(int i = 0; i < array_2D.length; i++)
  58.         {
  59.             for(int j = 0; j < array_2D[i].length; j++)
  60.                 System.out.printf("% 4d", array_2D[i][j]);
  61.             System.out.println();
  62.         }
  63.         System.out.println();
  64.         if(isSquare(array_2D))
  65.             System.out.println("The array is Square");
  66.         else System.out.println("The array is NOT Square");
  67.         System.out.println();
  68.         if(is0RowElementsAscending(array_2D))
  69.             System.out.println("First row elements ascend");
  70.         else System.out.println("First row elements do NOT ascend");
  71.         System.out.println();
  72.         if(doColumnsElementsNotRepeat(array_2D))
  73.             System.out.println("In each column elements differ");
  74.         else System.out.println("In some column elements repeat");
  75.         System.out.println();
  76.         if(isLatin(array_2D))
  77.             System.out.println("The array IS Latin square");
  78.         else System.out.println("The array is NOT Latin square");
  79.     }
  80.  
  81. }
  82.  
RAW Paste Data