僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
なんとなくdc(1)。
seqもどきを実装してみた。
考えたとおりに書いただけでは、なかなかうまく動かない。試行錯誤の末、どうやら想定通りになった、という感じ。
スペース及びコメントあり(f_l_c.txt)と、なし(f_l_c_one.txt)とをコミットする。
まだ増分しかできてないけど。
$ echo 1.2 4.3 .6 | dc -f f_l_c_one.txt 1.2 1.8 2.4 3.0 3.6 4.2
$ cat f_l_c_one.txt ?sc?sl?sf[lfplc+sflfll!<C]sM[lMx]sClMx
"?" が複数あった場合に受け止める順序が想定と逆だった。
これがスタックか。
$ echo 4 | dc -f 1_to_last_one.txt 1 2 3 4
少し考えると、違うマクロを実行するマクロ、なんて
要らない。
条件分岐が真の場合に、自分自身を実行すればいいだけだ。
というわけで、少し短くなった。
$ cat f_l_c_one.txt ?sc?sl?sf[lfplc+sflfll!<M]sMlMx
ほんの少し短い
バージョンもできた。
レジスタのスタックを使って、レジスタを一つにしようかと思ったが
うまくできなかった。
$ cat 1_to_last_new_one.txt 0sr?sl[lr1+pdsrll>m]smlmx
echo 0 のとき、1しか返せないが、これを直すとかなり冗長になりそう...
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。