Run Code
|
API
|
Code Wall
|
Users
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
credit card number validator
--ghc 8.0.1 /opt/ghc/8.0.1/lib/ghc-8.0.0.20160127/ main = do print $ toDigits 4012888888881881; print $ doubleEveryOther [4,0,1,2,8,8,8,8,8,8,8,8,1,8,8,1]; print $ sumDigits [4,0,1,4,8,16,8,16,8,16,8,16,1,16,8,2]; print $ validate 4012888888881881; toDigitsRev :: Integer -> [Integer] toDigitsRev n | n <= 0 = [] | n < 10 = [n] | otherwise = rem n 10 : toDigitsRev (div n 10) toDigits :: Integer -> [Integer] toDigits = reverse . toDigitsRev doubleEveryOther :: [Integer] -> [Integer] doubleEveryOther = reverse . doubleRev . reverse doubleRev :: [Integer] -> [Integer] doubleRev (x:y:xs) = 2*x : y : doubleRev xs doubleRev [] = [] doubleRev (x:[]) = [2*x] sumDigits :: [Integer] -> Integer sumDigits (x:xs) | x > 10 = 1 + (rem x 10) + (sumDigits xs) | otherwise = x + (sumDigits xs) sumDigits [] = 0 validate :: Integer -> Bool validate x = if rem (sumDigits . doubleEveryOther . toDigits $ x) 10 == 0 then True else False
run
|
edit
|
history
|
help
0
Please
log in
to post a comment.
Square root
(⁄⁄>⁄▽⁄<⁄⁄)
divisibleBy a b
Haskell Prime Factorizer
New wall
mySqrt
Token
project euler 2, haskell
Eerste programma
Monoid and friends
Please log in to post a comment.