Skip to content

Instantly share code, notes, and snippets.

@mem-memov
Created September 18, 2019 16:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mem-memov/16d380b8ff9e16d11181cee5aec9b188 to your computer and use it in GitHub Desktop.
Save mem-memov/16d380b8ff9e16d11181cee5aec9b188 to your computer and use it in GitHub Desktop.
guess dog or cat
import System.Random
starman :: Int -> IO ()
starman n = do
let allWords = ["cat", "dog"]
index <- randomRIO(0, (length allWords) - 1)
let word = allWords !! index
turn word ['-' | x <- word] n
turn :: String -> String -> Int -> IO ()
turn word display n =
do if n==0
then putStrLn "You lose"
else if word==display
then putStrLn "You win!"
else mkguess word display n
mkguess :: String -> String -> Int -> IO ()
mkguess word display n =
do putStrLn (display ++ " " ++ take n (repeat '*'))
putStr " Enter your guess: "
q <- getLine
let (correct, display') = check word display (q!!0)
let n' = if correct then n else n-1
turn word display' n'
check :: String -> String -> Char -> (Bool, String)
check word display c
= (c `elem` word, [if x==c
then c
else y | (x,y) <- zip word display])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment