map 안의 map
Scala 예제중에 n 미만의 두 숫자 합이 소수가 되는 조합을 찾아내는 것으로 다음과 같은 것이 있습니다. 물론 나중에 나오는 for 문을 사용하면 다 간단하고 이해하기 쉽겠지요.
List.range(1, n) .map(i => List.range(1, i).map(x => (i, x))) .foldRight(List([Int, Int])()) { (xs, ys) => xs ::: ys } .filter(pair => isPrime(pair._1 + pair._2)map 문 내부에 map이 있는 것을 보고 ruby에서도 지원해줄지 궁금해서 한번 시험해 보았습니다. 결론은 지원해 주네요. Scala에서 flatMap을 사용하지 않고 foldRight를 써서 엄밀하게 일대일로 대응되는 코드는 아닙니다만.
(1...n).flat_map( |i| (1...i).map { |j| [i, j] }}.select { |i, j| (i+j).prime? }
댓글