発言者: 田中徹
発言日: 2008 06/03 23:15
発言元: p0230a5.nigtnt01.ap.so-net.ne.jp
> 2桁(以上)の百ます計算についても考えてみたいのですが、>
> 可能でしょうか?
>
> 即ち、10〜99から10個取って並べる順列を生成したい、という>
> 事になります。
>
> 数を90個打つのは大変という事で、この場合簡略表記できる
> コマンドであると、助かります。
>
> (追加で、色々とすみません。)
EMedefappend の練習をかねて作ってみました。
# 今回の重複なしの乱数列取得は前回のもの(シャッフル)とは異なります。
\Count を 12 にすると 144 マス計算になります。
\Width はテーブル 1マスの幅になります。
# 同じテーブルを作成できないのが玉にキズ.....
\documentclass[a4j]{jarticle}
\usepackage{emathT}
\usepackage[papersize]{emathP}
\usepackage[perl]{emathRn}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\Count{10}%
\def\StartNum{10}%
\def\EndNum{99}%
\def\Width{3em}%
\def\arraystretch{2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\calcval[d]{(\EndNum)-(\StartNum)+1}\Dim%
\edef\WorkArrayN{\Dim}%
%%%% 列見出し用乱数取得 %%%%
\ISub\StartNum{1}\ArrayVal%
\Ifor*\Idx{1}{\Dim}\Do{%
\IAdd\ArrayVal{1}\ArrayVal%
\edefhairetu{WorkArray}{\Idx}{\ArrayVal}%
}%
\edef\ColArrayN{\Count}%
\edef\ArrayLen{\Dim}%
\Ifor*\Idx{1}{\Count}\Do{%
\Iransuuretu[\ArrayLen]{1}\Pos%
\IAdd\Pos{1}\Pos%
\edefhairetu{ColArray}{\Idx}{\hairetu{WorkArray}{\Pos}}%
\Ifor*\Cnt{\Pos}{\ArrayLen}\Do{%
\IAdd\Cnt{1}\NextCnt%
\edefhairetu{WorkArray}{\Cnt}{\hairetu{WorkArray}{\NextCnt}}%
}%
\ISub\ArrayLen{1}\ArrayLen%
}%
%%%% 行見出し用乱数取得 %%%%
\ISub\StartNum{1}\ArrayVal%
\Ifor*\Idx{1}{\Dim}\Do{%
\IAdd\ArrayVal{1}\ArrayVal%
\edefhairetu{WorkArray}{\Idx}{\ArrayVal}%
}%
\edef\RowArrayN{\Count}%
\edef\ArrayLen{\Dim}%
\Ifor*\Idx{1}{\Count}\Do{%
\Iransuuretu[\ArrayLen]{1}\Pos%
\IAdd\Pos{1}\Pos%
\edefhairetu{RowArray}{\Idx}{\hairetu{WorkArray}{\Pos}}%
\Ifor*\Cnt{\Pos}{\ArrayLen}\Do{%
\IAdd\Cnt{1}\NextCnt%
\edefhairetu{WorkArray}{\Cnt}{\hairetu{WorkArray}{\NextCnt}}%
}%
\ISub\ArrayLen{1}\ArrayLen%
}%
%%%%%%%%%%%%%%%%%%% Table イメージ Set %%%%%%%%%%%%%%%%%%%%%%%%%%
\EMedef\Header{}%
\EMedefappend\Header{\noexpand\sya(W=\Width)[r]}
\Ifor*\Cnt{1}{\Count}\Do{%
\EMedefappend\Header{&\noexpand\hairetu{ColArray}{\Cnt}}%
}%
\EMedefappend\Header{\noexpand\\\noexpand\hlineb}
\EMedef\Body{}%
\Ifor*\Cnt{1}{\Count}\Do{%
\EMedefappend\Body{\noexpand\hairetu{RowArray}{\Cnt}}%
\Ifor*\AmpCnt{1}{\Count}\Do{\EMedefappend\Body{&}}%
\EMedefappend\Body{\noexpand\\}
\ifnum\Cnt<\Count\EMedefappend\Body{\noexpand\hline}
\else\EMedefappend\Body{\noexpand\hlineb}\fi
}%
%%%%%%%%%%%%%%%%% Ifor ループによる Table 記述 %%%%%%%%%%%%%%%%%%
\ISub\Count{1}\DecCount%
$
\begin{array}{IC{\Width}IC{\Width}*\DecCount{|C{\Width}}I}\hlineb
\Header%
\Body%
\end{array}
$
\end{document}
▼関連発言
│
└◆7301:ランダムな順列の作り方 [st] 06/02 21:55
└◆7302:Re:ランダムな順列の作り方 [田中徹] 06/03 00:43
└◆7303:Re[2]:ランダムな順列の作り方 [飯島 徹] 06/03 00:54
└◆7304:Re[3]:ランダムな順列の作り方 [田中徹] 06/03 01:09
└◆7305:Re[4]:ランダムな順列の作り方 [飯島 徹] 06/03 01:23
└◆7306:Re[5]:ランダムな順列の作り方 [飯島 徹] 06/03 01:55
└◆7308:Re[6]:ランダムな順列の作り方 [st] 06/03 11:46
├◆7316:Re[7]:ランダムな順列の作り方 [田中徹] 06/03 23:15
│└◆7317:Re[8]:ランダムな順列の作り方 [飯島 徹] 06/04 03:51
│ └◆7318:Re[9]:ランダムな順列の作り方 [st] 06/04 23:24
│ └◆7319:Re[10]:ランダムな順列の作り方 [飯島 徹] 06/05 01:41
│ └◆7320:Re[11]:ランダムな順列の作り方 [st] 06/05 05:09
└◆7321:Re[7]:ランダムな順列の作り方 [石原 守] 06/05 10:14
└◆7323:Re[8]:ランダムな順列の作り方 [st] 06/05 21:47<-last