A(n,k) est le nombre de façons de ranger un paquet de cartes comprenant 4 cartes indistingables (on ne tient pas compte des coumleurs) pour chacune des n valeurs, avec k doubles (double = deux cartes de même valeur se suivant). On calcule A(n,k) par récurrence sur n.
Code python :
from functools import cache
from math import comb, factorial
def conb(n,k) :
if n<0 : return 0
else : return comb(n,k)
@cache
def A(n,k) :
if n==0 and k==0 : return 1
elif k<0 : return 0
elif k>3*n : return 0
else :
perd4=A(n-1,k+4)*conb(k+4,4)
perd3=A(n-1,k+3)*conb(k+3,3)*(4*n-k-6)
perd2=A(n-1,k+2)*(conb(k+2,2)*conb(4*n-k-5,2)+ 3*conb(k+2,3))
perd1=A(n-1,k+1)*((k+1)*conb(4*n-k-4,3)+3*conb(k+1,2)*(4*n-k-4))
egal=A(n-1,k)*(conb(4*n-k-3,4)+ 3*conb(4*n-k-3,2)*k+ 3*conb(k,2))
gagne1=A(n-1,k-1)*3*(conb(4*n-k-2,3)+(k-1)*(4*n-k-2))
gagne2=A(n-1,k-2)*(3*conb(4*n-k-1,2)+k-2)
gagne3=A(n-1,k-3)*(4*n-k)
return perd4+perd3+perd2+perd1+egal+gagne1+gagne2+gagne3
On retrouve bien le nombre de permutations du paquet de cartes sans paire :
A(13,0)*factorial(4)**13
3668033946384704437729512814619767610579526911188666362431432294400
On peut même calculer l'espérance du nombre de paires dans une permutation :
total=factorial(52)//factorial(4)**13
sum(i*A(13,i) for i in range(40))/total
3.0
Je crois qu'il y a une raison simple pour trouver ce 3 tout rond (indépendamment du nombre de valeurs, d'ailleurs), mais je ne m'en souviens plus.