(* 09_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++,
V2={{Rnz[4]},{Rnz[4]}};
QtList=Append[QtList,{RandomInteger[1]+2,V2}];
QtList=DeleteDuplicates[QtList]];QtList=RandomSample[QtList,NUM];Length[QtList]

QtextF[mm_]:=Module[{Cn,V2},{Cn,V2}=QtList[[mm]];
Return["次のうち, 2次の実数ベクトルをすべて選びなさい."]];

Clear[x,y,z];

CListF[mm_]:=Module[{Cn,V2,Va,a1,a2,fs,ret={}},
{Cn,V2}=QtList[[mm]];fs="正解です.";
ret=Append[ret,{"\\("<>TOT[V2]<>"\\)",fs}];
a1=Rpos[2]+2;a2=a1+Rpos[2];
Va={{Rnz[3]*x^a1},{Rnz[3]*x^a2}};
ret=Append[ret,{"\\("<>TOT[Va]<>"\\)",fs<>"成分が関数などの文字式であっても構いません."}];
Va={{Rnz[2]*Pi},{E^Rnz[3]}};
ret=Append[ret,{"\\("<>TOT[Va]<>"\\)",fs<>"成分は実数であれば何でも構いません."}];
Va={{0},{0}};
ret=Append[ret,{"\\("<>TOT[Va]<>"\\)",fs<>"成分がすべて0のものは零ベクトルと呼ばれます."}];
Return[RandomSample[ret,Cn]]];

ICListF[mm_]:=Module[{Cn,ME,r,V2,Va,i,j,fs1,fs2,ret={}},{Cn,V2}=QtList[[mm]];
fs1="3次以上の数ベクトルの最初の2成分以外が0でも2次数ベクトルとは呼びません.";
fs2="実数ベクトルという場合は, 成分には複素数が入ってはいけません(複素数ベクトルと言われます).";
Va={{Rnz[3]+Rnz[3]*I},{Rnz[3]}};
ret=Append[ret,{"\\("<>TOT[Va]<>"\\)",fs1}];
Va={{Rnz[3]+Rnz[3]*I},{Rnz[3]},{0}};
ret=Append[ret,{"\\("<>TOT[Va]<>"\\)",fs1<>fs2}];
Va=Transpose[{{Rnz[3],Rnz[3],0}}];
ret=Append[ret,{"\\("<>TOT[Va]<>"\\)",fs2}];
Va=Transpose[{{Rnz[3],Rnz[3],0,0}}];
ret=Append[ret,{"\\("<>TOT[Va]<>"\\)",fs2}];
Return[RandomSample[ret,SELNUM-Cn]]];

ICListF[3]

GenerateMCxml[DFname[],"LA/09-01."<>Title<>"/MC-1",Title,NUM,"false",QtextF,CListF,ICListF]