麦粒

麦粒

简单

简介

从前有一位聪明的仆人,他救下了一位王子的性命。 国王答应,仆人想要什么,就赏他什么。 仆人知道国王喜欢下国际象棋,便告诉国王,他想要麦粒。 棋盘的第一格放一粒麦粒,之后每一格的数量都翻一倍。

说明

计算棋盘上的小麦粒数。

棋盘有 64 个格子。 第 1 格有 1 粒小麦,第 2 格有 2 粒,第 3 格有 4 粒,以此类推,每格数量翻倍。

编写代码来计算:

  • 指定格子上的小麦粒数
  • 棋盘上的小麦总粒数

Euphoria 中的数字

在 Euphoria 中,atom可以存放任何类型的数字,而integer子类型则用于表示整数。 在类 C 语言中,可以通过返回一个无符号 64 位整数来解决这道练习。

不过,Euphoria 中的整数是有符号的,而且_比机器字长少一位_,因此对这道练习来说太小了;而 atom 则可以存放更大的整数,达到所需的 64 位精度。

32 位

Euphoria 有一个 32 位版本,它至今仍然存在,是为了让旧应用在以下情况下仍能继续使用预编译好的 32 位 dll/so:没有可用的 64 位版本,或者这类库的封装程序满是硬编码的 32 位偏移量。 这个版本完全不足以解决本任务,因为这类 atom 只有 53 位精度。 如果你在本地解决这道练习时遇到困难,请确认自己使用的是 64 位版本的 Euphoria。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Euphoria Exercism

准备好开始 麦粒 了吗?

注册 Exercism,借助 64 个练习 和真人导师指导,学习并掌握 Euphoria,全部免费。