Comment detail

数値リストの圧縮 (Nested Flatten)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def dkk208(List l){
  l.size < 3 ? l : l[2..-1].inject(l[0, 1]){ r, n ->
    def a = r[-1], b = r[-2]
    if(a instanceof Number && b instanceof Number && n == a * 2 - b)
      r[-2..-1] = [[b, n, n - a]]
    else if(a instanceof List && n == a[1] + a[2])
      a[1] = n
    else
      r << n
    r
  }.each{ it instanceof List && it[2] == 1 && it.pop() }
}
assert dkk208([1, 3, 4, 5, 6, 12, 13, 15, 20, 25, 26, 27]) ==
  [1, [3, 6], 12, 13, [15, 25, 5], 26, 27]

Index

Feed

Other

Link

Pathtraq

loading...