ez:=proc():print(`B(n,k) , MC(k), LtoM(L) , MCtex(k)`): end: B:=proc(n,k) option remember: if n>=2^k then RETURN(FAIL): fi: if k=1 then if n=0 then RETURN([0]): elif n=1 then RETURN([1]): else RETURN(FAIL): fi: fi: if n=0 then RETURN([0$k]): fi: if n>=2^(k-1) then [op(B(n-2^(k-1),k-1)),1]: else [op(B(n,k-1)),0]: fi: end: MC:=proc(k) local i,T,n,lu,j: for i from 1 to k do T[i]:=[]: od: for n from 0 to 2^k-1 do lu:=B(n,k): for j from 1 to nops(lu) do if lu[j]=1 then T[j]:=[op(T[j]),n]: fi: od: od: [seq(T[j],j=1..k)]: end: #LtoM(L): converts a list to matrix LtoM:=proc(L) local k,i1,j1: k:=sqrt(nops(L)): if not type(k,integer) then RETURN(FAIL): fi: [seq([seq(L[i1+(j1-1)*k],i1=1..k)],j1=1..k)]: end: MCtex:=proc(k) local gu,i: if k mod 2=0 then RETURN(FAIL): fi: gu:=MC(k): for i from 1 to nops(gu) do lprint(latex(matrix(LtoM(gu[i])))): od: end: MCtxt:=proc(k) local gu,i: if k mod 2=0 then RETURN(FAIL): fi: gu:=MC(k): for i from 1 to nops(gu) do lprint(matrix(LtoM(gu[i]))): od: end: