Chapter 9 练习 (Exercises)

  1. 定义一个函数,接受一个实数列表,若且唯若 (iff)它们是非递减 (nondecreasing)顺序时返回真。
  2. 定义一个函数,接受一个整数 cents 并返回四个值,将数字用 25- , 10- , 5- , 1- 来显示,使用最少数量的硬币。(译注: 25- 是 25 美分,以此类推)
  3. 一个遥远的星球住着两种生物, wigglies 与 wobblies 。 Wigglies 与 wobblies 唱歌一样厉害。每年都有一个比赛来选出十大最佳歌手。下面是过去十年的结果:
YEAR12345678910
WIGGLIES6564554565
WOBBLIES4546556545

写一个程序来模拟这样的比赛。你的结果实际上有建议委员会每年选出 10 个最佳歌手吗?

  1. 定义一个函数,接受 8 个表示二维空间中两个线段端点的实数,若线段没有相交,则返回假,或返回两个值表示相交点的 x 座标与 y 座标。
  2. 假设 f 是一个接受一个 (实数) 参数的函数,而 minmax 是有着不同正负号的非零实数,使得 f 对于参数 i 有一个根 (返回零)并满足 min < i < max 。定义一个函数,接受四个参数, f , min , max 以及 epsilon ,并返回一个 i 的近似值,准确至正负 epsilon 之内。
  3. Honer’s method 是一个有效率求出多项式的技巧。要找到 \(ax^3+bx^2+cx+d\) 你对 x(x(ax+b)+c)+d 求值。定义一个函数,接受一个或多个参数 ── x 的值伴随着 n 个实数,用来表示 (n-1) 次方的多项式的系数 ── 并用 Honer’s method 计算出多项式的值。

译注: Honer’s method on wiki

  1. 你的 Common Lisp 实现使用了几个位元来表示定长数?
  2. 你的 Common Lisp 实现提供几种不同的浮点数?

脚注

[1]format 取整显示时,它不保证会取成偶数或奇数。见 125 页 (译注: 7.4 节)。