(* 12-03 *)

(* Require XMLgen_MC.nb ver >=0.04 *)
SetDirectory[NotebookDirectory[]];
<<XMLgenMC.mx;
TTS[mt_]:=ToString[TeXForm[StandardForm[mt]]];
TOT[mt_]:=ToString[OneLineTeXForm[mt]];
TOTT[mt_]:=ToString[OneLineTeXForm[Transpose[mt]]];
TOC[mt_,c_]:=TOTT[{Transpose[mt][[c]]}];
TTD[r_]:=StringReplace[TT[r],"\\frac"->"\\dfrac"];
Rnz[m_]:=(RandomInteger[m]+1)*(2*RandomInteger[1]-1); (* \\pm 1,\pm2,...,\pm(m+1) *)
Rpos[m_]:=RandomInteger[m]+1; (* 1,2,...,m+1 *)
Rbtw[m_]:=RandomInteger[2m]-m;
TTC[A_,n_]:=TOTT[{(Transpose[A])[[n]]}];
Col[A_,n_]:=Transpose[{A[[Range[Length[A]],n]]}];
ColCat[CL_]:=Join@@@(Transpose@CL);
PtString[M_]:=StringReplace[ToString[M],{"{"->"(","}"->")"}];
Title="単位行列の定義と性質";
Numbering="abc";
GeneralFeedback="対角成分がすべての\\(1\\)の\\(n\\)次対角行列を\\(n\\)次単位行列といい, \\(E_n\\)や\\(I_n\\)で表す.";
GeneralFeedback=GeneralFeedback<>"対して, \\((i,j)\\)成分のみが\\(1\\)で他が\\(0\\)である行列を";
GeneralFeedback=GeneralFeedback<>"行列単位という.";
SELNUM=6;NUM=200;

(* Select matrices satisfying some mapping conditions *)
QtList={}; For[ct=1,ct≤500,ct++,
QtList=Append[QtList,RandomChoice[{2,2,3,3,3}]]];
(* QtList=DeleteDuplicates[QtList]; *)
QtList=RandomSample[QtList,NUM];Length[QtList]

QtextF="以下の行列のうち, 単位行列を選びなさい.";

CListF[mm_]:=Module[{Cn,fs,ret={}},
Cn=QtList[[mm]];fs="正解です.";
ret=Append[ret,{"\\("<>TOT[IdentityMatrix[2]]<>"\\)",fs}];
ret=Append[ret,{"\\("<>TOT[IdentityMatrix[3]]<>"\\)",fs}];
ret=Append[ret,{"\\("<>TOT[IdentityMatrix[4]]<>"\\)",fs}];
Return[RandomSample[ret,Cn]]];

ICListF[mm_]:=Module[{Cn,fs1,En,MA1,i,j,sz,ret={}},
Cn=QtList[[mm]];
(* E_{ij} *)
fs1="単位行列ではなく行列単位と言われるものです.";sz=RandomInteger[2]+2;
MA1=Table[Table[0,sz],sz];{i,j}=RandomSample[Range[sz],2];MA1[[i,j]]=1;
ret=Append[ret,{"\\("<>TOT[MA1]<>"\\)",fs1}];
(* \pm 1 *)
fs1="対角成分が\\(\\pm1\\)ではなく1である必要があります.";sz=RandomInteger[2]+2;
MA1=IdentityMatrix[sz];i=RandomChoice[Range[sz]];MA1[[i,i]]=-1;
ret=Append[ret,{"\\("<>TOT[MA1]<>"\\)",fs1}];
(* Perm. mat *)
fs1="置換行列と言われるものです.";sz=RandomInteger[2]+2;En=IdentityMatrix[sz];
{i,j}=RandomSample[Range[sz],2];
MA1=En;MA1[[j]]=En[[i]];MA1[[i]]=En[[j]];
ret=Append[ret,{"\\("<>TOT[MA1]<>"\\)",fs1}];
(* O *)
fs1="これは零行列です.";sz=RandomInteger[2]+2;
MA1=Table[Table[0,sz],sz];
ret=Append[ret,{"\\("<>TOT[MA1]<>"\\)",fs1}];
(* all 1 *)
fs1="全部の成分が\\(1\\)というわけではありません.";sz=RandomInteger[2]+2;
MA1=Table[Table[1,sz],sz];
ret=Append[ret,{"\\("<>TOT[MA1]<>"\\)",fs1}];
Return[RandomSample[ret,SELNUM-Cn]]];

QtextF[3]

QtList[[5]]

CListF[9]

ICListF[9]

GenerateMCxml[DFname[],"LA/12-03."<>Title<>"(MC1)",Title,NUM,"false",QtextF,CListF,ICListF]

Join[{a,b},{c,d}]

GCD[Flatten[MA[[2]]]]

DM=DiagonalMatrix[RandomSample[Join[Range[-4,-1],Range[2,5]],sz]]

DM

DM

s

Table[Table[0,3],3]