21 printf(
"\nTMath::Permute simple test\n");
22 printf(
"==========================\n");
27 for(i=0; i<4; i++)
a[i]=i;
30 for(
Int_t i=0;i<4;printf(
"%c",
static_cast<char>(aa+
a[i++])));
34 printf(
"Found %d permutations = 4!\n",icount);
40 printf(
"\nTMath::Permute simple test with repetition\n");
41 printf(
"==========================================\n");
46 for(i=0; i<6; i++)
a[i]=(i+2)/2;
49 for(
Int_t i=0;i<5;printf(
"%c",
static_cast<char>(aa+
a[i++])));
53 printf(
"Found %d permutations = 5!/(2! 2!)\n",icount);
65 Int_t nine, three, neuf, trois;
67 printf(
"\nTMath::Permute fancy test\n");
68 printf(
"=========================\n");
69 printf(
"This is a program to calculate the solution to the following problem\n");
70 printf(
"Find the equivalence between letters and numbers so that\n\n");
71 printf(
" NINE*THREE = NEUF*TROIS\n\n");
72 for(
Int_t ii=0; ii<10; ii++)
a[ii]=ii;
74 nine=((
n*10+i)*10+
n)*10+
e;
75 neuf=((
n*10+
e)*10+u)*10+
f;
76 three=(((t*10+
h)*10+
r)*10+
e)*10+
e;
77 trois=(((t*10+
r)*10+o)*10+i)*10+
s;
78 if(nine*three==neuf*trois) {
79 printf(
"Solution found!\n\n");
80 printf(
"T=%d N=%d E=%d S=%d F=%d H=%d R=%d I=%d O=%d U=%d\n",t,
n,
e,
s,
f,
h,
r,i,o,u);
81 printf(
"NINE=%d THREE=%d NEUF=%d TROIS=%d\n",nine,three,neuf,trois);
82 printf(
"NINE*THREE = NEUF*TROIS = %d\n",neuf*trois);
86 printf(
"No solutions found -- something is wrong here!\n");
static constexpr double s
Bool_t Permute(Int_t n, Int_t *a)
Simple recursive algorithm to find the permutations of n natural numbers, not necessarily all distinc...