xavier

132 Reputation

9 Badges

19 years, 78 days

MaplePrimes Activity


These are answers submitted by xavier

bonjour, j'ai crée la procédure ARRA sur maple 7 qui résoud ton probleme. on fait ARRA("ABA",r); (plus r est grand plus ca sera rapide) voici le code: sous0:=proc(l,a,n);l0:=[op(l),1];f1:=[[l[1]],d0(l,a)];if n=1 then for k from 2 to nops(l) do f1:=[sou(f1[2],l0,f1[1],k),d2(l0,f1[2],k,a)] od fi;end;d2:=(l,A,k,a)->if l[k+1]=a then A+1 elif l[k]=a then A+1 else A fi;sou:=(A,l,l1,k)->if A=1 then l1 else [op(l1),l[k]] fi;d0:=(l,a)->if l[2]=a then 1 else 0 fi;sous:=(l,a)->if l[1]=a then [seq(l[i],i=2..nops(l))] else op(1,sous0(l,a,1)) fi;soust:=proc(l,d,n);l1:=l;if n::numeric then for ki from 1 to nops(d) do l1:=sous(l1,d[ki]) od fi;end; CT:=proc(a,n);F:=ft0(n);if a=1 then [[n]] elif a=2 then F else for k from 1 to (a-2) do F:=[seq(seq([seq((F[j][i]),i=1..nops(F[j])-1),F[j][nops(F[j])][i],ft(F[j][nops(F[j])],F[j][nops(F[j])][i])],i=1..nops(F[j][nops(F[j])])),j=1..nops(F))] od fi;end;ft:=(l,i)->[seq(j,j=0..l[nops(l)]-i)];gt:=(l,n)->[seq([seq(l[i],i=1..nops(l)-1),l[nops(l)][i]],i=1..nops(l[nops(l)]))];ht:=(l,n)->if convert(l,`+`)=n then l fi;ht1:=(L,n)->seq(ht(L[i],n),i=1..nops(L));ht2:=(l,n)->ht1(gt(l,n),n);ht3:=(F,n)->[seq(ht2(F[i],n),i=1..nops(F))];ft0:=n->[seq([i,[seq(j,j=0..n-i)]],i=0..n)];CALC:=(a,n)->if a=1 then CT(a,n) else ht3(CT(a,n),n) fi; ter:=l->if [seq(member(l[i1],[0,1]),i1=1..nops(l))]=[seq(`true`,i1=1..nops(l))] then l fi;tere:=l->[seq(ter(l[io]),io=1..nops(l))];ch:=(x,y)-> if y=1 then x fi;ch1:=(l1,l2)->[seq(ch(l1[i1],l2[i1]),i1=1..nops(l1))];choix:=proc(l,n);li:=tere(CALC(nops(l),n));if 1=1 then [seq(ch1(l,li[io]),io=1..nops(li))] fi;end;g1:=l->[seq(op(l[io]),io=1..nops(l))];g2:=l->[seq(l[io],io=2..nops(l))];g3:=(l,ni)->[seq([seq([],ki=1..ni),op(op(io,l))],io=1..nops(l))];CHOIX1:=proc(l0,li);c1:=choix(l0,li[1]); l1:=[seq([(c1[i1])],i1=1..nops(c1))];if 1=1 then for ki from 2 to nops(li) do c1:=[seq(choix(soust((l0),g1(l1[i2]),1),li[ki]),i2=1..nops(l1))];l1:=[seq(seq([op(l1[i1]),c1[i1][ip]],ip=1..nops(c1[i1])),i1=1..nops(l1))] od fi;return(l1);end;CHOIX2:=proc(l0,li,n);if li[1]=0 then CHOIX2(l0,g2(li),n+1) else g3(CHOIX1(l0,li),n) fi;end;g4:=(l,n)->[seq([(op(op(io,l))),seq([],ki=1..n)],io=1..nops(l))]; per:=proc(l,n);s:=[seq([l[i]],i=1..nops(l))];if n<>1 then for ki from 1 to n-1 do a:=[seq(soust(l,s[i],1),i=1..nops(s))];s:=[seq(seq([op(s[i]),a[i][j]],j=1..nops(a[i])),i=1..nops(s))] od else s fi;end;pre:=proc(l);s:=[seq([l[1][i]],i=1..nops(l[1]))];if nops(l)<>1 then for ki from 2 to nops(l) do s:=[seq(seq([op(s[i]),l[ki][j]],j=1..nops(l[ki])),i=1..nops(s))] od else s fi;end;cor:=l->op(pre([seq(per(l[i],nops(l[i])),i=1..nops(l))]));ARR:=proc(l0,m,r);if (m mod r)<>0 then l:=CHOIX2(l0,[seq(r,i1=1..(m-(m mod r))/r),(m mod r)],0);else l:=CHOIX2(l0,[seq(r,i1=1..(m-(m mod r))/r)],0);fi;L:=seq(cor(l[i2]),i2=1..nops(l));end; desop:=L->convert({seq([seq(op(L[i][j]),j=1..nops(L[i]))],i=1..nops(L))},list);des:=l->[seq(cat(op(l[i])),i=1..nops(l))]; ARRA:=(l,r)->des([seq(op(desop([ARR(convert(l,list),k,r)])),k=1..length(l))]); ARRA("ABA",2); ["A", "B", "BA", "AA", "AB", "ABA", "BAA", "AAB"] tu peux uploader le worksheet nommé "arrangements" sur xavier
Bonjour George, J'ai exposé mon code du résolveur sur mon blog : http://cxavier.over-blog.com tu pourras en lire quelques passages pour t'aider. j'ai représenté le sudoku sous forme de nombre:ce sont les lignes mises les unes à la suite des autres de haut en bas.Pour résoudre on utilise la fonction SUDOKU ex:SUDOKU(000 etc 231); j'ai uploadé des grilles diaboliques:les AI sudoku pour tester nos procédures.(j'ai pas encore trouvé pire que ces sudokus,le AI etana est réputé le plus difficile au monde selon le web,mon résolveur les résoud toutes mais prends un temps fou pour le madonreika:42 min). J'ai pensé à faire des séquences de possibilités pour chaque case.si ma logique ne fonctionne pas,la procédure sudoku fixe les valeurs possibles dans les cases et tente de résoudre(f3).avec cette procédure on pourrait générer l'ensemble des solutions d'un sudoku ( on sauvegarde le sudoku trouvé dans une séquence quand err[ti]=0 mais je préfère faire un break; sinon ca prendrait beaucoup de temps.en particulier on pourrait avoir l'ensemble des solutions du sudoku vierge (000000 etc 000),on aurait ainsi tous les sudokus existants.) Bon courage.
bonjour,j'ai récemment créer un résolveur de sudoku sur maple 7. si tu veux en savoir plus contacte moi sur x.cormier@wanadoo.fr.
1 2 3 Page 3 of 3