다른 사람의 솔루션을 확인한 후 여기에 내 코드는 정답과 매우 유사하게 보입니다. 유일한 차이점은 내가 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