27 lines
797 B
Groovy
27 lines
797 B
Groovy
Number.metaClass.getSelfReferentialSequence = {
|
|
def number = delegate as String; def sequence = []
|
|
|
|
while (!sequence.contains(number)) {
|
|
sequence << number
|
|
def encoded = new StringBuilder()
|
|
((number as List).sort().join('').reverse() =~ /(([0-9])\2*)/).each { matcher, text, digit ->
|
|
encoded.append(text.size()).append(digit)
|
|
}
|
|
number = encoded.toString()
|
|
}
|
|
sequence
|
|
}
|
|
|
|
def maxSeqSize = { List values ->
|
|
values.inject([seqSize: 0, seeds: []]) { max, n ->
|
|
if (n % 100000 == 99999) println 'HT'
|
|
else if (n % 10000 == 9999) print '.'
|
|
def seqSize = n.selfReferentialSequence.size()
|
|
switch (seqSize) {
|
|
case max.seqSize: max.seeds << n
|
|
case { it < max.seqSize }: return max
|
|
default: return [seqSize: seqSize, seeds: [n]]
|
|
}
|
|
}
|
|
}
|