尝试根据坐在一个圆圈中的椅子编写拼图。运行时的程序应该遍历数组,首先删除第一个主席,然后删除第二个主席skipping
,删除第三个主席并继续,直到one chair
为止。
如果输入10,程序就有效,那么答案是4.当我输入20时,我得到21:in '-': nil can't be coerced into Fixnum (TypeError)
。
这是我丑陋的代码。
print 'Enter number of chairs? '
numchairs = gets.chomp.to_i
$arr = []
i=1
while i < numchairs+1 do
$arr.push(i)
i+=1
end
x=0
while $arr.count > 1 do
current=$arr[x]
first=$arr[0]
last=$arr[-1]
$arr.delete_at(x)
if (last - current) == 1
x=0
elsif (last - current) == 0
x=1
else
x+=1
end
end
print 'The survivor is sitting in chair '
puts $arr[0]
答案 0 :(得分:1)
因为在输入值大于10的情况下,您试图访问放置在数组范围之外的数组元素。例如,您正在获取此类数组的第3个元素:[2, 6, 10]
。此操作将nil
作为current
返回,因此last - current
表达式引发TypeError
例外。