読者です 読者をやめる 読者になる 読者になる

JUGGLING WITH ZEROS(CodeEval)

CHALLENGE DESCRIPTION

In this challenge you will be dealing with zero based numbers. A zero based number is set in
 the following form: "flag" "sequence of zeroes" "flag" "sequence of zeroes" etc. Separated by
 a single space.
00 0 0 00 00 0
Your goal is to convert these numbers to integers. In order to do that you need to perform 
the following steps: 
1. Convert a zero based number into a binary form using the following rules: a) flag "0" means 
that the following sequence of zeros should be appended to a binary string. b) flag "00" means
 that the following sequence of zeroes should be transformed into a sequence of ones and
 appended to a binary string.
00 0 0 00 00 0 --> 1001
2. Convert the obtained binary string into an integer.
1001 --> 9

INPUT SAMPLE

00 0 0 00 00 0
00 0
00 0 0 000 00 0000000 0 000
0 000000000 00 00

OUTPUT SAMPLE

9
1
9208
3

My Code

#!/usr/bin/env ruby -w

def juggling_with_zeros(args)
  res = ''
  args.each_slice(2) do |a, b|
    if a == '0'
      res << '0' * b.size
    else
      res << '1' * b.size
    end
  end
  res.to_i(2)
end

ARGF.each_line do |line|
  puts juggling_with_zeros(line.chomp.split)
end