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

이 매크로는 다음을 수행합니다.

  • [매크로 시작
  • -처음 두 숫자를 빼고 스택에 다시 푸시합니다.
  • z1<r스택 크기를 스택과 1로 푸시한 다음 LESSTHAN을 비교하고 true인 경우 r매크로를 실행합니다.
  • ]sr매크로가 종료되고 레지스터 r에 저장됩니다.
  • z1<r테스트를 통해 스택에 요소가 포함되어 있는지 확인1 < Stack Size
  • p결과를 인쇄합니다.

  • `

관련 정보