How to check if a 3x3 grid is a valid Sudoku grid in Scala

1 Answer

0 votes
// Sudoku solution must satisfy all of the following rules:
// Each of the digits 1-9 must occur once in each row.
// Each of the digits 1-9 must occur once in each column.
// Each of the digits 1-9 must occur once in each 3x3 grid.

import scala.collection.mutable.HashSet

object SudokuValidator {
  def isValidSudoku3x3Grid(grid: Array[Array[Int]]): Boolean = {
    if (grid.length != 3 || grid(0).length != 3) {
      return false // Ensure it's a 3x3 grid
    }

    val seen = HashSet[Int]()
    for (row <- grid) {
      for (num <- row) {
        if (num < 1 || num > 9 || seen.contains(num)) {
          return false // Invalid if the number is out of range or repeated
        }
        seen.add(num)
      }
    }

    true // Valid if all numbers 1-9 appear exactly once
  }

  def main(args: Array[String]): Unit = {
    val grid = Array(
      Array(5, 3, 4),
      Array(6, 7, 2),
      Array(1, 9, 8)
    )

    if (isValidSudoku3x3Grid(grid)) {
      println("The grid is a valid Sudoku grid!")
    } else {
      println("The grid is NOT a valid Sudoku grid!")
    }
  }
}


 
/*
run:

The grid is a valid Sudoku grid!

*/

 



answered May 30, 2025 by avibootz

Related questions

...