RosettaCodeData/Task/Chinese-remainder-theorem/Ruby/chinese-remainder-theorem-1.rb
2016-12-05 22:15:40 +01:00

8 lines
290 B
Ruby

def chinese_remainder(mods, remainders)
max = mods.inject( :* )
series = remainders.zip( mods ).map{|r,m| r.step( max, m ).to_a }
series.inject( :& ).first #returns nil when empty
end
p chinese_remainder([3,5,7], [2,3,2]) #=> 23
p chinese_remainder([10,4,9], [11,22,19]) #=> nil