(* 10_01 2次正方行列 *)

(* 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="2次正方行列";
SELNUM=6;NUM=100;

(* Select matrices satisfying some mapping conditions *)
QtList={}; For[ct=1,ct≤300,ct++,
M2={{Rnz[4],Rnz[4]},{Rnz[4],Rnz[4]}};
QtList=Append[QtList,{RandomInteger[1]+2,M2}];
QtList=DeleteDuplicates[QtList]];QtList=RandomSample[QtList,NUM];Length[QtList]

QtextF[mm_]:=Module[{Cn,M2},{Cn,M2}=QtList[[mm]];
Return["次のうち, 2次の正方行列をすべて選びなさい."]];

Clear[x,y,z];

CListF[mm_]:=Module[{Cn,M2,a1,a2,fs,ret={}},
{Cn,M2}=QtList[[mm]];fs="正解です.";
ret=Append[ret,{"\\("<>TOT[M2]<>"\\)",fs}];
a1=Rpos[2];a2=a1+Rpos[2];
M2={{Rnz[3]*x^a1,Rnz[3]*x^a2},{{Sin,Cos,Tan}[[Rpos[2]]][x],{Exp,Log}[[Rpos[1]]][1+x]}};
M2={{{1,0},{0,1}},{{0,1},{1,0}}}[[Rpos[1]]].M2;
ret=Append[ret,{"\\("<>TOT[M2]<>"\\)",fs<>"成分が関数などの文字式であっても構いません."}];
M2={{Rnz[2]*Pi,E^Rnz[3]},{Rnz[3]*I,Rnz[3]+Rnz[3]*I}};
M2={{{1,0},{0,1}},{{0,1},{1,0}}}[[Rpos[1]]].M2;
M2=M2.{{{1,0},{0,1}},{{0,1},{1,0}}}[[Rpos[1]]];
ret=Append[ret,{"\\("<>TOT[M2]<>"\\)",fs<>"単に2次正方行列というときは成分は複素数でも構いません."}];
Return[RandomSample[ret,Cn]]];

ICListF[mm_]:=Module[{Cn,ME,r,M2,M32,i,j,M23,Sp,fs1,fs2,fs3,ret={}},{Cn,M2}=QtList[[mm]];
fs1="2次の正方行列とは, 成分が\\(x\\)の2次式という意味ではありません.";
fs2="2次の正方行列は正方形の形に数字や文字式並んでいなければなりません. 欠落していてはいけません.";
fs3="2次の正方行列は行の数も列の数も2でなければなりません.";
Sp=" ";
ME=Table[Table[x^2+Rnz[3]*x+Rnz[3],{j,1,3}],{i,1,3}];
ret=Append[ret,{"\\("<>TOT[ME]<>"\\)",fs1}];
ME=M2;ME[[Rpos[1],Rpos[1]]]=Sp;
ret=Append[ret,{"\\("<>TOT[ME]<>"\\)",fs2}];
M23=Table[Table[Rnz[3],{j,1,3}],{i,2}];
ret=Append[ret,{"\\("<>TOT[M23]<>"\\)",fs3}];
M32=Table[Table[Rnz[3],{j,1,2}],{i,3}];
ret=Append[ret,{"\\("<>TOT[M32]<>"\\)",fs3}];
ME=M32;ME[[3,2]]=Sp;
ret=Append[ret,{"\\("<>TOT[ME]<>"\\)",fs2<>fs3}];
Return[RandomSample[ret,SELNUM-Cn]]];

ICListF[3]

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

ICListF[10]