import System.IO (hFlush, stdout) import Text.Printf (printf) data Status = Locked | Unlocked deriving (Enum, Show) submit :: Int -> IO Status submit n = do printf "%03d\n" n hFlush stdout s <- getLine return $ if s == "locked" then Locked else Unlocked loop :: Int -> IO () loop i = do s <- submit i case s of Locked -> loop $ i + 1 Unlocked -> return () main :: IO () main = loop 0