穀物

穀物

初級

はじめに

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

説明

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

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

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

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

Euphoriaでの数値

Euphoriaでは、atomはあらゆる種類の数値を保持できます。サブタイプのintegerは、整数を表すためのものです。 C言語に似た言語では、符号なしの64ビット整数を返すことでこの演習を解くことができます。

ただし、Euphoriaの整数は符号付きで、マシンワードよりも1ビット小さいため、この演習には小さすぎます。一方、atomは必要な64ビットの精度でより大きな整数を保持できます。

32ビット

Euphoriaには32ビット版があり、今も存在しています。64ビット版が利用できないときにレガシーアプリケーションがビルド済みの32ビットdll/soを使い続けられるようにするため、あるいはそのようなもの用のラッパーがハードコードされた32ビットのオフセットで埋め尽くされているためです。 このバージョンは、この課題を解くにはまったく不十分です。そのバージョンのatomは53ビットの精度しか持たないからです。 ローカルでこの演習を解くのに苦労しているなら、64ビット版のEuphoriaを使っているか確認してください。

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

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

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