Run Code
|
API
|
Code Wall
|
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
Square root
project euler 10, haskell
haskell_exam_demo
znajdywacz trojkatow prostokatnych
Haskell Fibonacci Numbers
Quicksort in Haskell
folder
Eerste programma
haskell_exam
pascal triangle