トップ «前の日記(2020-03-07(Sat)) 最新 次の日記(2020-03-12(Thu))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2020-03-08(Sun) 降ってるはずだけど、今はまだ夜明け前

冗長なのは、よくわかってないから

なんとなく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しか返せないが、これを直すとかなり冗長になりそう...

減算はずっと簡単、かも

$ echo 5 | dc -e '?sl[llp1-dsl1!>r]srlrx'
5
4
3
2
1

リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。