Comment detail

自然数の分割 (Nested Flatten)

とりえあず。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def sumPatterns(n:int, m:int) = {
  def sum(ns:List[int]) = (0 /: ns){_+_}
  def cmp(a:List[int],b:List[int]):boolean = {
    if(a.head == b.head) cmp(a.tail, b.tail)
    else if(a.head > b.head) true
    else false
  }

  ((List(List[int]())) /: List.make(m, 0 to n)){
    for(i <-_; j <-_) yield j::i
  }.filter(sum(_) == n).sort(cmp _)
}

Index

Feed

Other

Link

Pathtraq

loading...