در ابتدا صورت سوال و نحوه پاسخگویی را دانلود کنید:
در بخش دیگر بد نیست پاروپوینت ارائه شده در این سیمینار را ببینید:
و از همه مهم تر به سراغ کدهای این پروژه را به صورت جداگانه ببینید و با فرمت hs دانلود کنید:
{-# OPTIONS_GHC -Wall #-}
module SAWARi where
-- Part one
-- Ex1
toDigits :: Integer -> [Integer]
toDigits x
| x > 0 = toDigits (div x 10) ++ [mod x 10]
| otherwise = []
toDigitsRev :: Integer -> [Integer]
toDigitsRev x
| x > 0 = reverse (toDigits x)
| otherwise = []
-- Ex2
doubleEveryOther :: [Integer] -> [Integer]
doubleEveryOther [] = []
doubleEveryOther (x:[]) =[x*2]
doubleEveryOther (x:[y]) = [x*2] ++ [y]
doubleEveryOther (x:y:xy) = [x*2] ++ [y] ++ doubleEveryOther xy
-- Ex3
sumDigits :: [Integer] -> Integer
sumDigits [] = 0
sumDigits (x:[]) = (mod x 10) + (div x 10)
sumDigits (x:xy) = ((mod x 10) + (div x 10)) + sumDigits xy
-- Ex4
validate :: Integer -> Bool
validate x = (mod (sumDigits (doubleEveryOther (toDigitsRev x))) 10) == 0
دانلود با فرمت hs:
در پایان از استادی عزیز درس طراحی و پیاده سازی زبان های برنامه سازی خانم طاهری فر تشکر میکنم که من را به انجام این پروژه و کسب این تجربه متفاوت ترغیب کردند.
علی سواری