如何获得高于给定值的数字

时间:2016-09-07 20:35:42

标签: ruby

我正在尝试编写一个函数,它接收一个值val并输出比给定值更小的数字。此数字属于一组具有以下属性的正整数:它们的数字只出现一次,它们是奇数,它们是三的倍数。

这是我到目前为止编写的代码:

def next_numb(n)

  x = n + 3
  if x % 2 == 1 && x % 3 == 0
    return x
  end
end

如何测试唯一数字?另外,如果我输入12,答案是15,同样是13。

1 个答案:

答案 0 :(得分:1)

要测试数字是否只有唯一值,您可以执行以下操作:

num.to_s.split('').uniq == num.to_s.split('')

您将每个数字拆分为各自的数字,作为字符串,然后运行uniq以删除重复项,如果它与没有uniq的数组相同,那么您有一个数字非重复数字。

如果你将它添加到你的if语句中,它会变得很长,所以我建议你将它包装在一个返回truefalse的方法中:

def unique_digits?(num)
  num.to_s.split('').uniq == num.to_s.split('')
end

您的if声明将是:

def next_numb(n)
  x = n + 3
  if x % 2 == 1 && x % 3 == 0 && unique_digits?(x)
    return x
  end
end

我注意到你的代码还有其他内容,它只会向n添加3并检查数字是否符合所有条件,如果是,它将返回数字,如果没有,它将返回{ {1}}。

如果您输入nil,则您的函数将返回15,因为nil并非奇数。要返回的正确数字是18,因此您需要一个循环:

21