The Name Game: Difference between revisions
Content added Content deleted
(add Haskell source) |
|||
Line 242: | Line 242: | ||
Fee-fi-mo-ilton |
Fee-fi-mo-ilton |
||
Milton! |
Milton! |
||
Steve, Steve, bo-bteve |
|||
Banana-fana fo-fteve |
|||
Fee-fi-mo-mteve |
|||
Steve! |
|||
</pre> |
|||
=={{header|Haskell}}== |
|||
<lang Haskell> |
|||
-- The Name Game, Ethan Riley, 22nd May 2018 |
|||
import Data.Char |
|||
isVowel :: Char -> Bool |
|||
isVowel c |
|||
| char == 'A' = True |
|||
| char == 'E' = True |
|||
| char == 'I' = True |
|||
| char == 'O' = True |
|||
| char == 'U' = True |
|||
| otherwise = False |
|||
where char = toUpper c |
|||
shorten :: String -> String |
|||
shorten name |
|||
| isVowel $ head name = map toLower name |
|||
| otherwise = map toLower $ tail name |
|||
theNameGame :: String -> String |
|||
theNameGame name = |
|||
name ++ ", " ++ name ++ ", bo-b" ++ shorten name ++ "\n" ++ |
|||
"Banana-fana fo-f" ++ shorten name ++ "\n" ++ |
|||
"Fee-fi-mo-m" ++ shorten name ++ "\n" ++ |
|||
name ++ "!\n" |
|||
main = do |
|||
mapM_ (putStrLn . theNameGame) ["Gary", "Earl", "Billy", "Felix", "Mike", "Steve"] |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
Gary, Gary, bo-bary |
|||
Banana-fana fo-fary |
|||
Fee-fi-mo-mary |
|||
Gary! |
|||
Earl, Earl, bo-bearl |
|||
Banana-fana fo-fearl |
|||
Fee-fi-mo-mearl |
|||
Earl! |
|||
Billy, Billy, bo-billy |
|||
Banana-fana fo-filly |
|||
Fee-fi-mo-milly |
|||
Billy! |
|||
Felix, Felix, bo-belix |
|||
Banana-fana fo-felix |
|||
Fee-fi-mo-melix |
|||
Felix! |
|||
Mike, Mike, bo-bike |
|||
Banana-fana fo-fike |
|||
Fee-fi-mo-mike |
|||
Mike! |
|||
Steve, Steve, bo-bteve |
Steve, Steve, bo-bteve |