Run Code
|
API
|
Code Wall
|
Users
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
credit card number validator
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
--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
ghc
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
Compilation time: 0.62 sec, absolute running time: 0.14 sec, cpu time: 0 sec, memory peak: 3 Mb, absolute service time: 0,77 sec
fork mode
|
history
|
discussion
[4,0,1,2,8,8,8,8,8,8,8,8,1,8,8,1] [4,0,1,4,8,16,8,16,8,16,8,16,1,16,8,2] 87 False