删除 ruby 中最小数字的函数
function to remove the smallest number in ruby
目前正在尝试创建一个删除最小数字的 ruby 函数,如果该最小数字重复,它应该只删除第一个最小数字。这是我试过的代码
def RemoveSmallest(numbers)
if numbers.count(numbers.min.uniq) > 1
numbers.delete_at(numbers.index numbers.min.uniq)
numbers
else
numbers.delete(numbers.min)
numbers
end
end
puts RemoveSmallest([2,2,4,5,6])
这是错误
remove_small.rb:3:in `RemoveSmallest': undefined method `uniq' for 2:Fixnum (NoMethodError)
from remove_small.rb:15:in `<main>'
我不确定为什么当我在上面应用 uniq
方法时代码传递错误
numbers.min
returns 一个数字,不是数组。您不能对其调用 uniq
,那不是数字方法。
您在第一个分支中的代码将仅成功删除没有 .uniq
的最小编号的第一个实例,因为 numbers.index
找到第一个实例。
事实上,整个if/else块都是多余的。第一个分支处理两种类型的输入,因此为许多 vs 一个定义特殊情况几乎没有意义:
def remove_smallest(array)
array.delete_at(array.index(array.min))
array
end
p remove_smallest([1, 2, 3, 4]) # [2, 3, 4]
p remove_smallest([4, 3, 1, 2, 1]) # [4, 3, 2, 1]
目前正在尝试创建一个删除最小数字的 ruby 函数,如果该最小数字重复,它应该只删除第一个最小数字。这是我试过的代码
def RemoveSmallest(numbers)
if numbers.count(numbers.min.uniq) > 1
numbers.delete_at(numbers.index numbers.min.uniq)
numbers
else
numbers.delete(numbers.min)
numbers
end
end
puts RemoveSmallest([2,2,4,5,6])
这是错误
remove_small.rb:3:in `RemoveSmallest': undefined method `uniq' for 2:Fixnum (NoMethodError)
from remove_small.rb:15:in `<main>'
我不确定为什么当我在上面应用 uniq
方法时代码传递错误
numbers.min
returns 一个数字,不是数组。您不能对其调用 uniq
,那不是数字方法。
您在第一个分支中的代码将仅成功删除没有 .uniq
的最小编号的第一个实例,因为 numbers.index
找到第一个实例。
事实上,整个if/else块都是多余的。第一个分支处理两种类型的输入,因此为许多 vs 一个定义特殊情况几乎没有意义:
def remove_smallest(array)
array.delete_at(array.index(array.min))
array
end
p remove_smallest([1, 2, 3, 4]) # [2, 3, 4]
p remove_smallest([4, 3, 1, 2, 1]) # [4, 3, 2, 1]