Given a string of numbers confirm whether the total of all the individual even numbers are greater than the total of all the individual odd numbers. Always a string of numbers will be given.
If the sum of even numbers is greater than the odd numbers return:
Even is greater than Odd
If the sum of odd numbers is greater than the sum of even numbers return:
Odd is greater than Even
If the total of both even and odd numbers are identical return:
Even and Odd are the same
This challenge post comes from slater at CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!
Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!
Top comments (18)
Haskell
Since I'm not entirely sure what a string of numbers means, I just assumed the function gets a list of integers.
Could you explain what
add (evens, odd)
is (data type) and what does this piece do please?Sure! Let's start at
partition
, since we pass its output toadd
. Partition takes a predicate function and returns a tuple([Int], [Int])
with the items of the list for which the predicate is true in the first position and the items for which the predicate is false in the second position. In this case, in the first position we'll have all the even numbers and in the second all the odd numbers, since we're usingeven
as predicate.Then
add
receives this tuple, which I destructure for convenience, and applies the functionsum
to both elements, which sums all the items in each list.And the function signature for
add
would look like this.Lastly,
answer
takes the output ofadd
and checks the conditions in the guards (the| <condition>
thing) and returns the string for the first condition that matches or the string afterotherwise
if none matches.Awesome, thanks for your answer! I didn't know the
add
function could take a tuple. Good to know!Elixir:
I read
graphmemes
instead ofgraphemes
, I should probably stop browsing the internet for today...Graph memes would be too... Edgy.
Sorry :)
Some JavaScript
Rust
Rather than keeping two sums, we can negate one of the options (I chose to negate the evens) and compare the sum to 0:
Elm
Tests
Golang
I assumed string of numbers was an array.
A Swift solution:
Outputs:
Went with accumulating by adding evens and subtracting odds so in a case where the list of values being summed up ends up greater than Int.max you don't get a runtime error...... not that these test cases are likely to total greater than 9223372036854775807.... haha
My solution in js
A Swift solution: