Previous Up Next

8  Langage Python : fonctionnel

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'))

Previous Up Next