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]
matyr
#7755()
[
Groovy
]
Rating0/0=0.00
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]Rating0/0=0.00-0+
[ reply ]