Skip to content
Snippets Groups Projects
Commit 0a67b288 authored by ik1g19's avatar ik1g19
Browse files

added challenge 2 test

parent 4598a6cb
No related branches found
No related tags found
No related merge requests found
import Challenges import Challenges
import Data.List
main :: IO () main :: IO ()
main = challenge1Test main = challenge2Test
exGrid1'1 = [ "HAGNIRTSH" , "SACAGETAK", "GCSTACKEL","MGHKMILKI","EKNLETGCN","TNIRTLETE","IRAAHCLSR","MAMROSAGD","GIZKDDNRG" ] exGrid1'1 = [ "HAGNIRTSH" , "SACAGETAK", "GCSTACKEL","MGHKMILKI","EKNLETGCN","TNIRTLETE","IRAAHCLSR","MAMROSAGD","GIZKDDNRG" ]
...@@ -19,23 +21,69 @@ exGrid1'3 = ["TEST","ASBD","GDFI","FDGS"] ...@@ -19,23 +21,69 @@ exGrid1'3 = ["TEST","ASBD","GDFI","FDGS"]
exWords1'3 = ["TEST"] exWords1'3 = ["TEST"]
exAns1'3 = [("TEST",Just((0,0),Forward))] exAns1'3 = [("TEST",Just((0,0),Forward))]
assert1 :: [(String,Maybe Placement)] -> [(String,Maybe Placement)] -> IO ()
assert1 result correct | result == correct = do putStrLn ("Testing:")
putStrLn (show correct) printGrid :: WordSearchGrid -> IO ()
putStrLn "Passed! Result:" printGrid [] = return ()
putStrLn (show result) printGrid (w:ws) = do putStrLn $ intersperse ' ' w
putStrLn "" printGrid ws
| otherwise = do putStrLn ("Testing:")
putStrLn (show correct) pPrintList :: Show a => [a] -> IO ()
putStrLn "Failed! Result:" pPrintList cs = do putStr "["
putStrLn (show result) ppl cs
putStrLn "" where
ppl (x:[]) = putStrLn $ " " ++ show x ++ "]\n"
ppl (x:y:[]) = putStrLn $ " " ++ show x ++ "," ++ show y ++ "]\n"
ppl (x:y:z:[]) = putStrLn $ " " ++ show x ++ "," ++ show y ++ "," ++ show z ++ "]\n"
ppl (x:y:z:xs) = do putStrLn $ " " ++ show x ++ "," ++ show y ++ "," ++ show z ++ ","
ppl $ xs
assert1 :: WordSearchGrid -> [ (String,Maybe Placement) ] -> [ (String,Maybe Placement) ] -> IO ()
assert1 grid result correct | result == correct = do putStrLn "Testing Grid:\n"
printGrid grid
putStrLn "\nExpected Result:"
pPrintList correct
putStrLn "Passed! Result:"
pPrintList result
| otherwise = do putStrLn "Testing Grid:\n"
printGrid grid
putStrLn "\nExpected Result:"
pPrintList correct
putStrLn "Failed! Result:"
pPrintList result
challenge1Test :: IO () challenge1Test :: IO ()
challenge1Test = do putStrLn "Challenge 1 Start Test" challenge1Test = do putStrLn "Challenge 1 Start Test"
putStrLn "=========================================" putStrLn "========================================="
assert1 (solveWordSearch exWords1'3 exGrid1'3) exAns1'3 assert1 exGrid1'1 (solveWordSearch exWords1'1 exGrid1'1) exAns1'1
assert1 (solveWordSearch exWords1'1 exGrid1'1) exAns1'1 assert1 exGrid1'2 (solveWordSearch exWords1'2 exGrid1'2) exAns1'2
assert1 (solveWordSearch exWords1'2 exGrid1'2) exAns1'2 putStrLn "========================================="
putStrLn "Challenge 1 End Test"
assert2 :: WordSearchGrid -> [ (String,Maybe Placement) ] -> IO ()
assert2 grid answers = do putStrLn "Checking Grid Contains all Given Words:\n"
printGrid grid
putStrLn "\nWords in Grid:"
pPrintList answers
putStrLn areWordsPresent
where
areWordsPresent = if foldl1 (||) $ map (\(_,x) -> x == Nothing) answers
then "Not all words present!"
else "All words are present!"
createAndSolve :: [ String ] -> Double -> IO (WordSearchGrid,[ (String,Maybe Placement) ])
createAndSolve words maxDensity = do g <- createWordSearch words maxDensity
let soln = solveWordSearch words g
return (g,soln)
challenge2Test :: IO ()
challenge2Test = do putStrLn "Challenge 2 Start Test"
putStrLn "========================================="
(g1,sol1) <- createAndSolve ["WORD","EXAMPLE","SEARCH"] 0.3
assert2 g1 sol1
putStrLn "=========================================" putStrLn "========================================="
putStrLn "Challenge 1 End Test" putStrLn "Challenge 2 End Test"
\ No newline at end of file \ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment