From 720c1194f4ebf08583ebc326a1f204285511416f Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Sun, 16 Oct 2016 22:39:16 +0200 Subject: [PATCH] Exercise 7: scrabbleValueTemplate --- Lecture 02/Scrabble/Scrabble.hs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Lecture 02/Scrabble/Scrabble.hs b/Lecture 02/Scrabble/Scrabble.hs index e94aca3..2526426 100644 --- a/Lecture 02/Scrabble/Scrabble.hs +++ b/Lecture 02/Scrabble/Scrabble.hs @@ -69,4 +69,26 @@ bestWords (x:xs) where maxWordValue = bestScrabbleWordValue (x:xs) +type STemplate = String + +scrabbleValueTemplateAcc :: Int -> Int -> STemplate -> String -> Int +scrabbleValueTemplateAcc sum mult [] [] = sum * mult +scrabbleValueTemplateAcc sum mult (t:ts) (w:ws) + | t == '?' = scrabbleValueTemplateAcc (sum + charValue) mult ts ws + | t == 'D' = scrabbleValueTemplateAcc (sum + (charValue * 2)) mult ts ws + | t == 'T' = scrabbleValueTemplateAcc (sum + (charValue * 3)) mult ts ws + | t == '2' = scrabbleValueTemplateAcc (sum + charValue) (mult * 2) ts ws + | t == '3' = scrabbleValueTemplateAcc (sum + charValue) (mult * 3) ts ws + | otherwise = scrabbleValueTemplateAcc (sum + charValue) mult ts ws + where charValue = scrabbleValue w + +scrabbleValueTemplate :: STemplate -> String -> Int +scrabbleValueTemplate template word = scrabbleValueTemplateAcc 0 1 template word + + + + + + +