Exercise 1 and 2: formableBy and wordsFrom
This commit is contained in:
parent
8eb0326df5
commit
fe0781b614
22
Lecture 02/Scrabble/Scrabble.hs
Normal file
22
Lecture 02/Scrabble/Scrabble.hs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
module Scrabble where
|
||||||
|
|
||||||
|
import Words
|
||||||
|
import Data.List
|
||||||
|
|
||||||
|
type Hand = [Char]
|
||||||
|
|
||||||
|
formableBy :: String -> Hand -> Bool
|
||||||
|
formableBy [] _ = True
|
||||||
|
formableBy (x:xs) hand = let remainingHand = delete x hand in
|
||||||
|
elem x hand && formableBy xs remainingHand
|
||||||
|
|
||||||
|
wordsFrom :: Hand -> [String]
|
||||||
|
wordsFrom hand = wordsFromList hand allWords
|
||||||
|
|
||||||
|
wordsFromList :: Hand -> [String] -> [String]
|
||||||
|
wordsFromList hand [] = []
|
||||||
|
wordsFromList hand (x:[])
|
||||||
|
| formableBy x hand = [x]
|
||||||
|
| otherwise = []
|
||||||
|
wordsFromList hand (x:xs) = wordsFromList hand [x] ++ wordsFromList hand xs
|
||||||
|
|
39
Lecture 02/Scrabble/Words.hs
Normal file
39
Lecture 02/Scrabble/Words.hs
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user