DCを使用して数字の違いを取得するには?

DCを使用して数字の違いを取得するには?

入力する:

> printf 1\n\2\n3\n
1
2
3

希望の出力:

0
1
1

タイピングprintf 1\n\2\n3\n | dc -e '-p'出力は次のとおりです。

dc: stack empty
dc: stack empty

答え1

命令セット全体に直接パイプすることができますdc

printf "1 2 3 - - p" | dc

任意のスタックを減算するには、マクロを使用できます。

printf "%s [-z1<r]srz1<rp" "<insert numbers here>" | dc

例えば

printf "%s [-z1<r]srz1<rp" "100 5 2 1" | dc
96

このマクロは次のことを行います。

  • [マクロの開始
  • -最初の2つの数字を減算してスタックに戻します。
  • z1<rスタックサイズをスタックと1にプッシュしてからLESSTHANを比較し、trueの場合はrマクロを実行します。
  • ]srマクロが終了し、レジスタrに格納されます。
  • z1<rテストでスタックに要素が含まれていることを確認する1 < Stack Size
  • p結果を印刷します。

  • `

関連情報