穀物

穀物

中級

はじめに

むかしむかし、王子の命を救った賢い召使いがいました。 王様は、召使いが望むものなら何でも報酬として与えると約束しました。 王様がチェスを愛していることを知っていた召使いは、小麦の粒がほしいと王様に伝えました。 チェス盤の最初のマスに1粒、次のマスからはマスが進むごとに粒の数が2倍になるように、と。

説明

チェス盤の上にある小麦の粒の数を計算しましょう。

チェス盤には64のマスがあります。 1マス目には1粒、2マス目には2粒、3マス目には4粒、というように、マスが進むごとに2倍になっていきます。

次のものを計算するコードを書きましょう。

  • 指定したマスにある粒の数
  • チェス盤全体にある粒の数

整数の最大値

Vimのドキュメントには、次のように書かれています。

64ビットの数値が使われていると仮定すると(v:numbersizeを参照)、符号なしの数値は0x7fffffffffffffff、つまり9223372036854775807に切り詰められます。

言い換えると、Vim scriptでは2^63以上の数値を整数として表すことはできません。

この演習のテストには、64ビット整数を必要とするものがあります。しかし、これはVim scriptの整数サイズの制限を超えています。そのため、計算結果は、答えをIntegerとして表すのではなく、整数値を表す文字列と比較してテストされます。言語がそのまま扱える範囲を超える数値を使わずに、これを解くことはできるでしょうか?

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Vim script Exercism

穀物を始める準備はできましたか?

Exercismに登録すれば、89個の演習、そして本物の人間によるメンタリングとともに、Vim scriptを学んでマスターできます。すべて無料です。