module Main where import Data.List (unfoldr) data Nanpa = Ala | Wan | Tu | Luka instance Show Nanpa where show Ala = "ala" show Wan = "wan" show Tu = "tu" show Luka = "luka" nanpaTawaNimi :: Int -> [Nanpa] nanpaTawaNimi 0 = [Ala] nanpaTawaNimi x = (`unfoldr` x) $ \x -> case x of 0 -> Nothing x | x >= 5 -> Just (Luka, x - 5) | x >= 2 -> Just (Tu, x - 2) | x >= 1 -> Just (Wan, x - 1) | otherwise -> error "must be positive" main :: IO () main = mapM_ (putStrLn . foo) [0..255] where foo = unwords . map show . nanpaTawaNimi