대상 번호와 값 배열이있는 경우 대상 값까지 합한 모든 숫자 조합을 어떻게 찾을 수 있습니까?배열에서 지정된 값을 더하는 모든 값을 찾습니다.
target_number = 42
sample_values = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]
여기에 대한 답변은 다음과 같습니다 내가 검색이 유형에 대한 mathmatical 용어, 당신을 위해 그것을 할 가능성이 루비 라이브러리가 확신
14 + 28 = 42
13 + 27 = 42
12 + 26 = 42
...
1 + 13 + 28 = 42
2 + 12 + 28 = 42
...
.
중첩 된 for 루프없이 어떻게 할 수 있습니까?
sample_values.each do | x |
sample_values.each do | i |
sample_values.each do | j |
if x + i + j == target_number
puts "#{x} + #{i} + #{j} is #{target_number}"
end
end
end
end
감사하지만, 아무 것도 반환하지 않습니다. 이유가 확실하지 않습니다. http://rubyfiddle.com/riddles/c1dde/2 – spuder
@spuder 작성된 코드는 아무 것도 반환하지 않습니다. 주석에 표시된대로, 당신은'if' 문 안에서 카운터를 증가시킬 것으로 예상됩니다. 그러나'if '는 대상 번호를 항상 false 인 숫자 배열과 비교하기 때문에 작성된대로 작동하지 않습니다. 대신 배열의 숫자 합계와 비교해야합니다. –
Fyi를 사용하면 조합을 배열로 변환 할 필요가 없습니다. 사실, 그렇지 않을 수도 있습니다. 또한 대상 번호와 비교하기 전에'.reduce (: +)'와 합산하는 것을 잊어 버렸습니다. – Ajedi32