옛날에 한 왕자의 목숨을 구한 지혜로운 신하가 있었어요. 왕은 신하가 원하는 것이 무엇이든 주겠다고 약속했어요. 왕이 체스를 좋아한다는 것을 알고, 신하는 밀알을 갖고 싶다고 왕에게 말했어요. 체스판의 첫 번째 칸에는 한 알, 그다음 칸부터는 알의 수를 두 배씩 늘려서요.
체스판에 놓인 밀알의 개수를 계산해요.
체스판은 64개의 칸으로 이루어져 있어요. 1번 칸에는 밀알이 한 개, 2번 칸에는 두 개, 3번 칸에는 네 개가 놓이고, 그다음부터는 칸마다 두 배씩 늘어나요.
다음을 계산하는 코드를 작성해 봐요:
Vim 문서에 따르면:
64비트 숫자를 사용한다고 가정하면(v:numbersize 참고) 부호 없는 숫자는 0x7fffffffffffffff 또는 9223372036854775807로 잘려요.
다시 말해, Vim script는 2^63 이상의 수를 정수로 표현할 수 없어요.
이 연습 문제의 일부 테스트는 64비트 정수를 필요로 하는데, 이는 Vim script의 정수 크기 제한을 넘어서요. 이런 제한 때문에 계산 결과는 답을 Integer로 표현하는 대신, 정수 값을 나타내는 문자열과 비교해 테스트해요. 언어가 직접 허용하는 범위보다 큰 수를 피해서 풀 수 있을까요?
Exercism에 가입하고 Vim script 트랙을 연습 문제 89개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.