En exagérant et en faisant 7 boucles de 26 lettres chacune on obtient 8*031*810*176 tirages.
Tu ne peux pas tirer UUUUUUU car il n'y a que 6 U. Donc 26^7 est surévalué.
tirages.sans.blanc.awk :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| #!/usr/bin/awk -f
{
q[NR]=$2;
}
END{
for (l[1]=1;l[1]<=26;l[1]++)
{
n[l[1]]++;
if (n[l[1]]>q[l[1]])
{
n[l[1]]--;
continue;
}
for (l[2]=l[1];l[2]<=26;l[2]++)
{
n[l[2]]++;
if (n[l[2]]>q[l[2]])
{
n[l[2]]--;
continue;
}
for (l[3]=l[2];l[3]<=26;l[3]++)
{
n[l[3]]++;
if (n[l[3]]>q[l[3]])
{
n[l[3]]--;
continue;
}
for (l[4]=l[3];l[4]<=26;l[4]++)
{
n[l[4]]++;
if (n[l[4]]>q[l[4]])
{
n[l[4]]--;
continue;
}
for (l[5]=l[4];l[5]<=26;l[5]++)
{
n[l[5]]++;
if (n[l[5]]>q[l[5]])
{
n[l[5]]--;
continue;
}
for (l[6]=l[5];l[6]<=26;l[6]++)
{
n[l[6]]++;
if (n[l[6]]>q[l[6]])
{
n[l[6]]--;
continue;
}
for (l[7]=l[6];l[7]<=26;l[7]++)
{
n[l[7]]++;
if (n[l[7]]>q[l[7]])
{
n[l[7]]--;
continue;
}
for (ind=1;ind<=7;ind++)
printf("%c%s",64+l[ind],((ind==7)?"\n":" "));
n[l[7]]--;
}
n[l[6]]--;
}
n[l[5]]--;
}
n[l[4]]--;
}
n[l[3]]--;
}
n[l[2]]--;
}
n[l[1]]--;
}
} |
./tirages.sans.blanc.awk lettres.scrabble.frequences.txt > tirages.bruts.sans.blanc.txt
Mais je n'ose déjà pas imaginer le temps que ça prendrait avec des requêtes SQL.
Il faut se restreindre et ne compter que les quantités de lettres. les mots AH et HA du dictionnaire ont le même pouvoir éliminatoire sur les tirages. Donc, analyse ton dictionnaire, et compare le dictionnaire aux tirages de réglettes possibles. Si tu as testé "MU", ce n'est pas la peine de tester "MOU" et encore moins "MOULIN".
Partager