h1

Summing it up

February 24, 2007

Today, I had a list of integers, and I wanted to sum it up. I guessed that I should write a script in Ruby, to make sure it would get done within 2 minutes. So I fired up my editor, and wrote the following script:

sum = 0 ;
$stdin.each do |line|
sum+=line.to_i
end
puts sum

Pretty straightforward. I’d rather had written the script in Haskell, but I figured I needed to get things done. This evening I tried the same thing in Haskell, but to I was surprised: it was even quicker and more straightforward than the Ruby version! Here it is:

main = interact $ show . sum . map read . lines

If you’d like more of these tiny tools, see Haskell Unix Tools.

5 comments

  1. Cool :)


  2. I you would seperate the numbers by something other than newlines (spaces for instance), this would be a more concise Ruby implementation:

    puts(gets.split(' ').inject {|x,y| x.to_i + y.to_i })

    If you have implemented the Symbol::to_proc method, the following would be even more elegant:

    puts(gets.split(' ').map(&:to_i).inject {|x,y|x+y})


  3. Nice!


  4. perl, mooi:

    $i += $_ while ();
    print $i;


  5. Damn, accidentally omitted code tags.



Leave a Comment