{VERSION 4 0 "IBM INTEL LINUX22" "4.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "" 0 21 "" 0 1 0 0 0 1 0 0 0 0 2 0 0 0 0 1 } {CSTYLE "" -1 256 "" 1 36 0 0 0 0 0 0 2 0 0 0 0 0 0 0 }{PSTYLE "Normal " -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 4 1 0 1 0 2 2 0 1 }{PSTYLE "Title" -1 18 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 1 2 2 2 1 1 1 1 }3 1 0 0 12 12 1 0 1 0 2 2 19 1 }} {SECT 0 {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "restart: " }}}{EXCHG {PARA 18 "" 0 "" {TEXT 256 11 "sudoku (15)" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 6 "R\350gles" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "with(pldx):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 108 "if kernelopts(platform)=\"unix\" \+ \n then repert:= \"/home/douillet/docs/Cherche/sudoku/\"\n else repert := \"\" \nfi; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "kernelopt s(ASSERT=true);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 78 "with(Lin earAlgebra, Row, Column, Transpose); macro(ttt=Transpose, col=Column): " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "interface(labelling=fal se);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 457 "init:= proc(m_, n_)\nglobal m, n, N, rel, \+ mA, letters, letters0, tous;\nlocal elem;\n m,n := (m_, n_); N := m*n; \n letters:= \{$N+1..2*N\}; letters0:=[$1..N]; tous:= \{0\} union lett ers; \n elem:= proc(ii, jj) local ix, jx;\n ix:= iquo(ii - 1, m)*m; jx := iquo(jj - 1, n)*n;\n \{seq(seq(mA[i, j], i = ix + 1 .. ix + m), j \+ = jx + 1 .. jx + n), \n seq(mA[ii, j], j = 1 .. N),\n seq(mA[i, jj], i = 1 .. N)\} minus \{mA[ii, jj]\}\n end:\n rel := Matrix(N, N, elem) ;\n N\nend proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 390 "view:= proc() global m, n, N, ma, tous, letters0, ii, jj, ``;\nlocal elem;\n # called once : not to be optimized\nelem := proc(i, j)\n if nops(ma [i + m*ii, j + n*jj]) = 1\n then op(ma[i + m*ii, j + n*jj])\n else ma[i + m*ii, j + n*jj]\n fi\n end proc:\n [seq(seq(matrix(m, n, el em), jj = 0 .. m - 1), ii = 0 .. n - 1)];\nsubs(tous= ``, seq(N+j=lett ers0[j], j=1..N), matrix(n, m, %))\nend proc:" }{TEXT -1 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 234 "game:=proc(m,n) global N, m a, init, view, letters0; local fun;\ninit(m,n); \nfun:= proc(z) global tous; `if`(z=0, tous, \{z\}) end;\nsubs(seq(letters0[j]=N+j, j=1..N), [args][3..-1]); \nMatrix(matrix(N,N, %)); ma:= map(fun, %); view();\n end:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 576 "taboo:= proc(verb_ ) global ma, mA, N, rel, letters; \nlocal i,j,tmp, flag,verb;\nif narg s=1 then verb:=verb_ else verb:=NULL fi;\nflag:= false;\nfor i from 1 \+ to N do\nfor j from 1 to N do\nif nops(ma[i,j]) >1 then\n (eval@subs)( mA=ma, rel[i,j]): \n tmp:= letters minus map(op, remove(has,%,0));\n i f nops(tmp)=1 then \n flag:= true; ma[i,j]:= tmp; \n verb ('O'[i,j ]= op(tmp)); \n else ma[i,j]:= (tmp union \{0\}) intersect ma[i,j]; \n fi; \nfi;\nod;\nod;\nif flag=true then procname(args) \n else if mem ber(\{0\}, convert(map(op, convert(ma,listlist)), set)) then error \"c onflict\" fi;\nfi;\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 961 "totem:= proc(verb_) global ma, m, n, N, taboo, letters; \nlocal a a,bb,ii,jj,k,ici,tmp,verb,flag;\ntaboo(args); \nif nargs=1 then verb:= verb_ else verb:=NULL fi;\nflag:= false;\n\nfor aa from 0 to n-1 do fo r bb from 0 to m-1 do \n tmp:= [seq(seq([m*aa+i,n*bb+j,ma[m*aa+i,n*bb+ j]], j=1..n),i=1..m)];\n for k in letters do ici:= select(has, tmp,k); \n if nops(ici)=1 and has(ici,0) then ma[ici[1,1], ici[1,2]]:= \{k\}; \n verb('MB'[ici[1,1], ici[1,2]]= k); flag:=true;\n fi; od; \nod o d;\n\nfor ii to N do ; tmp:= [seq([j,ma[ii,j]],j=1..N)]; \n for k in l etters do ici:= select(has, tmp,k); \n if nops(ici)=1 and has(ici,0) \+ then ma[ii, ici[1,1]]:=\{k\}; \n verb('MR'[ii, ici[1,1]]= k); flag :=true; \n fi\n od;\nod;\n\nfor jj to N do ; tmp:= [seq([i,ma[i,jj]], i=1..N)]; \n for k in letters do ici:= select(has, tmp,k); \n if nops (ici)=1 and has(ici,0) then ma[ici[1,1], jj]:=\{k\}; \n verb('MC'[ ici[1,1], jj]= k); flag:=true; fi \n od;\nod;\n\nif flag=true then pro cname(args) \nfi;\nend: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 "joli0:= proc() global c j, tj: cj:=0; tj:=table(); end;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 109 "joli:= proc(uu) global cj,tj;\ncj:= cj+1; tj[cj]:=[ cj, op(lh s(uu)), op(0, lhs(uu)), letters0[rhs(uu)-N]] end;" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 201 "print_joli:= proc() local titre, ck; \ntitr e:= [`#`,R,C,why,`?`]: ck:= ceil(cj/4):\nseq(matrix([titre, seq(tj[i*c k+j],j=1..ck)]), i=0..2), matrix([titre, seq(tj[j],j=3*ck+1..cj), [``$ 5]$(4*ck-cj)]);\nend:" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 4 "Pick" }}{EXCHG {PARA 0 "" 0 "" {MPLTEXT 0 21 182 "pick:= proc(j,k) global ma; local li, nopli; li:= m a[j,k]; nopli:= nops(%); \nif nopli=1 then\nNULL else 1+ modp(rand(), \+ nopli-1); ma[j,k]:= \{ (li minus \{0\})[%] \}; totem(); %; fi; end:" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 329 "pivot:= proc() global ma, encore, how, N; local tmp, howw; \ntmp:= subs(1=NULL, [seq(seq(nops(ma [j,k]),j=1..N),k=1..N)]):\nencore:= nops(tmp); \nif encore=0 then retu rn 0,0 fi;\nhow:= min(op(tmp)); howw:= \{how, how+1\};\n[seq(seq(`if`( member(nops(ma[j,k]), howw) , [j,k], NULL),j=1..N),k=1..N)];\n%[1+ mod p(rand(), nops(%))]; op(%);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1072 "pick: = proc(j,k) global ma, ou, memo, essai, qqq, totem; \nlocal loc, li; \+ \nli:= ma[j,k];\nif nops(li) = 1 then return NULL fi; li:= li minus \{ 0\}; \nou:=ou+1; memo[ou]:= j,k, copy(ma); \nwhile nops(li) > 0 do \n 1+ modp(rand(), nops(li)); essai:= li[%]; ma[j,k]:= \{essai\};\n # pri nt(\"premier essai\", ou,j,k,li); \ntry: totem(); break;\ncatch: \n # \+ print(\"l'essai a \351chou\351\", ou, j,k,essai);\nif nops(li)=1 then \+ \n while ou>1 do ou:= ou-1;\n ma:= copy(memo[ou][3]); loc:= memo[ou][1 ..2]; \n ma[loc]:= memo[ou][3][loc] minus memo[ou+1][3][loc];\n try to tem(); ### cas d'erreur ????? \n # print(sprintf(\"ou=%a ; tout a \+ \351t\351 essay\351 en [%a, %a]\", ou+1, j,k));\n print(sprintf(\n \+ \"\351tape= %a, ou=%a ; reprise sur erreur en [%a, %a], valeurs= \+ %a\",\n qqq, ou, loc, ma[loc])) ;\n ou:= ou-1;\n return NULL; ## anciennement : error\n # else\n # print(sprintf(\"ou=%a ; tout a \351t\351 essay\351 en [%a, %a]\", ou+1, j,k));\n # print(sprint f(\"ou=%a ; ET tout a \351t\351 essay\351 en [%a, %a]\", ou, loc));\n catch: \n end try; \n od;\nfi;\nli:= li minus \{essai\}; ma:= copy( memo[ou][3]); \nend try; \nod; end:" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 5 "Build" }} {EXCHG {PARA 0 "" 0 "" {TEXT -1 82 "quoi= totem, taboo\nmb est une mat rice de probl\350me : ou bien tous ou bien singleton" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 480 "b uild:= proc(quoi_) global N, ma, mb, mc, quoi, tous, Entries;\nlocal v oir, lifo, essai;\nquoi:= quoi_;\nvoir:=\{seq(seq(`if`(mb[j,k]=tous,NU LL,[j,k]),k=1..N),j=1..N)\}; \nlifo:= ['azor','azor']:\nwhile voir <> \+ \{\} do\n essai:= voir[1+ modp(rand(), nops(voir))];\n lifo:= lifo, es sai: \n voir:= voir minus \{essai\}:\n mc[op(essai)]:= tous: ma:= copy (mc): quoi();\n if map(nops, \{Entries(ma)\}) <> \{1\} \n then mc[op( lifo[-1])]:= mb [op(lifo[-1])]; lifo:= lifo[1..-2] \n fi;\nod:\nnops([ lifo]);\nend: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 6 "M-mint" }}{EXCHG {PARA 0 "" 0 "" {MPLTEXT 0 21 61 "try err or;\ncatch: print( \"error_x\"); error \"coucou\";\nend try;" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 138 "unas sign('i', 'n', 'm', 'N', 'tag', 'ma', 'encore', 'how', 'ou', 'qqq');\n map(xmint, [init, game, view, taboo, totem, pivot, pick, build]);" }}} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 " " {TEXT -1 17 "N=2*2 (construct)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "init(2,2);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "letters0:= [A ,B,C,D]; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "# _seed := 19932298242 5;\n_seed := 925892981756; \n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 249 "ou:=0: ma:=Matrix(N,N,(j,k)->tous): mem_seed:= _seed; \nfor qqq to N*N do\n piv:= pivot(): \n # print(sprintf(\"etape= %a, ou= %a, en core= %a, how=%a, pivot= %a,%a\", qqq, ou, encore, how, piv));\n if en core = 0 then break else pick(piv); fi;\nod: view();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "mb:= copy(ma): cat(repert, \"sud_\" , m, \"_\", n, \".m\"); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "save m, n, N, letters0, tous, mb, mem_seed, %;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 17 "N=2*3 (construct)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "init(2,3);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "_seed := 925892981756; \nmem_seed:= _seed; " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 230 "ou:=0: ma:=Matrix(N,N,(j,k) ->tous):\nfor qqq to N*N do\n piv:= pivot(): \n # print(sprintf(\"etap e= %a, ou= %a, encore= %a, how=%a, pivot= %a,%a\", qqq, ou, encore, ho w, piv));\n if encore = 0 then break else pick(piv); fi;\nod: view(); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "mb:= copy(ma): cat(repe rt, \"sud_\", m, \"_\", n, \".m\"); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "save m, n, N, letters0, tous, mb, mem_seed, %;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 22 "Probl\350me (2, 3, taboo)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "init(2,3); cat(repert, \"sud_\", m, \"_\", n, \".m\"); read %; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "quoi:= taboo;\n" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "idents:= map(z->\{z\}, lette rs); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "mc:= copy(mb):\nvo ir:= \{seq(seq([j,k],j=1..N),k=1..N)\}:\nquer:= NULL;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 182 "while voir <> \{\} do\n essai:= vo ir[1+ modp(rand(), nops(voir))];\n quer:= quer, essai: # print(nops([q uer]));\n voir:= voir minus \{essai\}:\n mc[op(essai)]:= tous: ma:= co py(mc): quoi(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 166 " map(op,conver t(ma,listlist)): \n if nops(convert(%, set) minus idents) <> 0 \n the n mc[op(quer[-1])]:= \{mb [op(quer[-1])]\}; quer:= quer[1..-2] \n fi; \nod:\nnops([quer]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Probl\350m e" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ma:= copy(mc): view(); " }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "cat(repert, \"sud_\", m, \"_\", n, \+ \"_\", quoi, \".m\");" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "save m, n, N, letters0, tous, mem_seed, ma, mb, %;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Solution" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "ma:= copy(m c): joli0(): taboo(joli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 22 "Probl\350me (2, 3, totem)" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "init(2,3); cat(repert, \"sud _\", m, \"_\", n, \".m\"); read %;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "quoi:= totem;\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "idents:= map(z->\{z\}, letters); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "mc:= copy(mb):\nvoir:= \{seq(seq([j,k],j=1. .N),k=1..N)\}:\nquer:= NULL;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 182 "while voir <> \{\} do\n essai:= voir[1+ modp(rand(), nops(voir) )];\n quer:= quer, essai: # print(nops([quer]));\n voir:= voir minus \+ \{essai\}:\n mc[op(essai)]:= tous: ma:= copy(mc): quoi(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 166 " map(op,convert(ma,listlist)): \n if nops( convert(%, set) minus idents) <> 0 \n then mc[op(quer[-1])]:= \{mb [o p(quer[-1])]\}; quer:= quer[1..-2] \n fi;\nod:\nnops([quer]);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "ma:= copy(mc): taboo(); view ();" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Probl\350me" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 23 "ma:= copy(mc): view(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "cat(repert, \"sud_\", m, \"_\", n, \"_\", quoi, \".m \");" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "save m, n, N, letters0, tou s, mem_seed, ma, mb, %;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Solutio n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "convert(mc, listlist): map(op, subs(tous=\{0\}, %)): map(op, %): q:= [m,n,op(%)];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "cat(repert, \"jolipb/qq.txt\"); save q, %; " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "ma:= copy(mc): joli0(): tote m(joli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 17 "n=3*3 (construct)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "init(3,3);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 92 "# _s eed := 199322982425;\n# _seed := 925892981756;\n_seed := 512729478583; \nmem_seed:= _seed; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 250 "o u:=0: ma:=matrix(N,N,(j,k)->tous):\nfor qqq to N*N do\n piv:= pivot(): \n if encore = 0 then break else \n pick(piv);\n # print(sprintf(\" etape= %a, ou= %a, encore= %a, how=%a, pivot= %a,%a, val= %a\", qq q,ou,encore,how,piv,essai)); \n fi;\nod: view();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "mb:= copy(ma): cat(repert, \"sud_\", m, \"_\" , n, \".m\"); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "save m, n, N, let ters0, tous, mb, mem_seed, %;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 22 "Probl\350me (3, 3, ta boo)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "init(3,3); cat(reper t, \"sud_\", m, \"_\", n, \".m\"); read %;" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 14 "quoi:= taboo;\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "idents:= map(z->\{z\}, letters); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "mc:= copy(mb):\nvoir:= \{seq(seq([j,k],j=1. .N),k=1..N)\}:\nquer:= NULL;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 182 "while voir <> \{\} do\n essai:= voir[1+ modp(rand(), nops(voir) )];\n quer:= quer, essai: # print(nops([quer]));\n voir:= voir minus \+ \{essai\}:\n mc[op(essai)]:= tous: ma:= copy(mc): quoi(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 166 " map(op,convert(ma,listlist)): \n if nops( convert(%, set) minus idents) <> 0 \n then mc[op(quer[-1])]:= \{mb [o p(quer[-1])]\}; quer:= quer[1..-2] \n fi;\nod:\nnops([quer]);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Probl\350me" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ma:= copy(mc): view(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "cat(repert, \"sud_\", m, \"_\", n, \"_\", quoi, \".m \");" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "save m, n, N, letters0, tou s, mem_seed, ma, mb, %;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Solutio n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "ma:= copy(mc): joli0(): taboo( joli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 " " {TEXT -1 22 "Probl\350me (3, 3, totem)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "init(3,3); cat(repert, \"sud_\", m, \"_\", n, \".m\") ; read %;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "quoi:= totem; \n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "idents:= map(z->\{z\} , letters); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "mc:= copy(m b):\nvoir:= \{seq(seq([j,k],j=1..N),k=1..N)\}:\nquer:= NULL;" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 182 "while voir <> \{\} do\n ess ai:= voir[1+ modp(rand(), nops(voir))];\n quer:= quer, essai: # print( nops([quer]));\n voir:= voir minus \{essai\}:\n mc[op(essai)]:= tous: \+ ma:= copy(mc): quoi(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 166 " map(op ,convert(ma,listlist)): \n if nops(convert(%, set) minus idents) <> 0 \+ \n then mc[op(quer[-1])]:= \{mb [op(quer[-1])]\}; quer:= quer[1..-2] \+ \n fi;\nod:\nnops([quer]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Prob l\350me" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ma:= copy(mc): view(); \+ " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "cat(repert, \"sud_\", m, \"_\", n, \"_\", quoi, \".m\");" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "save m , n, N, letters0, tous, mem_seed, ma, mb, %;" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 8 "Solution" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "ma:= copy (mc): joli0(): totem(joli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 17 "n=3*4 (construct)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "init(3,4); letters0:=[$1..9,A,B,C]; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 92 "# _seed := 199322982425;\n# _s eed := 925892981756;\n_seed := 512729478583; \nmem_seed:= _seed; " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 250 "ou:=0: ma:=matrix(N,N,(j,k) ->tous):\nfor qqq to N*N do\n piv:= pivot():\n if encore = 0 then brea k else \n pick(piv);\n # print(sprintf(\"etape= %a, ou= %a, encore= %a, how=%a, pivot= %a,%a, val= %a\", qqq,ou,encore,how,piv,essai) ); \n fi;\nod: view();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "m b:= copy(ma): cat(repert, \"sud_\", m, \"_\", n, \".m\"); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "save m, n, N, letters0, tous, mb, mem_seed, %;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 22 "Probl\350me (3, 4, taboo)" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 56 "init(3,4); cat(repert, \"sud_\", m, \"_\", n, \+ \".m\"); read %;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "quoi:= \+ taboo;\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "idents:= map(z- >\{z\}, letters); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "mc:= \+ copy(mb):\nvoir:= \{seq(seq([j,k],j=1..N),k=1..N)\}:\nquer:= NULL;" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 181 "while voir <> \{\} do\n es sai:= voir[1+ modp(rand(), nops(voir))];\n quer:= quer, essai: # print (nops([quer]));\n voir:= voir minus \{essai\}:\n mc[op(essai)]:= tous: ma:= copy(mc): qui(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 165 " map(op ,convert(ma,listlist)): \n if nops(convert(%, set) minus idents) <> 0 \+ \n then mc[op(quer[-1])]:= \{mb [op(quer[-1])]\}; quer:= quer[1..-2] \+ \n fi;\nod\nnops([quer]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Probl \350me" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ma:= copy(mc): view(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "cat(repert, \"sud_\", m, \"_\", n , \"_\", quoi, \".m\");" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "save m, \+ n, N, letters0, tous, mem_seed, ma, mb, %;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Solution" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "ma:= copy(m c): joli0(): taboo(joli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 22 "Probl\350me (3, 4, totem)" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "init(3,4); cat(repert, \"sud _\", m, \"_\", n, \".m\"); read %;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "quoi:= totem;\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "idents:= map(z->\{z\}, letters); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "mc:= copy(mb):\nvoir:= \{seq(seq([j,k],j=1. .N),k=1..N)\}:\nquer:= NULL;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 182 "while voir <> \{\} do\n essai:= voir[1+ modp(rand(), nops(voir) )];\n quer:= quer, essai: # print(nops([quer]));\n voir:= voir minus \+ \{essai\}:\n mc[op(essai)]:= tous: ma:= copy(mc): quoi(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 166 " map(op,convert(ma,listlist)): \n if nops( convert(%, set) minus idents) <> 0 \n then mc[op(quer[-1])]:= \{mb [o p(quer[-1])]\}; quer:= quer[1..-2] \n fi;\nod:\nnops([quer]);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Probl\350me" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ma:= copy(mc): view(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "cat(repert, \"sud_\", m, \"_\", n, \"_\", quoi, \".m \");" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "save m, n, N, letters0, tou s, mem_seed, ma, mb, %;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Solutio n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "ma:= copy(mc): joli0(): quoi(j oli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 " " {TEXT -1 8 "Vero 3,3" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 135 "v ero55:= 9,0,6,4,0$5,8,0,4,9,0$4,1,0,7,0,0,5,0$4,0,9,0,5,0$5,0,2,1,0,0, 0,5,3,0,0$5,7,0,1,0,0,0,0,0,2,0,0,8,0,3,0$4,8,9,0,2,0$5,6,3,0,5;" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "game(3,3,vero55);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "joli0(): totem(joli); print_ joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "view();" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 8 "Vero 3,4" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 263 "vero70:= 0$4,5,0,0,7,2,11, 0$5,9,0,11,8,0,5,1,0,0,12,10,0,0,4,0,1,0$5,9,6,0$4,12,0,0,0,11,0,4,0$4 ,1,0,0,0,8,0,2,0,3,8,1,0,6,11,2,0,0,12,0,0,7,0,0,3,5,6,0,10,12,4,0,3,0 ,4,0,0,0,2,0$4,7,0,11,0,0,0,9,0$4,5,8,0$5,4,0,10,0,0,8,5,0,0,9,3,0,12, 7,0,4,0$5,6,10,2,0,0,3,0$4;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "nops(subs(0=NULL, [vero70]));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "game(3,4,vero70); mbb:= copy(ma):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "joli0(): totem(joli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "view();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 " interface(rtablesize=12);" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 16 "Pro bl\350me (totem)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "quoi:= t otem;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "idents:= map(z->\{ z\}, letters); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "gros:= g ame(3,4,vero70); mbb:= copy(ma):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 86 "voir:=\{seq(seq(`if`(mbb[j,k]=tous,NULL,[j,k]),k=1..N ),j=1..N)\}; \nnops(%); quer:= NULL:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 182 "while voir <> \{\} do\n essai:= voir[1+ modp(rand(), nops(voir))];\n quer:= quer, essai: # print(nops([quer]));\n voir:= v oir minus \{essai\}:\n mc[op(essai)]:= tous: ma:= copy(mc): quoi(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 165 " map(op,convert(ma,listlist)): \+ \n if nops(convert(%, set) minus idents) <> 0 \n then mc[op(quer[-1]) ]:= mbb [op(quer[-1])]; quer:= quer[1..-2] \n fi;\nod:\nnops([quer]); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "ma:= copy(mc): map(eval m,gros), view();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "map(eva lm,gros);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Probl\350me" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ma:= copy(mc): view(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "cat(repert, \"sud_\", m, \"_\", n, \"_\", quoi, \".m \");" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "save m, n, N, letters0, tou s, mem_seed, ma, mb, %;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 8 "Solutio n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "ma:= copy(mc): joli0(): taboo( joli); print_joli();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {MARK "6 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }