[Haskell-beginners] ODP: Re: any feedback on this solution

Marek Wawrzyczek mwawrzyczek at gmail.com
Sun Feb 8 11:11:18 UTC 2015




Wysłane z telefonu Samsung

-------- Oryginalna wiadomość --------
Od: Roelof Wobben <r.wobben at home.nl> 
Data: 07.02.2015  17:01  (GMT+01:00) 
Do: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners at haskell.org> 
Temat: Re: [Haskell-beginners] any feedback on this solution 
 
Oke, 

toDigitsRev was one of the steps of this exercise. but I can remove it. 

Roelof


Joel Williamson schreef op 7-2-2015 om 16:56:
Roelof,

It doesn't look like you ever call toDigitsRev. To         keep the solution clearer, you should remove any unneeded definitions.

Joel


On Sat, 7 Feb 2015 07:50 Kees Bleijenberg <K.Bleijenberg at lijbrandt.nl> wrote:
Roelof,

Say, you find after a few months a bug or a better algorithm for toDigits,
then you have to remember that sumDigits uses this algorithm (in a bit
different form) too. In this case the functions are so small that it is not
a problem.

If you apply toDigits to all elements of a list of int's and you get almost
the solution
apply toDigits to alle elements of [4,12,3] and you get           [[4],[1,2],[3]],
which is a small step to [4,1,2,3]

Kees

-----Oorspronkelijk bericht-----
Van: Beginners [mailto:beginners-bounces at haskell.org]           Namens Roelof Wobben
Verzonden: zaterdag 7 februari 2015 11:02
Aan: The Haskell-Beginners Mailing List - Discussion of           primarily
beginner-level topics related to Haskell
Onderwerp: Re: [Haskell-beginners] any feedback on this solution

Why,

They have opposite terms.

SumDigits takes a array and has a integer as output.
ToDigits takes a integer and puts out a array.

Roelof


Kees Bleijenberg schreef op 7-2-2015 om 10:56:
> Roelof,
>
> Maybe it's better to reuse toDigits in sumDigits.
>
> Kees
>
> -----Oorspronkelijk bericht-----
> Van: Beginners [mailto:beginners-bounces at haskell.org]           Namens Roelof
> Wobben
> Verzonden: zaterdag 7 februari 2015 10:37
> Aan: The Haskell-Beginners Mailing List - Discussion of           primarily
> beginner-level topics related to Haskell
> Onderwerp: [Haskell-beginners] any feedback on this solution
>
> Hello,
>
> I finally solved exercise 1 where I had to write a programm which
> checks if a creditcard number is valid.
>
> I solved it this way :
>
> toDigits :: Integer -> [Integer]
> toDigits n
> | n < 0 = []
> | n < 10 = [n]
> | otherwise = toDigits (n `div` 10) ++ [n `mod` 10]
>
> -- | convert a number to a reversed array where a negative number will
> be a empty array toDigitsRev :: Integer -> [Integer]           toDigitsRev 0 =
> [0] toDigitsRev n
> | n < 0 = []
> | n < 10 = [n]
> | otherwise = n `mod` 10 : toDigitsRev (n `div` 10)
>
> -- | Doubles every second number from the right.
> doubleEveryOther :: [Integer] -> [Integer]
> doubleEveryOther [] = []
> doubleEveryOther (x:[])     = [x]
> doubleEveryOther (x:(y:zs))
> | length (x:(y:zs)) `mod` 2 /= 0 = [x] ++ (y * 2) :           doubleEveryOther
zs
> | otherwise = [x *2]  ++ y : doubleEveryOther zs
>
>
> -- | sum all the digits of a array
> sumDigits :: [Integer] -> Integer
> sumDigits [] = 0
> sumDigits (x:zs)
> | x < 10 = x + sumDigits zs
> | otherwise = x `mod` 10 + x `div` 10 + sumDigits zs
>
>
> -- | validate a number by looking if a number can be divided by 10
> validate :: Integer -> Bool validate n =
> sumDigits(doubleEveryOther(toDigits(n))) `mod` 10 == 0
>
>
> -- | The main entry point.
> main :: IO ()
> main = do
> print $ validate 4012888888881881
>
> Any remarks about this solution.
>
> I know there are higher function solutions but that part           is not
> descrived in chapter 1 .
>
> Roelof
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2015.0.5646 / Virus Database: 4281/9071 - Release Date:
> 02/07/15
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>

_______________________________________________
Beginners mailing list
Beginners at haskell.org
http://www.haskell.org/mailman/listinfo/beginners


-----
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2015.0.5646 / Virus Database: 4281/9071 - Release Date: 02/07/15

_______________________________________________
Beginners mailing list
Beginners at haskell.org
http://www.haskell.org/mailman/listinfo/beginners


_______________________________________________
Beginners mailing list
Beginners at haskell.org
http://www.haskell.org/mailman/listinfo/beginners

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20150208/0aec4a99/attachment-0001.html>


More information about the Beginners mailing list