Previous Up Next

9  Langage Python : élégance et clareté

import sys
import itertools
import functools

def lire():
  return list(int(mot,16) for ligne in sys.stdin for mot in ligne.split())

def somme(paquet):
  return(
    ~((lambda replier,somme: replier(replier,somme))(
         lambda replier,somme:somme if not(somme>>16) else replier(replier,(somme>>16)+(somme&0xffff)),
         functools.reduce(
           lambda x,y: x+y,
           [paquet[i]<<8|(0 if i>=len(paquet) else paquet[i+1]) for i in range(0,len(paquet),2)])))&0xffff

print('somme='+format(somme(lire()),'04x'))

Previous Up Next