8 Langage Python : fonctionnel
-
Utilisation des fonctions map, reduce et chain.
- Introduction des fonctions anonymes.
- Abomination : l’opérateur *.
import sys
import itertools
import functools
def lire():
paquet=list(map(lambda e: int(e,16),itertools.chain(*map(lambda ligne: ligne.split(),sys.stdin))))
if len(paquet)%2==1: paquet.append(0)
return paquet
def somme(paquet):
somme=functools.reduce(lambda x,y: x+y,map(lambda c: (c[0]<<8|c[1]),map(lambda i: (paquet[i],paquet[i+1]),range(0,len(paquet),2))))
while somme>>16: somme=(somme>>16)+somme&0xffff
return (~somme)&0xffff
print('somme='+format(somme(lire()),'04x'))