# Sample raid5 syndrome

def xor_byte(*bytes)
  bytes.inject(0) {|sum, arg|
    sum ^ arg[0]
  }.chr
end

def xor_block(*blocks)
  # Split blocks into arrays, zip them together, xor across them.
  blocks = blocks.map {|block| block.split(//) }
  blocks.shift.zip(*blocks).map {|bytes|
    xor_byte(*bytes)
  }.join
end