Advent of code

 10 décembre 2015 

  Elves Look, Elves Say :
  1. code_partie1.py
  2. code_partie1_oneLiner.py
  3. code_partie1_realOneLiner.py
  4. code_partie2_coupure.py
  5. code_partie2_coupure_moinsEfficace.py
  6. code_partie2_coupures.diffy
  7. code_partie2_elements.py
from functools import cache
from itertools import groupby

inputString = '1113222113'

def nbRepet(s):
    c = s[0]
    n = 1
    for i in range(1,len(s)):
        if s[i] != c:
            break
        n += 1
    return n

@cache
def lookandsay(s):
    if len(s) < 10:
        return ''.join([(str(len(list(i[1])))+i[0]) for i in groupby(s)])    
    coupure = len(s) // 2
    while coupure > 0 and s[coupure] == s[coupure - 1]:
        coupure -= 1
    return lookandsay(s[:coupure]) + lookandsay(s[coupure:])


s = inputString

for i in range(50):
    s = lookandsay(s)

print(len(s))