如何为 Luhn 对象创建条件循环以检查索引 [0] 是否不为 0
how to create conditional loop for Luhn object to check if index[0] is not 0
我正在使用来自 Github 的 Luhn 库。
Luhn class 有更多方法,但我只对 "generate" 和 "valid?" 方法感兴趣。
m = Luhn.generate(9) # generates a random number like [123456789] or [098765432]
Luhn.valid?(m) # returns true or false based on Luhn checksum passing
但我不希望生成的数字以“0”开头。
那么我该如何放入我的 ruby 脚本:
- 丢弃以
"0"
开头的生成数字。
- 生成另一个数字并再次检查,直到
m[0]
不为零。
- 运行
valid?()
on generated number:如果为假,则生成另一个非零数字,直到为真。
- return 来电号码的有效 9 位数字
这对你有用吗? (非常基本的递归)
require 'luhn'
def generate_non_zero_luhn(size=9)
m = Luhn.generate(size)
m[0] != "0" && Luhn.valid?(m) ? m : generate_non_zero_luhn(size)
end
示例输出
10.times.map { generate_non_zero_luhn }
#=> ["582428355", "353646136", "821379013", "818135220", "696652767",
"934766437", "885229401", "226319044", "682121645", "688197078"]
尽管我认为不需要进行有效性检查,因为 Luhn
正在生成号码,因此它将始终有效。例如
1_000_000.times.map { Luhn.valid?(Luhn.generate(9))}.any?{|val| !val}
#=> false
那么方法就可以变成
def generate_non_zero_luhn(size=9)
m = Luhn.generate(size)
m[0] != "0" ? m : generate_non_zero_luhn(size)
end
我正在使用来自 Github 的 Luhn 库。 Luhn class 有更多方法,但我只对 "generate" 和 "valid?" 方法感兴趣。
m = Luhn.generate(9) # generates a random number like [123456789] or [098765432]
Luhn.valid?(m) # returns true or false based on Luhn checksum passing
但我不希望生成的数字以“0”开头。
那么我该如何放入我的 ruby 脚本:
- 丢弃以
"0"
开头的生成数字。 - 生成另一个数字并再次检查,直到
m[0]
不为零。 - 运行
valid?()
on generated number:如果为假,则生成另一个非零数字,直到为真。 - return 来电号码的有效 9 位数字
这对你有用吗? (非常基本的递归)
require 'luhn'
def generate_non_zero_luhn(size=9)
m = Luhn.generate(size)
m[0] != "0" && Luhn.valid?(m) ? m : generate_non_zero_luhn(size)
end
示例输出
10.times.map { generate_non_zero_luhn }
#=> ["582428355", "353646136", "821379013", "818135220", "696652767",
"934766437", "885229401", "226319044", "682121645", "688197078"]
尽管我认为不需要进行有效性检查,因为 Luhn
正在生成号码,因此它将始终有效。例如
1_000_000.times.map { Luhn.valid?(Luhn.generate(9))}.any?{|val| !val}
#=> false
那么方法就可以变成
def generate_non_zero_luhn(size=9)
m = Luhn.generate(size)
m[0] != "0" ? m : generate_non_zero_luhn(size)
end