tag:blogger.com,1999:blog-9197115.post3134108173060627143..comments2023-12-04T01:08:41.914+09:00Comments on k16's note: TeX でソートk16http://www.blogger.com/profile/02349067627444091120noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-9197115.post-79255003437958978592011-09-11T22:03:36.961+09:002011-09-11T22:03:36.961+09:00初めまして。ネタ元のzrbabblerです。
>\n で値を表現する方法(\def\1{42} \...初めまして。ネタ元のzrbabblerです。<br /><br />>\n で値を表現する方法(\def\1{42} \def\2{314} ... といった具合)などが知られているようです<br />そんなに難しい話ではないですよ。<br />本投稿のプログラムの場合、A という配列を<br />\def\setA#1#2{% A[#1] := [#2] (代入)<br /> \expandafter\xdef\csname A/\number#1\endcsname{\number#2}}<br />\def\getA#1{% A[#1] (参照)<br /> \csname A/\number#1\endcsname}<br />で表した上で、<br />- \global\count(X)=(Y) を \setA{(X)}{(Y)} に直す<br />- その他の \count(X) という参照を \getA{(X)} に直す<br />- 配列以外の \countdef を普通の \newcount に直す<br />とすると、プログラムはそのまま正しく動いて、<br />かつ plain TeX や LaTeX を破壊しないようになります。<br /><br />ちなみに、私が最初に作った解答は、<br />関数型の挿入ソートからの翻案でした。zrbabblerhttp://d.hatena.ne.jp/zrbabbler/noreply@blogger.com