バイナリ操作が必要なHackerRankの問題を解決しようとしていました。テストケースは非常に巨大な数値なので、文字列として扱う方が良いと思いました。Ruby to_sのバイナリ引数エラーへの変換
t=gets
def winner(pturn)
if a%2==0
puts "Richard\n"
else
puts "Louise\n"
end
end
while t != 0
turn=1
n=gets
(n2=n).to_s(2)
while n!=1
one="1"
zero="0"
if n2.count(1)>1
zero*=(n2.length - 2)
one.concat(zero)
n-=one.to_i(base=2)
else
n/=2
end
turn+=1
end
winner(turn)
t-=1
end
以下に示すように、引数エラー(引数の数が間違っています)が発生しました。
(n2=n).to_s(2)
私はto_s
を間違って使用していると思います。私は間違いを見ることができず、誰かにそれを指摘する必要があります。
私はto_sはargsを楽しまないと思います。 –
そのコードは何をすべきですか? – sawa
@MuhammadYawarAli: 'Integer#to_s'(あるいはもっと正確には、' Bignum#to_s'(http://ruby-doc.org/core/Bignum.html#method-i-to_s)と '' Fixnum#to_s'](http://ruby-doc.org/core/Fixnum.html#method-i-to_s))は、番号を出力するベースを指示するオプションの 'base'引数を受け取ります。デフォルト値は '10'です。 –