我正在尝试编写一个方法colorful?
,该方法将数字作为参数,如果数字为彩色则返回true
,否则返回false
。
如果其数字的连续子集的所有产品都不同,则数字多彩。
我写了这个:
def digits(number)
digits = []
number.to_s.split('').each do |digit|
digits << digit.to_i
end
end
def product_of_digits_subset(digits)
products = []
(1..digits.size).each do |i|
(0..(digits.size) - i).each do |j|
digits[j...(j + i)].each do |digit_subset| end
product = 1
product = product * digit_subset
products << product
end
end
products
end
def colorful?(number)
digits = digits(number)
products = product_of_digits_subset(digits)
products == products.uniq
end
colorful?(236)
当我尝试执行此操作时,收到此错误消息:
17:in `block (2 levels) in product_of_digits_subset': undefined local variable or method `digit_subset' for main:Object (NameError)
看起来我没有正确定义连续的数字子集。有什么帮助吗?
答案 0 :(得分:1)
重新格式化代码后,我得到了这个:
def digits(number)
digits = []
number.to_s.split('').each do |digit|
digits << digit.to_i
end
end
def product_of_digits_subset(digits)
products = []
(1..digits.size).each do |i|
(0..(digits.size)-i).each do |j|
digits[j...(j+i)].each do |digit_subset|
end
product = 1
product = product * digit_subset
products << product
end
end
products
end
def colorful?(number)
digits = digits(number)
products = product_of_digits_subset(digits)
products == products.uniq
end
p colorful?(236)
在第13行的代码中,each
周期为空块体 - digit_subset
仅在此空块的范围内可见,但您稍后会尝试在第16行引用它。 / p>
digits[j...(j+i)].each do |digit_subset|
end
为了捕获此类错误,我建议您使用适当的缩进格式化代码。