import NonogramSolverPar (solveSequential, solveParallelComputeBlocks, solveParallelGenerateBlocks, solveParallelComputeGenerate, solveParallelIterativeSolve, solveFullyParallel)
import System.Environment (getArgs)

main :: IO ()
main = do
    putStrLn "Solving Nonogram Puzzle..."

    args <- getArgs
    case args of
        [mode, filePath] ->
            case mode of
                "--sequential" -> solveSequential filePath
                "--parallel-compute" -> solveParallelComputeBlocks filePath
                "--parallel-generate" -> solveParallelGenerateBlocks filePath
                "--parallel-compute-generate" -> solveParallelComputeGenerate filePath
                "--parallel-iterative-solve" -> solveParallelIterativeSolve filePath
                "--fully-parallel" -> solveFullyParallel filePath
                _ -> putStrLn "Invalid mode. Usage: ./nonogramSolver [--sequential | --parallel-compute | --parallel-generate | --parallel-compute-generate | --parallel-iterative-solve | --fully-parallel] <file-path>"
        _ -> putStrLn "Usage: ./nonogramSolver [--sequential | --parallel-compute | --parallel-generate | --parallel-compute-generate | --parallel-iterative-solve | --fully-parallel] <file-path>"

    putStrLn "Puzzle Solved!"
