ためのものです:
num.to_s.split('').uniq == num.to_s.split('')
あなたは、そのに各番号を分割しています文字列として個別の数字を入力し、uniq
を実行して重複を削除し、uniq
のない配列と同じ場合は、重複しない数字の数字が表示されます。
あなたif
声明にこれを追加した場合、それはかなり長くなりますので、私はあなたがtrue
やfalse
を返すメソッドでこれを包むお勧め:
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を追加し、条件がすべての条件を満たしているかどうかを確認し、そうであれば番号を返し、そうでなければ、 nil
を返します。
入力が15
の場合、18
は奇数ではないため、関数はnil
を返します。あなたはループが必要になりますので、返却する権利数は、21
です:
def next_numb(n)
x = n + 1
until x % 2 == 1 && x % 3 == 0 && unique_digits?(x)
x += 1
end
x
end
def unique_digits?(num)
num.to_s.split('').uniq == num.to_s.split('')
end
next_numb(13) #=> 15
next_numb(15) #=> 21
next_numb(125) #=> 129
は 'next_numb(15)' '15'または' 21'を返すでしょうか? –
OPが次の番号を探しているので、それは '21'になります。 – davidhu2000
私は単語 "番号"の略語を見たことはないと思います。 –