Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://www.haskell.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Re: any feedback on this solution (Norbert Melzer)
2. Re: any feedback on this solution (Roelof Wobben)
3. Re: any feedback on this solution (Norbert Melzer)
----------------------------------------------------------------------
Message: 1
Date: Sat, 7 Feb 2015 11:41:11 +0100
From: Norbert Melzer <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] any feedback on this solution
Message-ID:
<CA+bCVsv_Xou994h7OsfeixzC=FqB1+KwTgwvmg7S0T=qjrl...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
I'm sure you don't mean array here, but a list! The difference is crucial!
Am 07.02.2015 11:01 schrieb "Roelof Wobben" <[email protected]>:
> 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:[email protected]] 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
>> [email protected]
>> 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
>> [email protected]
>> http://www.haskell.org/mailman/listinfo/beginners
>>
>>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20150207/be863a4c/attachment-0001.html>
------------------------------
Message: 2
Date: Sat, 07 Feb 2015 11:59:36 +0100
From: Roelof Wobben <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] any feedback on this solution
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20150207/945890c6/attachment-0001.html>
------------------------------
Message: 3
Date: Sat, 7 Feb 2015 12:09:25 +0100
From: Norbert Melzer <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] any feedback on this solution
Message-ID:
<CA+bCVsudp4Y=o-24f+zipofhj5tbctppepijh2hjdxx8y-e...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Nope they don't! Lists and arrays are conceptionally very different!
An array is a fixed block of memory where the single elements are lined up
in order, you have constant time access here, but changing the size
requires you to completely reallocate the memory and copy old content over.
A list on the other hand side is dynamic sized, this is bought by a larger
memory footprint per element (pointer to the next one is added) and higher
time for random access.
Am 07.02.2015 11:59 schrieb "Roelof Wobben" <[email protected]>:
> You are right. Im was confusing it because several languages uses these
> words differencely.
>
> Roelof
>
>
>
> Norbert Melzer schreef op 7-2-2015 om 11:41:
>
> I'm sure you don't mean array here, but a list! The difference is crucial!
> Am 07.02.2015 11:01 schrieb "Roelof Wobben" <[email protected]>:
>
>> 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:[email protected]] 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
>>> [email protected]
>>> 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
>>> [email protected]
>>> http://www.haskell.org/mailman/listinfo/beginners
>>>
>>>
>> _______________________________________________
>> Beginners mailing list
>> [email protected]
>> http://www.haskell.org/mailman/listinfo/beginners
>>
>
>
> _______________________________________________
> Beginners mailing
> [email protected]http://www.haskell.org/mailman/listinfo/beginners
>
>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20150207/366f2ed3/attachment.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 80, Issue 13
*****************************************