
I'm nitpicking here, but it can be improved a bit
doubleEveryOther :: [Integer] -> [Integer]
doubleEveryOther [] = []
doubleEveryOther [x] = [x]
doubleEveryOther (x:y:xs) = x : 2 * y : doubleEveryOther (xs)
2015-05-14 8:48 GMT+02:00 Nishant
This will double very second digit in list. To do from right, just reverse the list first and then apply doubleEverySecond and then reverse back.
doubleEveryOther :: [Integer] -> [Integer]
doubleEveryOther [] = [] doubleEveryOther (x : []) = [x] doubleEveryOther (x : y : []) = x : (2 * y) : [] doubleEveryOther (x:y:xs) = x : (2 * y) : doubleEveryOther (xs)
On Wed, May 13, 2015 at 10:22 PM, Roelof Wobben
wrote: Hello,
I try to make make the assignment of CIS194 where I must multiply every second item from the right by 2
So I thought this could be working :
-- | Convert a digit to a reversed list for example 123 becomes [3,2,1] revtoDigits :: Integer -> [Integer] revtoDigits number | number <= 0 = [] | number > 0 = number`mod` 10 : revtoDigits (number `div` 10)
-- | Convert a digit to a list for example 123 becomes [1,2,3] toDigits :: Integer -> [Integer] toDigits number | number <= 0 = [] | number > 0 = toDigitsAcc [] number
toDigitsAcc:: [Integer] -> Integer -> [Integer] toDigitsAcc acc number | number <= 0 = acc | number > 0 = toDigitsAcc ((number `mod` 10) : acc) (number `div` 10)
doubleEveryOther :: [Integer] -> [Integer] doubleEveryOther list = case (length list) `mod` 2 of 0 -> doubleEveryOther [] = [] doubleEveryOther (x:y:xs) = x*2 : y : xs (length list) `mod` 2 of 0 -> doubleEveryOther [] = [] doubleEveryOther (x:y:xs) = x : y*2 : xs
-- | The main entry point. main = print $ doubleEveryOther [1,2,3]
but apperantly you cannot have pattern matching after a case statement because I get a error on the = of a empty list
Roelof
--- Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware. http://www.avast.com
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-- Nishant
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
-- Jonathan Skårstedt Bergsgårdsgärdet 39 Lgh 1108 424 32 Göteborg Mobil: 073 - 76 20 20 7