[Dobble] la formule mathématique !!!!

Je confirme la faute de frappe (enfin, surtout, une grosse rature difficilement lisible sur mon brouillon :P)

Bon j’avais mis ca de coté, mais je me suis décidé à rafraichir mes connaissances sur les corps finis. Du coup j’ai fait du code encore plus moche, mais qui utilise le corps de taille p^k (avec p nombre premier).
Il faut en plus trouver un polynome irréductible dans Z/pZ et de degré k, heureusement il y a des listes qui trainent sur internet. J’ai l’impression que ces polynômes sont utilisés en crypto (pour casser des clés ? en faire des nouvelles ? )

#!/usr/bin/env python
# -- coding: utf-8 --
primitifs=“”"
%% Liste des polymomes http://jeux-et-mathematiques.davalan.org/mots/comb/gfields/primitifs.txt
%% Polynomes Primitifs sur F2
2 2 1 1 1
2 3 1 1 0 1
2 4 1 1 0 0 1
2 5 1 0 1 0 0 1
2 6 1 1 0 0 0 0 1
2 7 1 1 0 0 0 0 0 1
2 8 1 1 1 0 0 0 0 1 1
2 9 1 0 0 0 1 0 0 0 0 1
2 10 1 0 0 1 0 0 0 0 0 0 1
2 11 1 0 1 0 0 0 0 0 0 0 0 1
2 12 1 1 1 0 0 0 0 0 1 0 0 0 1
2 13 1 1 1 0 0 1 0 0 0 0 0 0 0 1
2 14 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1
2 15 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 16 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1
2 17 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 18 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1
2 19 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 20 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 21 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 22 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 23 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 24 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 25 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 26 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 27 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 28 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 29 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 30 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 31 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 32 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 33 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 34 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 35 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 36 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 37 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 38 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 39 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 40 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 41 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 42 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 43 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 44 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 45 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 46 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 47 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 48 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 49 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
%% Polynomes Primitifs sur F3
3 2 2 1 1
3 3 1 0 2 1
3 4 2 0 0 1 1
3 5 1 0 1 0 1 1
3 6 2 0 0 0 0 1 1
3 7 1 0 0 0 1 0 1 1
3 8 2 0 0 0 0 1 0 0 1
3 9 1 0 0 0 0 1 0 1 0 1
3 10 2 0 0 0 0 0 0 1 0 1 1
3 11 1 0 0 0 1 0 0 0 0 0 1 1
3 12 2 0 0 0 0 0 0 1 0 0 0 1 1
3 13 1 0 0 0 0 0 1 0 0 0 0 0 1 1
3 14 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1
3 15 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
3 16 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1
3 17 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1
3 18 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1
%% Polynomes Primitifs sur F5
5 2 2 1 1
5 3 2 0 1 1
5 4 3 1 0 1 1
5 5 2 0 1 0 0 1
5 6 2 0 0 0 0 1 1
5 7 2 0 0 0 0 0 1 1
5 8 3 0 0 1 0 1 0 0 1
5 9 3 0 0 0 0 0 1 1 0 1
5 10 3 0 0 0 0 0 0 1 0 1 1
5 11 2 0 0 0 0 0 0 0 0 0 1 1
5 12 3 0 0 0 1 0 0 1 0 0 0 0 1
5 13 3 3 4 0 0 0 0 0 0 0 0 0 0 1
5 14 2 1 3 2 4 4 0 1 0 0 0 0 0 0 1
5 15 3 4 3 3 0 2 0 0 0 0 0 0 0 0 0 1
5 16 2 1 4 4 4 4 4 1 0 0 0 0 0 0 0 0 1
5 17 3 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
5 18 2 0 2 2 0 1 2 0 2 1 1 1 1 0 0 0 0 0 1

%% Polynomes Primitifs sur F7
7 2 3 1 1
7 3 2 1 1 1
7 4 3 0 1 1 1
7 5 4 0 0 0 1 1
7 6 3 0 0 0 1 1 1
7 7 4 0 0 0 0 1 0 1
7 8 3 0 0 0 0 0 0 1 1
7 9 2 0 0 1 0 0 0 0 1 1
7 10 3 0 0 0 0 0 0 0 1 1 1

%% Polynomes Primitifs sur F11
11 2 7 1 1
11 3 3 0 1 1
11 4 8 0 0 1 1
11 5 3 0 0 1 1 1
11 6 7 1 0 0 0 1 1
11 7 4 0 0 0 0 0 1 1
11 8 7 0 0 0 0 0 1 1 1

%% Polynomes Primitifs sur F13
13 2 2 1 1
13 3 2 0 1 1
13 4 6 0 1 1 1
13 5 6 0 0 1 1 1
13 6 6 0 0 1 0 1 1
13 7 2 0 0 0 1 0 0 1
13 8 11 0 0 0 0 0 1 1 1
%% Polynomes Primitifs sur F17
17 2 3 1 1
17 3 7 0 1 1
17 4 5 0 0 1 1
17 5 5 0 0 0 1 1
17 6 3 0 0 0 0 1 1
17 7 7 0 0 0 0 0 1 1
%% Polynomes Primitifs sur F19
19 2 2 1 1
19 3 6 0 1 1
19 4 2 0 0 1 1
19 5 5 0 0 0 1 1
19 6 15 0 0 0 0 1 1
19 7 5 0 0 0 0 0 1 1

%% Polynomes Primitifs sur F23
23 2 7 1 1
23 3 6 0 1 1
23 4 20 0 0 1 1
23 5 6 0 0 0 1 1
23 6 7 0 0 0 0 1 1
%% Polynomes Primitifs sur F29
29 2 3 1 1
29 3 3 0 1 1
29 4 2 0 0 1 1
29 5 2 0 0 0 1 1
29 6 11 0 0 0 0 1 1

%% Polynomes Primitif sur F31
31 2 12 1 1
31 3 9 0 1 1
31 4 13 0 0 1 1
31 5 10 0 0 0 1 1
31 6 12 0 0 0 0 1 1

%% Polynomes Primitifs sur F37
37 2 5 1 1
37 3 17 0 1 1
37 4 22 0 0 1 1
37 5 2 0 0 0 1 1

%%Primitive polynomials over GF41
41 2 12 1 1
41 3 11 0 1 1
41 4 26 0 0 1 1
41 5 11 0 0 0 1 1

%%Primitive polynomials over GF43
43 2 3 1 1
43 3 9 0 1 1
43 4 20 1 0 0 1
43 5 9 0 0 0 1 1

%%Primitive polynomials over GF47
47 2 13 1 1
47 3 2 0 1 1
47 4 5 0 0 1 1
47 5 6 0 0 0 1 1

%% Polynomes Primitifs sur F53
53 2 5 1 1
53 3 2 0 1 1
53 4 2 0 0 1 1
53 5 12 0 0 0 1 1

%% Polynomes Primitifs sur F59
59 2 2 1 1
59 3 9 0 1 1
59 4 18 0 0 1 1
59 5 4 0 0 0 1 1

%% Polynomes Primitifs sur F61
61 2 2 1 1
61 3 6 0 1 1
61 4 17 0 0 1 1
61 5 55 0 0 0 1 1

%% Polynomes Primitifs sur F67
67 2 12 1 1
67 3 6 0 1 1
67 4 12 0 0 1 1
%% Polynomes Primitifs sur F71
71 2 11 1 1
71 3 8 0 1 1
71 4 13 0 0 1 1

%% Polynomes Primitifs sur F73
73 2 11 1 1
73 3 5 0 1 1
73 4 33 0 0 1 1

%% Polynomes Primitifs sur F79
79 2 3 1 1
79 3 2 0 1 1
79 4 7 0 0 1 1
%% Polynomes Primitifs sur F83
83 2 2 1 1
83 3 11 0 1 1
83 4 24 0 0 1 1
%% Polynomes Primitifs sur F89
89 2 6 1 1
89 3 6 0 1 1
89 4 14 0 0 1 1
%% Polynomes Primitifs sur F97
97 2 5 1 1
97 3 5 0 1 1
97 4 15 0 0 1 1
“”"
def findPrimitif( p ,k ):
for line in primitifs.split(’
‘):
foo = line.split(’ ')
if (foo[0]==str(p) ) and (foo[1]==str(k)) :
return [int(i) for i in foo[2:]]
raise Exception(“Je ne connais pas de polynome primitif correspondant a la demande”)
#Une classe de manipulation de poynômes dans Z/pZ
class Poly:
def init(self,c,p):
self.coefs=c
self.p = p
def str(self):
s = ‘’
d = len(self.coefs)
for i in range(d-1):
s += str(self.coefs[d-i-1]) + ‘.X^’ + str(d-i-1) + ’ + '
s += str(self.coefs[0])
return s
def add(self, x):
if len(self.coefs) < len(x.coefs):
a = self.coefs
b = x.coefs
else :
b = self.coefs
a = x.coefs
c = [0]len(b)
for i in range(len(a)):
c
= (a*+b*) % self.p
for i in range(len(a),len(b)):
c* = b*
while len(c)>1 and c[-1]==0:
c.pop()
return Poly(c,self.p)
def sub(self,x):
c = [ -a for a in x.coefs ]
return self+Poly(c)
def mul(self, x):
d = len(self.coefs) + len(x.coefs)
c = [0]d
for i in range(len(self.coefs)):
for j in range(len(x.coefs)):
c[i+j] += self.coefs**x.coefs[j]
for i in range(d):
c
= c*%self.p
while len(c)>1 and c[-1]==0:
c.pop()
return Poly(c,self.p)
def mod(self,x,k):
for i in range(len(self.coefs)-1,k-1,-1):
for j in range(len(x.coefs)):
self.coefs[i-k+j] += self.coefs* * x.coefs[j]
self.coefs[i-k+j] %= self.p
self.coefs* = 0
while len(self.coefs)>1 and self.coefs[-1]==0:
self.coefs.pop()
return self
def pow(self,k): #Très mal codé mais assez rapide pour notre cas
y = Poly([1],self.p)
for i in range(k):
y = (y * self)
return y
def eq(self,x):
a = True
if (len(self.coefs) != len(x.coefs)):
return False
for i in range(len(self.coefs)):
if self.coefs* != x.coefs*:
return False
return True
#Le corps de nombres qui sera vraiment utilisé pour la construction
class Corps:
def init(self,p,k):
self.p = p
self.k = k
self.n = pk
if (k>1):
irreductible = findPrimitif(p,k)
self.red=Poly( [ (p-irreductible*) % p for i in range(len(irreductible)) ], p )
self.elements = [Poly([0],p)]
base = Poly([0,1],p)
for i in range(self.n-1):
self.elements.append( (base
i).mod(self.red,self.k) )
def add(self, i, j ):
if self.k==1:
return (i+j) % self.p
if (i >= self.n or j >=self.n ):
raise Exception(“Pas assez d’elements dans le corps”)
somme = self.elements*+self.elements[j]
return self.elements.index( somme )
def mult(self, i, j ):
if self.k==1:
return (ij)%self.p
if (i >= self.n or j >=self.n ):
raise Exception(“Pas assez d’elements dans le corps”)
mult = (self.elements**self.elements[j]).mod(self.red,self.k)
return self.elements.index( mult )
def str(self):
s =‘’
if (self.k == 1):
s += str(range(self.p))
else:
for e in self.elements:
s += str(e) + ’
'
return s

# This should be unitary tests
#poly = Poly([1,1,0,1],2)
#print poly + Poly([1])
#print poly - poly + poly
#print ((poly
poly) + Poly([1,1])) % poly

#corps = Corps(2,3)
#print corps
#print corps.add(2,3) #this is 5
#print corps.mult(2,3) #this is 4

def genereNumeroSymbole( p, type, corps, i=-1, j=-1 ):
if type == ‘infini’: return 0
if type == ‘lignes’: return 1 + i
if type == ‘diagonales’: return 1+p+ip+j
def dooble( p , k ):
cartes = []
n = p ** k
corps = Corps(p,k)
nbCartes = n**2 + n + 1
carte = []
carte.append( genereNumeroSymbole(n,“infini”,corps) )
for i in xrange( n ):
carte.append( genereNumeroSymbole(n,“lignes”,corps,i) )
cartes.append(carte)
for i in xrange( n ):
carte = []
carte.append( genereNumeroSymbole(n,“infini”, corps) )
for j in xrange( n ):
carte.append( genereNumeroSymbole(n,“diagonales”,corps,i,j) )
cartes.append(carte)
for i in xrange( n ):
for j in xrange( n ):
carte = []
carte.append( genereNumeroSymbole(n,“lignes”,corps,i) )
for c in xrange( n ):
carte.append( genereNumeroSymbole(n,“diagonales”,corps,c, corps.add(corps.mult(c,i),j) ) )
cartes.append(carte)
return cartes
def affiche(cartes):
print len(cartes), “cartes”
for i in range(len(cartes)):
print “Carte”,i+1,“:”,
print cartes



def check(doo):
for i in range(len(doo)):
for j in range(len(doo)):
if i == j:
continue
c = len(set( doo* ) & set( doo[j] ) )
if c!=1 :
print doo*, doo[j], c
return False
return True

doo = dooble( 2 , 3 )
affiche(doo)
print check(doo)

Un petit exemple avec le (p=2, k=2) qui a donc (2^2)^2+2^2 +1 = 21 cartes et symboles et 2^2 + 1 = 5 symboles par cartes
21 cartes
Carte 1 : [0, 1, 2, 3, 4]
Carte 2 : [0, 5, 6, 7, 8]
Carte 3 : [0, 9, 10, 11, 12]
Carte 4 : [0, 13, 14, 15, 16]
Carte 5 : [0, 17, 18, 19, 20]
Carte 6 : [1, 5, 9, 13, 17]
Carte 7 : [1, 6, 10, 14, 18]
Carte 8 : [1, 7, 11, 15, 19]
Carte 9 : [1, 8, 12, 16, 20]
Carte 10 : [2, 5, 10, 15, 20]
Carte 11 : [2, 6, 9, 16, 19]
Carte 12 : [2, 7, 12, 13, 18]
Carte 13 : [2, 8, 11, 14, 17]
Carte 14 : [3, 5, 11, 16, 18]
Carte 15 : [3, 6, 12, 15, 17]
Carte 16 : [3, 7, 9, 14, 20]
Carte 17 : [3, 8, 10, 13, 19]
Carte 18 : [4, 5, 12, 14, 19]
Carte 19 : [4, 6, 11, 13, 20]
Carte 20 : [4, 7, 10, 16, 17]
Carte 21 : [4, 8, 9, 15, 18]

Celui basé sur le corps à 16 éléments (p=2, k=4), 17 symboles par cartes et 273 cartes.

273 cartes
Carte 1 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
Carte 2 : [0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
Carte 3 : [0, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48]
Carte 4 : [0, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64]
Carte 5 : [0, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]
Carte 6 : [0, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]
Carte 7 : [0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112]
Carte 8 : [0, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128]
Carte 9 : [0, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144]
Carte 10 : [0, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160]
Carte 11 : [0, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176]
Carte 12 : [0, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192]
Carte 13 : [0, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208]
Carte 14 : [0, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224]
Carte 15 : [0, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240]
Carte 16 : [0, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256]
Carte 17 : [0, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272]
Carte 18 : [1, 17, 33, 49, 65, 81, 97, 113, 129, 145, 161, 177, 193, 209, 225, 241, 257]
Carte 19 : [1, 18, 34, 50, 66, 82, 98, 114, 130, 146, 162, 178, 194, 210, 226, 242, 258]
Carte 20 : [1, 19, 35, 51, 67, 83, 99, 115, 131, 147, 163, 179, 195, 211, 227, 243, 259]
Carte 21 : [1, 20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244, 260]
Carte 22 : [1, 21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261]
Carte 23 : [1, 22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262]
Carte 24 : [1, 23, 39, 55, 71, 87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247, 263]
Carte 25 : [1, 24, 40, 56, 72, 88, 104, 120, 136, 152, 168, 184, 200, 216, 232, 248, 264]
Carte 26 : [1, 25, 41, 57, 73, 89, 105, 121, 137, 153, 169, 185, 201, 217, 233, 249, 265]
Carte 27 : [1, 26, 42, 58, 74, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250, 266]
Carte 28 : [1, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 251, 267]
Carte 29 : [1, 28, 44, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268]
Carte 30 : [1, 29, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269]
Carte 31 : [1, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270]
Carte 32 : [1, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271]
Carte 33 : [1, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 272]
Carte 34 : [2, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255, 272]
Carte 35 : [2, 18, 33, 54, 74, 96, 99, 124, 143, 155, 164, 185, 199, 222, 237, 248, 261]
Carte 36 : [2, 19, 38, 49, 71, 91, 98, 116, 141, 160, 172, 181, 202, 216, 239, 254, 265]
Carte 37 : [2, 20, 42, 55, 65, 88, 108, 115, 133, 158, 162, 189, 198, 219, 233, 256, 271]
Carte 38 : [2, 21, 48, 59, 72, 81, 105, 125, 132, 150, 175, 179, 206, 215, 236, 250, 258]
Carte 39 : [2, 22, 35, 50, 76, 89, 97, 122, 142, 149, 167, 192, 196, 223, 232, 253, 267]
Carte 40 : [2, 23, 44, 52, 67, 93, 106, 113, 139, 159, 166, 184, 194, 213, 240, 249, 270]
Carte 41 : [2, 24, 47, 61, 69, 84, 110, 123, 129, 156, 176, 183, 201, 211, 230, 242, 266]
Carte 42 : [2, 25, 43, 64, 78, 86, 101, 127, 140, 145, 173, 178, 200, 218, 228, 247, 259]
Carte 43 : [2, 26, 36, 60, 66, 95, 103, 118, 144, 157, 161, 190, 195, 217, 235, 245, 264]
Carte 44 : [2, 27, 41, 53, 77, 83, 112, 120, 135, 146, 174, 177, 207, 212, 234, 252, 262]
Carte 45 : [2, 28, 39, 58, 70, 94, 100, 114, 137, 152, 163, 191, 193, 224, 229, 251, 269]
Carte 46 : [2, 29, 46, 56, 75, 87, 111, 117, 131, 154, 169, 180, 208, 209, 226, 246, 268]
Carte 47 : [2, 30, 45, 63, 73, 92, 104, 128, 134, 148, 171, 186, 197, 210, 225, 243, 263]
Carte 48 : [2, 31, 40, 62, 80, 90, 109, 121, 130, 151, 165, 188, 203, 214, 227, 241, 260]
Carte 49 : [2, 32, 37, 57, 79, 82, 107, 126, 138, 147, 168, 182, 205, 220, 231, 244, 257]
Carte 50 : [3, 17, 35, 52, 69, 86, 103, 120, 137, 154, 171, 188, 205, 222, 239, 256, 258]
Carte 51 : [3, 18, 38, 58, 80, 83, 108, 127, 139, 148, 169, 183, 206, 221, 232, 245, 257]
Carte 52 : [3, 19, 33, 55, 75, 82, 100, 125, 144, 156, 165, 186, 200, 223, 238, 249, 262]
Carte 53 : [3, 20, 39, 49, 72, 92, 99, 117, 142, 146, 173, 182, 203, 217, 240, 255, 266]
Carte 54 : [3, 21, 43, 56, 65, 89, 109, 116, 134, 159, 163, 190, 199, 220, 234, 242, 272]
Carte 55 : [3, 22, 34, 60, 73, 81, 106, 126, 133, 151, 176, 180, 207, 216, 237, 251, 259]
Carte 56 : [3, 23, 36, 51, 77, 90, 97, 123, 143, 150, 168, 178, 197, 224, 233, 254, 268]
Carte 57 : [3, 24, 45, 53, 68, 94, 107, 113, 140, 160, 167, 185, 195, 214, 226, 250, 271]
Carte 58 : [3, 25, 48, 62, 70, 85, 111, 124, 129, 157, 162, 184, 202, 212, 231, 243, 267]
Carte 59 : [3, 26, 44, 50, 79, 87, 102, 128, 141, 145, 174, 179, 201, 219, 229, 248, 260]
Carte 60 : [3, 27, 37, 61, 67, 96, 104, 119, 130, 158, 161, 191, 196, 218, 236, 246, 265]
Carte 61 : [3, 28, 42, 54, 78, 84, 98, 121, 136, 147, 175, 177, 208, 213, 235, 253, 263]
Carte 62 : [3, 29, 40, 59, 71, 95, 101, 115, 138, 153, 164, 192, 193, 210, 230, 252, 270]
Carte 63 : [3, 30, 47, 57, 76, 88, 112, 118, 132, 155, 170, 181, 194, 209, 227, 247, 269]
Carte 64 : [3, 31, 46, 64, 74, 93, 105, 114, 135, 149, 172, 187, 198, 211, 225, 244, 264]
Carte 65 : [3, 32, 41, 63, 66, 91, 110, 122, 131, 152, 166, 189, 204, 215, 228, 241, 261]
Carte 66 : [4, 17, 36, 53, 70, 87, 104, 121, 138, 155, 172, 189, 206, 223, 240, 242, 259]
Carte 67 : [4, 18, 42, 64, 67, 92, 111, 123, 132, 153, 167, 190, 205, 216, 229, 241, 262]
Carte 68 : [4, 19, 39, 59, 66, 84, 109, 128, 140, 149, 170, 184, 207, 222, 233, 246, 257]
Carte 69 : [4, 20, 33, 56, 76, 83, 101, 126, 130, 157, 166, 187, 201, 224, 239, 250, 263]
Carte 70 : [4, 21, 40, 49, 73, 93, 100, 118, 143, 147, 174, 183, 204, 218, 226, 256, 267]
Carte 71 : [4, 22, 44, 57, 65, 90, 110, 117, 135, 160, 164, 191, 200, 221, 235, 243, 258]
Carte 72 : [4, 23, 35, 61, 74, 81, 107, 127, 134, 152, 162, 181, 208, 217, 238, 252, 260]
Carte 73 : [4, 24, 37, 52, 78, 91, 97, 124, 144, 151, 169, 179, 198, 210, 234, 255, 269]
Carte 74 : [4, 25, 46, 54, 69, 95, 108, 113, 141, 146, 168, 186, 196, 215, 227, 251, 272]
Carte 75 : [4, 26, 34, 63, 71, 86, 112, 125, 129, 158, 163, 185, 203, 213, 232, 244, 268]
Carte 76 : [4, 27, 45, 51, 80, 88, 103, 114, 142, 145, 175, 180, 202, 220, 230, 249, 261]
Carte 77 : [4, 28, 38, 62, 68, 82, 105, 120, 131, 159, 161, 192, 197, 219, 237, 247, 266]
Carte 78 : [4, 29, 43, 55, 79, 85, 99, 122, 137, 148, 176, 177, 194, 214, 236, 254, 264]
Carte 79 : [4, 30, 41, 60, 72, 96, 102, 116, 139, 154, 165, 178, 193, 211, 231, 253, 271]
Carte 80 : [4, 31, 48, 58, 77, 89, 98, 119, 133, 156, 171, 182, 195, 209, 228, 248, 270]
Carte 81 : [4, 32, 47, 50, 75, 94, 106, 115, 136, 150, 173, 188, 199, 212, 225, 245, 265]
Carte 82 : [5, 17, 37, 54, 71, 88, 105, 122, 139, 156, 173, 190, 207, 224, 226, 243, 260]
Carte 83 : [5, 18, 48, 51, 76, 95, 107, 116, 137, 151, 174, 189, 200, 213, 225, 246, 266]
Carte 84 : [5, 19, 43, 50, 68, 93, 112, 124, 133, 154, 168, 191, 206, 217, 230, 241, 263]
Carte 85 : [5, 20, 40, 60, 67, 85, 110, 114, 141, 150, 171, 185, 208, 223, 234, 247, 257]
Carte 86 : [5, 21, 33, 57, 77, 84, 102, 127, 131, 158, 167, 188, 202, 210, 240, 251, 264]
Carte 87 : [5, 22, 41, 49, 74, 94, 101, 119, 144, 148, 175, 184, 205, 219, 227, 242, 268]
Carte 88 : [5, 23, 45, 58, 65, 91, 111, 118, 136, 146, 165, 192, 201, 222, 236, 244, 259]
Carte 89 : [5, 24, 36, 62, 75, 81, 108, 128, 135, 153, 163, 182, 194, 218, 239, 253, 261]
Carte 90 : [5, 25, 38, 53, 79, 92, 97, 125, 130, 152, 170, 180, 199, 211, 235, 256, 270]
Carte 91 : [5, 26, 47, 55, 70, 96, 109, 113, 142, 147, 169, 187, 197, 216, 228, 252, 258]
Carte 92 : [5, 27, 35, 64, 72, 87, 98, 126, 129, 159, 164, 186, 204, 214, 233, 245, 269]
Carte 93 : [5, 28, 46, 52, 66, 89, 104, 115, 143, 145, 176, 181, 203, 221, 231, 250, 262]
Carte 94 : [5, 29, 39, 63, 69, 83, 106, 121, 132, 160, 161, 178, 198, 220, 238, 248, 267]
Carte 95 : [5, 30, 44, 56, 80, 86, 100, 123, 138, 149, 162, 177, 195, 215, 237, 255, 265]
Carte 96 : [5, 31, 42, 61, 73, 82, 103, 117, 140, 155, 166, 179, 193, 212, 232, 254, 272]
Carte 97 : [5, 32, 34, 59, 78, 90, 99, 120, 134, 157, 172, 183, 196, 209, 229, 249, 271]
Carte 98 : [6, 17, 38, 55, 72, 89, 106, 123, 140, 157, 174, 191, 208, 210, 227, 244, 261]
Carte 99 : [6, 18, 35, 60, 79, 91, 100, 121, 135, 158, 173, 184, 197, 209, 230, 250, 272]
Carte 100 : [6, 19, 34, 52, 77, 96, 108, 117, 138, 152, 175, 190, 201, 214, 225, 247, 267]
Carte 101 : [6, 20, 44, 51, 69, 94, 98, 125, 134, 155, 169, 192, 207, 218, 231, 241, 264]
Carte 102 : [6, 21, 41, 61, 68, 86, 111, 115, 142, 151, 172, 186, 194, 224, 235, 248, 257]
Carte 103 : [6, 22, 33, 58, 78, 85, 103, 128, 132, 159, 168, 189, 203, 211, 226, 252, 265]
Carte 104 : [6, 23, 42, 49, 75, 95, 102, 120, 130, 149, 176, 185, 206, 220, 228, 243, 269]
Carte 105 : [6, 24, 46, 59, 65, 92, 112, 119, 137, 147, 166, 178, 202, 223, 237, 245, 260]
Carte 106 : [6, 25, 37, 63, 76, 81, 109, 114, 136, 154, 164, 183, 195, 219, 240, 254, 262]
Carte 107 : [6, 26, 39, 54, 80, 93, 97, 126, 131, 153, 171, 181, 200, 212, 236, 242, 271]
Carte 108 : [6, 27, 48, 56, 71, 82, 110, 113, 143, 148, 170, 188, 198, 217, 229, 253, 259]
Carte 109 : [6, 28, 36, 50, 73, 88, 99, 127, 129, 160, 165, 187, 205, 215, 234, 246, 270]
Carte 110 : [6, 29, 47, 53, 67, 90, 105, 116, 144, 145, 162, 182, 204, 222, 232, 251, 263]
Carte 111 : [6, 30, 40, 64, 70, 84, 107, 122, 133, 146, 161, 179, 199, 221, 239, 249, 268]
Carte 112 : [6, 31, 45, 57, 66, 87, 101, 124, 139, 150, 163, 177, 196, 216, 238, 256, 266]
Carte 113 : [6, 32, 43, 62, 74, 83, 104, 118, 141, 156, 167, 180, 193, 213, 233, 255, 258]
Carte 114 : [7, 17, 39, 56, 73, 90, 107, 124, 141, 158, 175, 192, 194, 211, 228, 245, 262]
Carte 115 : [7, 18, 44, 63, 75, 84, 105, 119, 142, 157, 168, 181, 193, 214, 234, 256, 259]
Carte 116 : [7, 19, 36, 61, 80, 92, 101, 122, 136, 159, 174, 185, 198, 209, 231, 251, 258]
Carte 117 : [7, 20, 35, 53, 78, 82, 109, 118, 139, 153, 176, 191, 202, 215, 225, 248, 268]
Carte 118 : [7, 21, 45, 52, 70, 95, 99, 126, 135, 156, 170, 178, 208, 219, 232, 241, 265]
Carte 119 : [7, 22, 42, 62, 69, 87, 112, 116, 143, 152, 173, 187, 195, 210, 236, 249, 257]
Carte 120 : [7, 23, 33, 59, 79, 86, 104, 114, 133, 160, 169, 190, 204, 212, 227, 253, 266]
Carte 121 : [7, 24, 43, 49, 76, 96, 103, 121, 131, 150, 162, 186, 207, 221, 229, 244, 270]
Carte 122 : [7, 25, 47, 60, 65, 93, 98, 120, 138, 148, 167, 179, 203, 224, 238, 246, 261]
Carte 123 : [7, 26, 38, 64, 77, 81, 110, 115, 137, 155, 165, 184, 196, 220, 226, 255, 263]
Carte 124 : [7, 27, 40, 55, 66, 94, 97, 127, 132, 154, 172, 182, 201, 213, 237, 243, 272]
Carte 125 : [7, 28, 34, 57, 72, 83, 111, 113, 144, 149, 171, 189, 199, 218, 230, 254, 260]
Carte 126 : [7, 29, 37, 51, 74, 89, 100, 128, 129, 146, 166, 188, 206, 216, 235, 247, 271]
Carte 127 : [7, 30, 48, 54, 68, 91, 106, 117, 130, 145, 163, 183, 205, 223, 233, 252, 264]
Carte 128 : [7, 31, 41, 50, 71, 85, 108, 123, 134, 147, 161, 180, 200, 222, 240, 250, 269]
Carte 129 : [7, 32, 46, 58, 67, 88, 102, 125, 140, 151, 164, 177, 197, 217, 239, 242, 267]
Carte 130 : [8, 17, 40, 57, 74, 91, 108, 125, 142, 159, 176, 178, 195, 212, 229, 246, 263]
Carte 131 : [8, 18, 47, 59, 68, 89, 103, 126, 141, 152, 165, 177, 198, 218, 240, 243, 268]
Carte 132 : [8, 19, 45, 64, 76, 85, 106, 120, 143, 158, 169, 182, 193, 215, 235, 242, 260]
Carte 133 : [8, 20, 37, 62, 66, 93, 102, 123, 137, 160, 175, 186, 199, 209, 232, 252, 259]
Carte 134 : [8, 21, 36, 54, 79, 83, 110, 119, 140, 154, 162, 192, 203, 216, 225, 249, 269]
Carte 135 : [8, 22, 46, 53, 71, 96, 100, 127, 136, 157, 171, 179, 194, 220, 233, 241, 266]
Carte 136 : [8, 23, 43, 63, 70, 88, 98, 117, 144, 153, 174, 188, 196, 211, 237, 250, 257]
Carte 137 : [8, 24, 33, 60, 80, 87, 105, 115, 134, 146, 170, 191, 205, 213, 228, 254, 267]
Carte 138 : [8, 25, 44, 49, 77, 82, 104, 122, 132, 151, 163, 187, 208, 222, 230, 245, 271]
Carte 139 : [8, 26, 48, 61, 65, 94, 99, 121, 139, 149, 168, 180, 204, 210, 239, 247, 262]
Carte 140 : [8, 27, 39, 50, 78, 81, 111, 116, 138, 156, 166, 185, 197, 221, 227, 256, 264]
Carte 141 : [8, 28, 41, 56, 67, 95, 97, 128, 133, 155, 173, 183, 202, 214, 238, 244, 258]
Carte 142 : [8, 29, 35, 58, 73, 84, 112, 113, 130, 150, 172, 190, 200, 219, 231, 255, 261]
Carte 143 : [8, 30, 38, 52, 75, 90, 101, 114, 129, 147, 167, 189, 207, 217, 236, 248, 272]
Carte 144 : [8, 31, 34, 55, 69, 92, 107, 118, 131, 145, 164, 184, 206, 224, 234, 253, 265]
Carte 145 : [8, 32, 42, 51, 72, 86, 109, 124, 135, 148, 161, 181, 201, 223, 226, 251, 270]
Carte 146 : [9, 17, 41, 58, 75, 92, 109, 126, 143, 160, 162, 179, 196, 213, 230, 247, 264]
Carte 147 : [9, 18, 43, 52, 73, 87, 110, 125, 136, 149, 161, 182, 202, 224, 227, 252, 271]
Carte 148 : [9, 19, 48, 60, 69, 90, 104, 127, 142, 153, 166, 177, 199, 219, 226, 244, 269]
Carte 149 : [9, 20, 46, 50, 77, 86, 107, 121, 144, 159, 170, 183, 193, 216, 236, 243, 261]
Carte 150 : [9, 21, 38, 63, 67, 94, 103, 124, 138, 146, 176, 187, 200, 209, 233, 253, 260]
Carte 151 : [9, 22, 37, 55, 80, 84, 111, 120, 141, 155, 163, 178, 204, 217, 225, 250, 270]
Carte 152 : [9, 23, 47, 54, 72, 82, 101, 128, 137, 158, 172, 180, 195, 221, 234, 241, 267]
Carte 153 : [9, 24, 44, 64, 71, 89, 99, 118, 130, 154, 175, 189, 197, 212, 238, 251, 257]
Carte 154 : [9, 25, 33, 61, 66, 88, 106, 116, 135, 147, 171, 192, 206, 214, 229, 255, 268]
Carte 155 : [9, 26, 45, 49, 78, 83, 105, 123, 133, 152, 164, 188, 194, 223, 231, 246, 272]
Carte 156 : [9, 27, 34, 62, 65, 95, 100, 122, 140, 150, 169, 181, 205, 211, 240, 248, 263]
Carte 157 : [9, 28, 40, 51, 79, 81, 112, 117, 139, 157, 167, 186, 198, 222, 228, 242, 265]
Carte 158 : [9, 29, 42, 57, 68, 96, 97, 114, 134, 156, 174, 184, 203, 215, 239, 245, 259]
Carte 159 : [9, 30, 36, 59, 74, 85, 98, 113, 131, 151, 173, 191, 201, 220, 232, 256, 262]
Carte 160 : [9, 31, 39, 53, 76, 91, 102, 115, 129, 148, 168, 190, 208, 218, 237, 249, 258]
Carte 161 : [9, 32, 35, 56, 70, 93, 108, 119, 132, 145, 165, 185, 207, 210, 235, 254, 266]
Carte 162 : [10, 17, 42, 59, 76, 93, 110, 127, 144, 146, 163, 180, 197, 214, 231, 248, 265]
Carte 163 : [10, 18, 36, 57, 71, 94, 109, 120, 133, 145, 166, 186, 208, 211, 236, 255, 267]
Carte 164 : [10, 19, 44, 53, 74, 88, 111, 126, 137, 150, 161, 183, 203, 210, 228, 253, 272]
Carte 165 : [10, 20, 34, 61, 70, 91, 105, 128, 143, 154, 167, 177, 200, 220, 227, 245, 270]
Carte 166 : [10, 21, 47, 51, 78, 87, 108, 122, 130, 160, 171, 184, 193, 217, 237, 244, 262]
Carte 167 : [10, 22, 39, 64, 68, 95, 104, 125, 139, 147, 162, 188, 201, 209, 234, 254, 261]
Carte 168 : [10, 23, 38, 56, 66, 85, 112, 121, 142, 156, 164, 179, 205, 218, 225, 251, 271]
Carte 169 : [10, 24, 48, 55, 73, 83, 102, 114, 138, 159, 173, 181, 196, 222, 235, 241, 268]
Carte 170 : [10, 25, 45, 50, 72, 90, 100, 119, 131, 155, 176, 190, 198, 213, 239, 252, 257]
Carte 171 : [10, 26, 33, 62, 67, 89, 107, 117, 136, 148, 172, 178, 207, 215, 230, 256, 269]
Carte 172 : [10, 27, 46, 49, 79, 84, 106, 124, 134, 153, 165, 189, 195, 224, 232, 247, 258]
Carte 173 : [10, 28, 35, 63, 65, 96, 101, 123, 141, 151, 170, 182, 206, 212, 226, 249, 264]
Carte 174 : [10, 29, 41, 52, 80, 81, 98, 118, 140, 158, 168, 187, 199, 223, 229, 243, 266]
Carte 175 : [10, 30, 43, 58, 69, 82, 97, 115, 135, 157, 175, 185, 204, 216, 240, 246, 260]
Carte 176 : [10, 31, 37, 60, 75, 86, 99, 113, 132, 152, 174, 192, 202, 221, 233, 242, 263]
Carte 177 : [10, 32, 40, 54, 77, 92, 103, 116, 129, 149, 169, 191, 194, 219, 238, 250, 259]
Carte 178 : [11, 17, 43, 60, 77, 94, 111, 128, 130, 147, 164, 181, 198, 215, 232, 249, 266]
Carte 179 : [11, 18, 41, 55, 78, 93, 104, 117, 129, 150, 170, 192, 195, 220, 239, 251, 260]
Carte 180 : [11, 19, 37, 58, 72, 95, 110, 121, 134, 145, 167, 187, 194, 212, 237, 256, 268]
Carte 181 : [11, 20, 45, 54, 75, 89, 112, 127, 138, 151, 161, 184, 204, 211, 229, 254, 258]
Carte 182 : [11, 21, 35, 62, 71, 92, 106, 114, 144, 155, 168, 177, 201, 221, 228, 246, 271]
Carte 183 : [11, 22, 48, 52, 79, 88, 109, 123, 131, 146, 172, 185, 193, 218, 238, 245, 263]
Carte 184 : [11, 23, 40, 50, 69, 96, 105, 126, 140, 148, 163, 189, 202, 209, 235, 255, 262]
Carte 185 : [11, 24, 39, 57, 67, 86, 98, 122, 143, 157, 165, 180, 206, 219, 225, 252, 272]
Carte 186 : [11, 25, 34, 56, 74, 84, 103, 115, 139, 160, 174, 182, 197, 223, 236, 241, 269]
Carte 187 : [11, 26, 46, 51, 73, 91, 101, 120, 132, 156, 162, 191, 199, 214, 240, 253, 257]
Carte 188 : [11, 27, 33, 63, 68, 90, 108, 118, 137, 149, 173, 179, 208, 216, 231, 242, 270]
Carte 189 : [11, 28, 47, 49, 80, 85, 107, 125, 135, 154, 166, 190, 196, 210, 233, 248, 259]
Carte 190 : [11, 29, 36, 64, 65, 82, 102, 124, 142, 152, 171, 183, 207, 213, 227, 250, 265]
Carte 191 : [11, 30, 42, 53, 66, 81, 99, 119, 141, 159, 169, 188, 200, 224, 230, 244, 267]
Carte 192 : [11, 31, 44, 59, 70, 83, 97, 116, 136, 158, 176, 186, 205, 217, 226, 247, 261]
Carte 193 : [11, 32, 38, 61, 76, 87, 100, 113, 133, 153, 175, 178, 203, 222, 234, 243, 264]
Carte 194 : [12, 17, 44, 61, 78, 95, 112, 114, 131, 148, 165, 182, 199, 216, 233, 250, 267]
Carte 195 : [12, 18, 39, 62, 77, 88, 101, 113, 134, 154, 176, 179, 204, 223, 235, 244, 265]
Carte 196 : [12, 19, 42, 56, 79, 94, 105, 118, 129, 151, 171, 178, 196, 221, 240, 252, 261]
Carte 197 : [12, 20, 38, 59, 73, 96, 111, 122, 135, 145, 168, 188, 195, 213, 238, 242, 269]
Carte 198 : [12, 21, 46, 55, 76, 90, 98, 128, 139, 152, 161, 185, 205, 212, 230, 255, 259]
Carte 199 : [12, 22, 36, 63, 72, 93, 107, 115, 130, 156, 169, 177, 202, 222, 229, 247, 272]
Carte 200 : [12, 23, 34, 53, 80, 89, 110, 124, 132, 147, 173, 186, 193, 219, 239, 246, 264]
Carte 201 : [12, 24, 41, 51, 70, 82, 106, 127, 141, 149, 164, 190, 203, 209, 236, 256, 263]
Carte 202 : [12, 25, 40, 58, 68, 87, 99, 123, 144, 158, 166, 181, 207, 220, 225, 253, 258]
Carte 203 : [12, 26, 35, 57, 75, 85, 104, 116, 140, 146, 175, 183, 198, 224, 237, 241, 270]
Carte 204 : [12, 27, 47, 52, 74, 92, 102, 121, 133, 157, 163, 192, 200, 215, 226, 254, 257]
Carte 205 : [12, 28, 33, 64, 69, 91, 109, 119, 138, 150, 174, 180, 194, 217, 232, 243, 271]
Carte 206 : [12, 29, 48, 49, 66, 86, 108, 126, 136, 155, 167, 191, 197, 211, 234, 249, 260]
Carte 207 : [12, 30, 37, 50, 65, 83, 103, 125, 143, 153, 172, 184, 208, 214, 228, 251, 266]
Carte 208 : [12, 31, 43, 54, 67, 81, 100, 120, 142, 160, 170, 189, 201, 210, 231, 245, 268]
Carte 209 : [12, 32, 45, 60, 71, 84, 97, 117, 137, 159, 162, 187, 206, 218, 227, 248, 262]
Carte 210 : [13, 17, 45, 62, 79, 96, 98, 115, 132, 149, 166, 183, 200, 217, 234, 251, 268]
Carte 211 : [13, 18, 46, 61, 72, 85, 97, 118, 138, 160, 163, 188, 207, 219, 228, 249, 263]
Carte 212 : [13, 19, 40, 63, 78, 89, 102, 113, 135, 155, 162, 180, 205, 224, 236, 245, 266]
Carte 213 : [13, 20, 43, 57, 80, 95, 106, 119, 129, 152, 172, 179, 197, 222, 226, 253, 262]
Carte 214 : [13, 21, 39, 60, 74, 82, 112, 123, 136, 145, 169, 189, 196, 214, 239, 243, 270]
Carte 215 : [13, 22, 47, 56, 77, 91, 99, 114, 140, 153, 161, 186, 206, 213, 231, 256, 260]
Carte 216 : [13, 23, 37, 64, 73, 94, 108, 116, 131, 157, 170, 177, 203, 223, 230, 248, 258]
Carte 217 : [13, 24, 35, 54, 66, 90, 111, 125, 133, 148, 174, 187, 193, 220, 240, 247, 265]
Carte 218 : [13, 25, 42, 52, 71, 83, 107, 128, 142, 150, 165, 191, 204, 209, 237, 242, 264]
Carte 219 : [13, 26, 41, 59, 69, 88, 100, 124, 130, 159, 167, 182, 208, 221, 225, 254, 259]
Carte 220 : [13, 27, 36, 58, 76, 86, 105, 117, 141, 147, 176, 184, 199, 210, 238, 241, 271]
Carte 221 : [13, 28, 48, 53, 75, 93, 103, 122, 134, 158, 164, 178, 201, 216, 227, 255, 257]
Carte 222 : [13, 29, 33, 50, 70, 92, 110, 120, 139, 151, 175, 181, 195, 218, 233, 244, 272]
Carte 223 : [13, 30, 34, 49, 67, 87, 109, 127, 137, 156, 168, 192, 198, 212, 235, 250, 261]
Carte 224 : [13, 31, 38, 51, 65, 84, 104, 126, 144, 154, 173, 185, 194, 215, 229, 252, 267]
Carte 225 : [13, 32, 44, 55, 68, 81, 101, 121, 143, 146, 171, 190, 202, 211, 232, 246, 269]
Carte 226 : [14, 17, 46, 63, 80, 82, 99, 116, 133, 150, 167, 184, 201, 218, 235, 252, 269]
Carte 227 : [14, 18, 45, 56, 69, 81, 102, 122, 144, 147, 172, 191, 203, 212, 233, 247, 270]
Carte 228 : [14, 19, 47, 62, 73, 86, 97, 119, 139, 146, 164, 189, 208, 220, 229, 250, 264]
Carte 229 : [14, 20, 41, 64, 79, 90, 103, 113, 136, 156, 163, 181, 206, 210, 237, 246, 267]
Carte 230 : [14, 21, 44, 58, 66, 96, 107, 120, 129, 153, 173, 180, 198, 223, 227, 254, 263]
Carte 231 : [14, 22, 40, 61, 75, 83, 98, 124, 137, 145, 170, 190, 197, 215, 240, 244, 271]
Carte 232 : [14, 23, 48, 57, 78, 92, 100, 115, 141, 154, 161, 187, 207, 214, 232, 242, 261]
Carte 233 : [14, 24, 38, 50, 74, 95, 109, 117, 132, 158, 171, 177, 204, 224, 231, 249, 259]
Carte 234 : [14, 25, 36, 55, 67, 91, 112, 126, 134, 149, 175, 188, 193, 221, 226, 248, 266]
Carte 235 : [14, 26, 43, 53, 72, 84, 108, 114, 143, 151, 166, 192, 205, 209, 238, 243, 265]
Carte 236 : [14, 27, 42, 60, 70, 89, 101, 125, 131, 160, 168, 183, 194, 222, 225, 255, 260]
Carte 237 : [14, 28, 37, 59, 77, 87, 106, 118, 142, 148, 162, 185, 200, 211, 239, 241, 272]
Carte 238 : [14, 29, 34, 54, 76, 94, 104, 123, 135, 159, 165, 179, 202, 217, 228, 256, 257]
Carte 239 : [14, 30, 33, 51, 71, 93, 111, 121, 140, 152, 176, 182, 196, 219, 234, 245, 258]
Carte 240 : [14, 31, 35, 49, 68, 88, 110, 128, 138, 157, 169, 178, 199, 213, 236, 251, 262]
Carte 241 : [14, 32, 39, 52, 65, 85, 105, 127, 130, 155, 174, 186, 195, 216, 230, 253, 268]
Carte 242 : [15, 17, 47, 64, 66, 83, 100, 117, 134, 151, 168, 185, 202, 219, 236, 253, 270]
Carte 243 : [15, 18, 40, 53, 65, 86, 106, 128, 131, 156, 175, 187, 196, 217, 231, 254, 269]
Carte 244 : [15, 19, 46, 57, 70, 81, 103, 123, 130, 148, 173, 192, 204, 213, 234, 248, 271]
Carte 245 : [15, 20, 48, 63, 74, 87, 97, 120, 140, 147, 165, 190, 194, 221, 230, 251, 265]
Carte 246 : [15, 21, 42, 50, 80, 91, 104, 113, 137, 157, 164, 182, 207, 211, 238, 247, 268]
Carte 247 : [15, 22, 45, 59, 67, 82, 108, 121, 129, 154, 174, 181, 199, 224, 228, 255, 264]
Carte 248 : [15, 23, 41, 62, 76, 84, 99, 125, 138, 145, 171, 191, 198, 216, 226, 245, 272]
Carte 249 : [15, 24, 34, 58, 79, 93, 101, 116, 142, 155, 161, 188, 208, 215, 233, 243, 262]
Carte 250 : [15, 25, 39, 51, 75, 96, 110, 118, 133, 159, 172, 177, 205, 210, 232, 250, 260]
Carte 251 : [15, 26, 37, 56, 68, 92, 98, 127, 135, 150, 176, 189, 193, 222, 227, 249, 267]
Carte 252 : [15, 27, 44, 54, 73, 85, 109, 115, 144, 152, 167, 178, 206, 209, 239, 244, 266]
Carte 253 : [15, 28, 43, 61, 71, 90, 102, 126, 132, 146, 169, 184, 195, 223, 225, 256, 261]
Carte 254 : [15, 29, 38, 60, 78, 88, 107, 119, 143, 149, 163, 186, 201, 212, 240, 241, 258]
Carte 255 : [15, 30, 35, 55, 77, 95, 105, 124, 136, 160, 166, 180, 203, 218, 229, 242, 257]
Carte 256 : [15, 31, 33, 52, 72, 94, 112, 122, 141, 153, 162, 183, 197, 220, 235, 246, 259]
Carte 257 : [15, 32, 36, 49, 69, 89, 111, 114, 139, 158, 170, 179, 200, 214, 237, 252, 263]
Carte 258 : [16, 17, 48, 50, 67, 84, 101, 118, 135, 152, 169, 186, 203, 220, 237, 254, 271]
Carte 259 : [16, 18, 37, 49, 70, 90, 112, 115, 140, 159, 171, 180, 201, 215, 238, 253, 264]
Carte 260 : [16, 19, 41, 54, 65, 87, 107, 114, 132, 157, 176, 188, 197, 218, 232, 255, 270]
Carte 261 : [16, 20, 47, 58, 71, 81, 104, 124, 131, 149, 174, 178, 205, 214, 235, 249, 272]
Carte 262 : [16, 21, 34, 64, 75, 88, 97, 121, 141, 148, 166, 191, 195, 222, 231, 252, 266]
Carte 263 : [16, 22, 43, 51, 66, 92, 105, 113, 138, 158, 165, 183, 208, 212, 239, 248, 269]
Carte 264 : [16, 23, 46, 60, 68, 83, 109, 122, 129, 155, 175, 182, 200, 210, 229, 256, 265]
Carte 265 : [16, 24, 42, 63, 77, 85, 100, 126, 139, 145, 172, 192, 199, 217, 227, 246, 258]
Carte 266 : [16, 25, 35, 59, 80, 94, 102, 117, 143, 156, 161, 189, 194, 216, 234, 244, 263]
Carte 267 : [16, 26, 40, 52, 76, 82, 111, 119, 134, 160, 173, 177, 206, 211, 233, 251, 261]
Carte 268 : [16, 27, 38, 57, 69, 93, 99, 128, 136, 151, 162, 190, 193, 223, 228, 250, 268]
Carte 269 : [16, 28, 45, 55, 74, 86, 110, 116, 130, 153, 168, 179, 207, 209, 240, 245, 267]
Carte 270 : [16, 29, 44, 62, 72, 91, 103, 127, 133, 147, 170, 185, 196, 224, 225, 242, 262]
Carte 271 : [16, 30, 39, 61, 79, 89, 108, 120, 144, 150, 164, 187, 202, 213, 226, 241, 259]
Carte 272 : [16, 31, 36, 56, 78, 96, 106, 125, 137, 146, 167, 181, 204, 219, 230, 243, 257]
Carte 273 : [16, 32, 33, 53, 73, 95, 98, 123, 142, 154, 163, 184, 198, 221, 236, 247, 260]

Bon ca sert à rien, mais quand même j’aurais mal dormi sinon :-P

Jeremie dit:Il faut en plus trouver un polynome irréductible dans Z/pZ et de degré k, heureusement il y a des listes qui trainent sur internet. J'ai l'impression que ces polynômes sont utilisés en crypto (pour casser des clés ? en faire des nouvelles ? )
On travaille couramment avec des corps finis, et en info on aime tout particulièrement les F(2^k) qui s'implémentent efficacement avec des champs de bits.

bonjour

moi j’avais envie de creuser le sujet du dobble à 7 emplacements (pour lequel les algos précédents ne fonctionnent pas), donc j’ai fait un algo qui crée un jeu par recherche systématique: on commence avec la carte [0,1,2,3,4,5,6], puis on crée toutes les cartes possibles puis on ne les garde dans le jeu qui si elles ont un et un seul point commun avec chacune de celles qui s’y trouvent déjà.
je ne sais pas comment faire mieux; l’algo met un bonne nuit de calcul à former un jeu de 25 cartes qui, curieusement, n’utilisent que 40 symboles.
curieusement aussi, ces 40 symboles sont utilisés soit 4 soit 5 fois chacun.

voilà l’algo :

liste = [[0,1,2,3,4,5,6]]                       # liste initiale des cartes du jeu
c=[]

print (“début”)
print (liste[0])

for i in range (43):
    print(i)
    for j in range (i):
        for k in range (j):
            for l in range (k):
                for m in range (l) :
                    for n in range (m):
                        for o in range (n):                 # création de toutes les cartes possible (indice de 0 à 42)
                            c = [o,n,m,l,k,j,i]             # c est la carte en cours, on va la tester
                            val = 1                         # la carte est déclarée valable à priori
                            for a in range (len(liste)):    # on va tester c avec toutes les cartes du jeu            
                                occ = 0                     # nb d’occurences initiales avec la carte a
                                test = liste [a]
                                for x in range (7):
                                    for y in range (7):
                                        if c[x] == test[y]:
                                            occ = occ +1    # on calcule le total des occurences entre c et test
                                if occ != 1:                # et on invalide la carte en cours si différent de 1
                                    val = 0
                            if val == 1:
                                print (c)
                                liste.append(c)
                                
print (len(liste), " cartes")


et voici le jeu obtenu :

début
[0, 1, 2, 3, 4, 5, 6]
[0, 7, 8, 9, 10, 11, 12]
[1, 7, 13, 14, 15, 16, 17]
[2, 8, 13, 18, 19, 20, 21]
[3, 9, 14, 18, 22, 23, 24]
[4, 10, 15, 19, 22, 25, 26]
[5, 11, 16, 20, 23, 25, 27]
[6, 12, 17, 21, 24, 26, 27]
[6, 11, 15, 18, 28, 29, 30]
[5, 12, 14, 19, 28, 31, 32]
[4, 9, 17, 20, 29, 31, 33]
[3, 10, 16, 21, 30, 32, 33]
[2, 7, 24, 25, 30, 31, 34]
[1, 8, 23, 26, 29, 32, 34]
[0, 13, 22, 27, 28, 33, 34]
[2, 10, 17, 23, 28, 35, 36]
[5, 7, 21, 22, 29, 35, 37]
[0, 14, 20, 26, 30, 36, 37]
[1, 9, 19, 27, 30, 35, 38]
[3, 12, 13, 25, 29, 36, 38]
[4, 8, 16, 24, 28, 37, 38]
[6, 8, 14, 25, 33, 35, 39]
[4, 7, 18, 27, 32, 36, 39]
[3, 11, 17, 19, 34, 37, 39]
[0, 15, 21, 23, 31, 38, 39]

25  cartes

c’est quand même marrant qu’avec 7 emplacements on trouve moins de cartes qu’avec 6.

à suivre,
cordialement,
marc lemaitre




Passionnante lecture :slight_smile:

Zmarc, ton approche est intéressante.

Cependant, là comme ça je vois une limite peut être à ton algorithme : l’ordre de rajout des cartes dans le jeu.

Peut-être (et je dis bien peut-être), que si on teste les cartes dans un ordre différent (notamment utiliser plus de symboles différents dès le début), on peut monter un jeu à plus de cartes.

Je n’ai pas de démonstration précise à ce que j’avance mais je le souligne au cas où tu n’y avais pas pensé. Il faut que j’y réfléchisse plus pour être sûr de mon coup. Si tu es sûr du tiens, je ne suis pas contre une petite démo! 

En tout cas, c’est vachement intéressant! 

Post très intéressant qui va me pousser à me remettre à jour dans mes connaissances sur les corps finis. Merci à Zmarc de l’avoir remonté.

Pour ton approche zmarc, je me suis fait la même réflexion que pyromane. Il existe nécessairement une solution optimale (en nombre de cartes) mais rien ne dit qu’on l’obtient par construction en suivant l’ordre croissant des symboles. Il existe peut être une solution avec plus de cartes mais avec un procédé de construction beaucoup plus tordu. L’exemple donné plus haut pour le dobble à 4 éléments corrobore ceci : dans leur premier jet, les algorithmes de construction de lynkowski et Torenc n’aboutissaient pas à l’obtention d’un dobble à 21 cartes.
Peut être faudrait-il modifier ton code en ajoutant de l’aléatoire et répéter ceci un grand nombre de fois pour comparer la taille des différents dobble obtenus. Mais ceci nécessiterait en temps très long puisque ton algo a déjà pris toute la nuit pour aboutir à ton résultat.

J’ai tout relu , et  compris 10% de plus. A la prochaine ! :slight_smile:

Wow ! Vous êtes vachement balèzes !

Pour le fun (puisque le jeu est terminé et que les 2 millions de $ ne sont plus en jeux) vous devriez chercher la solution d’Eternity II !