麥粒

麥粒

簡單

簡介

從前有一位聰明的僕人,他救了王子的性命。 國王承諾,只要僕人想得出來,他都會賞賜。 僕人知道國王熱愛西洋棋,便告訴國王,他想要一些麥粒。 在棋盤的第一格放一粒麥子,之後每一格的麥粒數量都是前一格的兩倍。

說明

計算棋盤上的麥粒數量。

棋盤有 64 個格子。 第 1 格有 1 粒麥子,第 2 格有 2 粒麥子,第 3 格有 4 粒麥子,依此類推,每格加倍。

撰寫程式碼來計算:

  • 指定格子上的麥粒數量
  • 棋盤上的麥粒總數

Euphoria 中的數字

在 Euphoria 中,atom 可以存放任何種類的數字,而子型別 integer 則專門用來表示整數。 在類 C 語言中,可以透過回傳一個無號 64 位元整數來解這道練習。

不過,Euphoria 的整數是有號的,而且_比機器字組少一個位元_,因此對這道練習來說太小了;相對地,atom 則可以容納更大的整數,具備所需的 64 位元精確度。

32 位元

Euphoria 有一個 32 位元的版本,它之所以還存在,是為了讓舊有應用程式在沒有 64 位元版本時,仍能繼續使用預先建置好的 32 位元 dll/so,或是因為這類函式庫的包裝層塞滿了寫死的 32 位元偏移量。 這個版本完全不足以解決這項任務,因為那些 atom 只有 53 位元的精確度。 如果你在本機解這道練習時卡住了,請確認你使用的是 64 位元的 Euphoria。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Euphoria Exercism

準備好開始 麥粒 了嗎?

註冊 Exercism,透過 64 個練習 和真人引導來學習並精通 Euphoria,全部免費。