Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.12 KB | None | 0 0
  1. class Board {
  2.   let grid : [[Int]] = [
  3.       [5, 3, 4,   6, 7, 8,   9, 1, 2],
  4.       [6, 7, 2,   1, 9, 5,   3, 4, 8],
  5.       [1, 9, 8,   3, 4, 2,   5, 6, 7],
  6.  
  7.       [8, 5, 9,   7, 6, 1,   4, 2, 3],
  8.       [4, 2, 6,   8, 5, 3,   7, 9, 1],
  9.       [7, 1, 3,   9, 2, 4,   8, 5, 6],
  10.  
  11.       [9, 6, 1,   5, 3, 7,   2, 8, 4],
  12.       [2, 8, 7,   4, 1, 9,   6, 3, 5],
  13.       [3, 4, 5,   2, 8, 6,   1, 7, 9],
  14.   ]
  15.  
  16.   // (0,0) (0,1) (0,2)
  17.   // (1,0) (1,1) (1,2)
  18.   // (2,0) (2,1) (2,2)
  19.  
  20.   func validateArray(_ array: [Int]) -> Bool {
  21.     var set = Set(array)
  22.     return set.count == 9
  23.   }
  24.  
  25.   func validateGridAt(_ row: Int, _ col: Int) -> Bool {
  26.     for i in 0...2 {
  27.       for j in 0...2 {
  28.         set.insert(grid[i + row][j + col])
  29.       }      
  30.     }
  31.     if set.count != 9 {
  32.       return false
  33.     }
  34.   }
  35.  
  36.   func validate() -> Bool {
  37.     for i in 0..<9 {
  38.      
  39.       // if !validateArray(grid[i]) {
  40.       //   return false
  41.       // }
  42.      
  43.       var set = Set<Int>()
  44.       for j in 0..<9 {
  45.         set.insert(grid[i][j])
  46.       }
  47.       if set.count != 9 {
  48.         return false
  49.       }
  50.     }
  51.    
  52.     for j in 0..<9 {
  53.       var set = Set<Int>()
  54.       for i in 0..<9 {
  55.         set.insert(grid[i][j])
  56.       }
  57.       if set.count != 9 {
  58.         return false
  59.       }
  60.     }
  61.    
  62.     // 0,0,3,3,6,6
  63.     // for i in stride(from: 0, to: 9, by: 3) {
  64.    
  65.     for k in [0, 3, 6] {
  66.       for l in 0..<2 {
  67.         if !validateGridAt(k, l) {
  68.           return false
  69.         }
  70.        
  71.       var set = Set<Int>()
  72.       for i in 0...2 {
  73.         for j in 0...2 {
  74.           set.insert(grid[i + (l * 3)][j + (k * 3)])
  75.         }      
  76.       }
  77.       if set.count != 9 {
  78.         return false
  79.       }
  80.     }
  81.    
  82.     for k in 0..<2 {
  83.       var set = Set<Int>()
  84.       for i in 0...2 {
  85.         for j in 0...2 {
  86.           set.insert(grid[i + (k * 3)][j])
  87.         }      
  88.       }
  89.       if set.count != 9 {
  90.         return false
  91.       }
  92.     }
  93.        
  94.     return true
  95.   }
  96. }
  97.  
  98. // for all i  for 0 a[0..j-1]
  99. // add them all to a set the count should be 9
  100. // i (0..2) , j (0,2)
  101.  
  102. let b = Board()
  103. print(b.validate())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement