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]