在檢查其他人的解決方案後,我的代碼在這裏看起來與正確答案非常相似。我認爲唯一的區別是我定義的方式a
和b
。出於某種原因,它說他們都在NilClass中......?此代碼中的NilClass在哪裏? (歐拉項目#8)
def product(num)
i = 0
j = 4
arr = num.to_s.scan(/d/).map {|e| e.to_i} #can use .split('') vs .scan
a = (arr[i]..arr[j]).inject(:*) # vs (1) {|product, n| product * n}
while j <= arr.length
b = (arr[i+1]..arr[j+1]).inject(:*)
a = b if b > a
i+=1
j+=1
end
puts a
end
這是有效的,但現在我在if語句中得到了'undefined method'>'for nil:NilClass'。 – funfuntime
@KevinC,我不想寵壞。提示:'arr [i + 1] .. arr [j + 1]' – falsetru
啊,算出來了。 'arr [i + 1] .. arr [j + 1]'接受索引的值,所以它循環,比如說'7..1'。相反,我需要'arr [i..j]'。 (另外,我必須將'i + = 1'和'j + = 1'移到while循環的頂部。) – funfuntime