1. 문제
Q : 2 ^ 2 ^ 3 을 공학용 계산기에 한 줄 입력(Linear IO) 했을 때 그 결과는?
a : (2^2)^3 = 4^3 = 2^6 = 64
b : 2^(2^(3)) = 2^8 = 256
2. 수학적 정답
어떻게 계산되는게 옳은 걸까요? 일단 수학적으로는 'b'가 옳습니다.
'예전에 이슈가 됐었던 48÷2(9+3) = ? 때와 달리 2^2^3 을 수학적으로 표현했을 때 가 될 것이 분명하기(=오해의 소지가 없기) 때문입니다. 그리고 에 대한 수학적 답은 256 뿐입니다.
참고
- https://en.wikipedia.org/wiki/Order_of_operations
- https://en.wikipedia.org/wiki/Operator_associativity
3. 계산기의 결과
그렇다면 계산기를 통해서도 같은 결과를 얻을 수 있을까요? 일단 한줄입력을 직접 해 보고 계산 결과를 확인해 보겠습니다. (대상 계산기는 처음 문제처럼 지수를 한줄로 표기할 수 있는 계산기로 한정하겠습니다.)
결과 a : fx-9860G, 윈도우10 기본 공학용 계산기
결과 b : TI-nspire, TI-89T, 구글 Web, 구글 스프레드시트, Wolfram Alpha, HP Prime
[TI-nspire]의 guidebook에 보면 아래의 내용이 나옵니다.
EOS™ (Equation Operating System) Hierarchy
Exponentiation
Exponentiation (^) and element-by-element exponentiation (.^) are evaluated from right to left. For example, the expression 2^3^2 is evaluated the same as 2^(3^2) to produce 512.
This is different from (2^3)^2, which is 64.
그리고 [fx-570 EX] 와 [fx-570 ES] 계산기에서는
^를 '한줄입력'방식으로 입력하면 하나의 문자인 것처럼 '^(' 가 입력됩니다. 여는 괄호 '('만 따로 지울 수가 없습니다. 따라서 2^2^3 꼴로 입력해볼 수가 없습니다.
개인적인 결론
1. 계산기는 도구일 뿐이므로, 이 문제도 계산기를 만든 사람과 사용자가 약속하기 나름이다.
2. 하지만 둘 중 하나를 선택할 수 있는 문제라면, 수학적 표기와 일치하는 순서인 역순(=오른쪽부터)으로 처리하는 것이 바람직하며, 반대의 경우라면 왜 그런 선택을 해야 했는지에 대한 설명이 있어야 한다.
3. 한줄 입력의 경우 오해가 생기지 않도록 '자동으로 괄호가 생기도록 하는 방식'은 직관적이며, 효율적이다.
참고 :
https://en.wikipedia.org/wiki/Caret
TI-NspireCAS_ReferenceGuide_EN (설명서)
프로그래밍 언어에 따른 차이
http://rosettacode.org/wiki/Exponentiation_order