相同的代码在ruby中的windows和linux上产生不同的结果

时间:2010-12-24 16:23:49

标签: ruby

我刚刚开始红宝石。所以,想到尝试在线发布的一些问题。 (这里是problem on codechef)我写了下面这段代码:

def h(n)
    if n==0
        value = 0
    else
        c_n = $number[n-1].to_i
        value = ( h(n-1) * $A + c_n ) % $B
    end
    value
end

n, $A, $B, G = gets.scan(/\d+/).map! { |x| x.to_i }

(1..10**n).to_a.each {|x|
    $number = x.to_s.rjust(n, '0')
    if ( G == h(n) )
        puts $number
        break
    end
}

我在窗口上用输入值编译它:3 11 111 92

Windows上的输出符合预期:084 但是,在linux机器上它是:032

可能的原因是什么?在给定的代码片段中是否有任何可以产生差异的东西?

1 个答案:

答案 0 :(得分:0)

感谢Nakilon的评论。我得到了答案。

ruby 1.9中的

"string"[1] = "t" 但是在红宝石"string"[1] = 116

所以,在ruby 1.9中:

c_n = $number[n-1].to_i

需要为ruby 1.8更改为:

c_n = $number.split("")[n-1].to_i