Я пытался решить проблему 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 развлекают любые аргументы. –
Что должен делать этот код? – 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'. –