(* 13_04 *)

(* 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);
RowCat[CL_]:=Join@@(CL);
PtString[M_]:=StringReplace[ToString[M],{"{"->"(","}"->")"}];
ai2tex[s_]:=StringReplace[TOT[s],Table["\\text{a"<>TOT[i]<>"}"->"{\\mathbf a}_"<>TOT[i],{i,1,5}]];
TpStr[L_]:="\\("<>TOT[L[[1]]]<>"\\times"<>TOT[L[[2]]]<>"\\)";
TpTpse[L_]:=If[L=={},{},{L[[2]],L[[1]]}];
PType[A_,B_]:=If[A=={}||B=={},Return[{}],
If[A[[2]]===B[[1]],Return[{A[[1]],B[[2]]}],Return[{}]]];
PTypeL[L_]:=Module[{ct,len,tmp},len=Length[L];
Which[len==0,Return[{}],len==1,Return[L[[1]]],
len==2,Return[PType[L[[1]],L[[2]]]],
True,tmp=L[[1]];For[ct=2,ct≤len,ct++,tmp=PType[tmp,L[[ct]]]];Return[tmp]]];
Title="正射影を表す行列";
SELNUM=6;NUM=200;

(* select pairs of matrices *)
QtList={}; For[ct=1,ct≤300,ct++,
Cn=RandomChoice[{2,3,3,3,4}];
QtList=Append[QtList,{Cn}]];
(* QtList=DeleteDuplicates[QtList]; *)
QtList=RandomSample[QtList,NUM];Length[QtList]

Clear[QtextF];QtextF[mm_]:=Module[{Cn},
{Cn}=QtList[[mm]];
Return["次の行列のうち, 平面における原点を通る直線への正射影を表す行列をすべて選べ."]];

CListF[mm_]:=Module[{Cn,a,b,r,v1,v2,E2,MA,fs,ret={}},
{Cn}=QtList[[mm]];fs="正解です.";
While[Length[ret]≤Cn,
a=RandomInteger[6]-3;b=Rnz[2];r=Sqrt[a^2+b^2];
v1={{a/r},{b/r}};v2={{b/r},{-a/r}};
MA=1/2*(ColCat[{v1,v2}]+IdentityMatrix[2]);
ret=Append[ret,{"\\(\\displaystyle"<>TOT[MA]<>"\\)",fs}];
ret=DeleteDuplicates[ret]];
MA={{0,0},{0,1}};
ret=Append[ret,{"\\(\\displaystyle"<>TOT[MA]<>"\\)",fs}];
Return[RandomSample[ret,Cn]]];

ICListF[mm_]:=Module[{Cn,v1,v2,MA,a,a1,b,b1,r,r1,fsL={},fs,ret={}},
{Cn}=QtList[[mm]];
fsL=Append[fsL,"基本ベクトルの像がどうなるか考えよう."];
fsL=Append[fsL,"これは回転になっているようです."];
fsL=Append[fsL,"正射影\\(=(\\text{対称変換}+\\text{恒等変換})/2\\)となっていることに注意しよう"];
fsL=Append[fsL,"2本の基本ベクトルの像の関係はどうあるべきか考えよう."];
{a,b}={RandomInteger[6]-3,Rnz[2]};r=Sqrt[a^2+b^2];
v1={{a/r},{b/r}};v2={{-b/r},{a/r}};MA=ColCat[{v1,v2}];
fs=fsL[[1]]<>fsL[[2]];
ret=Append[ret,{"\\(\\displaystyle"<>TOT[MA]<>"\\)",fs}];
{a,b}={Rnz[2],RandomInteger[6]-3};r=Abs[a]+Abs[b];
v1={{a/r},{b/r}};v2={{b/r},{-a/r}};
MA=(ColCat[{v1,v2}]+IdentityMatrix[2])/2;
fs=fsL[[1]]<>fsL[[3]];
ret=Append[ret,{"\\(\\displaystyle"<>TOT[MA]<>"\\)",fs}];
{a,b}={Rnz[3],Rnz[2]};r=Sqrt[a^2+b^2];
v1={{a/r},{b/r}};v2={{2*a/r},{3*b/r}};MA=ColCat[{v1,v2}];
fs=fsL[[1]]<>fsL[[4]];
ret=Append[ret,{"\\(\\displaystyle"<>TOT[MA]<>"\\)",fs}];
{a,b}={Rnz[3],Rnz[3]};r=Sqrt[a^2+b^2];v1={{a/r},{b/r}};
{a1,b1}={-b+Rnz[0],a+Rnz[0]};r1=Sqrt[Max[1,a1^2+b1^2]];
v2={{b1/r1},{-a1/r1}};MA=(ColCat[{v1,v2}]+IdentityMatrix[2])/2;
fs=fsL[[1]]<>fsL[[3]]<>fsL[[4]];
ret=Append[ret,{"\\(\\displaystyle"<>TOT[MA]<>"\\)",fs}];
Return[RandomSample[ret,SELNUM-Cn]]];

For[ct=1,ct≤200,ct++,QtextF[ct];CListF[ct];ICListF[ct]](* Error Check *)

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

ICListF[3]

Permutations[{1,2,3,4},{2}] /. Permutations[{1,2,3},{2}]Nothing

#->Nothing &/@ Permutations[{1,2,3},{2}]

sz=3;ToExpression[Table["a"<>TOT[j],{j,1,sz}]]

ColCat[{{{1,2},{2,3}},{{5},{7}}}]

RowCat[{{{1,2,3},{3,3,5}},{{4,4,4}}}]

Permutations[{1,2,3},{2}]

{1,2}@@{1,2,3,4,5}

? Apply

{a,b,c,d,e}[[{3,5}]]

?

StringJoin[{"a","c"}]

? Nothing