<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>翼若垂天之云</title>
	<atom:link href="http://cuitianyi.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cuitianyi.com</link>
	<description>Journey of seeking Truth, Love, and Strength.</description>
	<lastBuildDate>Tue, 27 Apr 2010 11:20:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>翻译练习：The untrained Mind</title>
		<link>http://cuitianyi.com/blog/%e7%bf%bb%e8%af%91%e7%bb%83%e4%b9%a0%ef%bc%9athe-untrained-mind/</link>
		<comments>http://cuitianyi.com/blog/%e7%bf%bb%e8%af%91%e7%bb%83%e4%b9%a0%ef%bc%9athe-untrained-mind/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 05:17:14 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[同文馆]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/?p=443</guid>
		<description><![CDATA[本文也发布在译言，译自 The untrained Mind。
原文：
People
1. Tend to believe what they want to believe
2. Tend to project their own biases or experiences upon situations
3. Tend to generalize from a specific event
4. Tend to get personally involved in the analysis of and issue and tend to let their feelings overcome a sense of objectivity.
5. Are not good listeners. [...]]]></description>
			<content:encoded><![CDATA[<p>本文也发布在<a href="http://article.yeeyan.org/view/103414/101829">译言</a>，译自 <a href="http://ischangepossible.blogspot.com/2007/07/untrained-mind.html">The untrained Mind</a>。</p>
<p>原文：</p>
<blockquote><p>People</p>
<p>1. Tend to believe what they want to believe</p>
<p>2. Tend to project their own biases or experiences upon situations</p>
<p>3. Tend to generalize from a specific event</p>
<p>4. Tend to get personally involved in the analysis of and issue and tend to let their feelings overcome a sense of objectivity.</p>
<p>5. Are not good listeners. They hear selectively. They often hear only what they want to hear.</p>
<p>6. Are eager to rationalize</p>
<p>7. Are often unable to distinguish what is relevant from what is irrelevant</p>
<p>8. Are easily diverted from the specific issue at hand.</p>
<p>9. Tend to oversimplify</p>
<p>10. Often judge from appearances. They observe something; misinterpret what they observe, and make terrible errors in judgment.</p>
<p>11. Often simply don’t know what they are talking about, especially in matters of general discussion. They rarely think before speaking</p>
<p>12. Rarely act according to a set of consistent standards. They tend to do whatever they want to do and then find whatever evidence will support their actions or their beliefs.</p>
<p>13. Often do not say what they mean and often do not mean what they say.</p>
<p>“Most people want to feel issues are simple rather than complex, want to have their prejudices confirmed, want to feel that they ‘belong’ with the implications that others do not, and need to pinpoint an enemy to blame for their frustrations.” J.A.C. Brown <em>Techniques of Persuasion</em>.</p>
<p>“The Untrained mind will usually take the path of least resistance.” Robert J. Gula <em>Nonsense</em></p>
<p>“The tendency to avoid challenge is so omnipresent in human beings that it can properly be considered a characteristic of human nature. But calling it natural does not mean it is essential or beneficial or unchangeable behavior. It is also natural to defecate in our pants and never brush our teeth. Yet we teach ourselves to do the unnatural until the unnatural becomes itself second nature.” M. Scott Peck <em>Road Less Traveled</em></p></blockquote>
<p>译文：</p>
<blockquote><p>人们──</p>
<p>1. 倾向于相信自己愿意相信的。</p>
<p>2. 倾向于将自己的偏见和经历强加于具体情况上。</p>
<p>3. 倾向于将特殊事件一般化。</p>
<p>4. 倾向于将自己个人牵扯到对事情的分析中，还倾向于让情绪支配对客观现实的感知。</p>
<p>5. 不是好的倾听者，有选择地听，常常只听到自己想要听的。</p>
<p>6. 热衷于使行为合理化。</p>
<p>7. 常常无法分清什么是有关的，什么是无关的。</p>
<p>8. 很容易分心，无法专注于手头的问题。</p>
<p>9. 倾向于过度简化。</p>
<p>10. 常常根据表面现象来判断。他们观察到一点点东西，又曲解了自己的观察，最终做出了严重错误的判断。</p>
<p>11. 常常根本就不知道自己在说什么，尤其在一般性的讨论中。他们很少先想再说。</p>
<p>12. 很少依据一组固定的标准来做事。他们随便想做什么就做什么，然后再找出随便什么能支持自己观点或行动的理由。</p>
<p>13. 常常言不由衷，辞不达意。</p>
<p>“大部分人都希望面对简单的东西，而不是复杂的东西，希望能让自己的成见得到证实，希望看到自己‘适合于’别人不适用的推论，还需要把自己的失意归咎于某个敌人才行。” J.A.C. Brown 的 Techniques of Persuasion 一书如是说。</p>
<p>“未经训练的头脑常常选择那条阻碍最小的路径。”Robert J. Gula 的 Nonsense 一书如是说。</p>
<p>“逃避挑战的倾向在人类中无所不在，完全可以看作是人的一种天性。但说它是天性并不意味着它就是必须的或有益的或无法改变的行为。把大便拉到裤子上，从来不刷牙，这也是天性。但我们教会了自己去做违反天性的事情，直到这种违反天性的行为变成了自己的第二天性。” M. Scott Peck 的 Road Less Traveled 一书如是说。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/%e7%bf%bb%e8%af%91%e7%bb%83%e4%b9%a0%ef%bc%9athe-untrained-mind/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Authentic Happiness 读书总结</title>
		<link>http://cuitianyi.com/blog/authentic-happiness-%e8%af%bb%e4%b9%a6%e6%80%bb%e7%bb%93/</link>
		<comments>http://cuitianyi.com/blog/authentic-happiness-%e8%af%bb%e4%b9%a6%e6%80%bb%e7%bb%93/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 18:27:34 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[生活志]]></category>
		<category><![CDATA[书籍]]></category>
		<category><![CDATA[心理学]]></category>
		<category><![CDATA[Kindle]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/?p=432</guid>
		<description><![CDATA[0. 缘起
始于3月31日的凌晨，止于4月6日的黄昏，我投入地阅读了这本名为 Authentic Happiness （台译《真实的快乐》）的书，它的主题是“积极心理学 (Positive Psychology)”（另译“正向心理学”或“正面心理学”，不过我更喜欢“积极”这种提法）。
我对心理学的了解开始于高中时阅读的《精神分析引论》《梦的解析》等弗洛伊德的著作，在读这本书以前也大体上局限于他创立的精神分析学派。可是后来我逐渐意识到，弗氏的学说固然有其历史意义（也许也蕴含有限的现实意义），但是把它作为一种指导个人生活的思想，却是我犯下的一个极大的错误。（我最近购买了《弗洛伊德批判》一书，打算藉此进一步清除心中的流毒，也许等我读完会专门撰文展开。）
最早了解到 Martin Seligman 这位学者以及他参与创立的“积极心理学”这一心理学分支，是在他以此为题的一次 TED 演讲中（顺便强烈推荐下 TED.com，绝对是开阔眼界提升思想的大宝库）。当即我就在 Kindle Store 上购买了他的书并放入 to-read 列表，不过直到最近完结掉其它好几本书以后才终于开始阅读，初读一两章便相见恨晚。这是一本让我感到思想被颠覆的书，这种感觉在我的读书历程中极其罕见。读的过程中，我在 Evernote 软件里用英文做了几十K的摘抄和笔记，以下是我整理那些笔记时用自己的话复述全书的读书总结。
（需要注明的是，本书第11、12两章，特别地讲了积极心理学在“Love”和“Raising Children”两个方面的应用，我在读的时候跳过了。因为这两方面的快乐，一个我当前足够满足，另一个则还为期遥远。为了看上去更有体系，话题相近的第10章“Work and Personal Satisfaction”也被略过了，也就是说完全没有总结 Positive Institution 这个话题。）
1. 基本问题
心理学的中心话题一度主要是关于如何治疗心理疾病 (mental illness) 的（这也正是弗洛伊德作为一名心理医师 (psychiatrist) 的切入角度），而积极心理学则聚焦于如何使正常人拥有更好的生活。事实上，即便从心理疾病的角度去考虑，积极心理学也提供了有效的预防手段。积极心理学期望的成果是快乐 (happiness or wel-being)，研究对象包括积极的情感 (positive emotions)、积极的特质 (positive traits) 和积极的组织 (positive institution)，这也正是本书的三个部分分别所讲述的。
什么是快乐呢？这个问题并不仅仅是简单的享乐主义理论 (simple hedonic theory) 能解释的。快乐也并不仅仅是快乐的感觉 (feelings)。简单的享乐是能引发快乐的“快捷方式” (shortcuts) ，但并不能带来真正的快乐。践行自己的优势和品德  (the exercise of strengths [...]]]></description>
			<content:encoded><![CDATA[<p><strong>0. 缘起</strong></p>
<p>始于3月31日的凌晨，止于4月6日的黄昏，我投入地阅读了这本名为 <a href="http://www.amazon.com/gp/product/0743222989/">Authentic Happiness</a> （台译《<a href="http://www.douban.com/subject/1342717/">真实的快乐</a>》）的书，它的主题是“积极心理学 (Positive Psychology)”（另译“正向心理学”或“正面心理学”，不过我更喜欢“积极”这种提法）。</p>
<p>我对心理学的了解开始于高中时阅读的《精神分析引论》《梦的解析》等弗洛伊德的著作，在读这本书以前也大体上局限于他创立的精神分析学派。可是后来我逐渐意识到，弗氏的学说固然有其历史意义（也许也蕴含有限的现实意义），但是把它作为一种指导个人生活的思想，却是我犯下的一个极大的错误。（我最近购买了《弗洛伊德批判》一书，打算藉此进一步清除心中的流毒，也许等我读完会专门撰文展开。）</p>
<p>最早了解到 Martin Seligman 这位学者以及他参与创立的“积极心理学”这一心理学分支，是在他<a href="http://www.ted.com/talks/lang/eng/martin_seligman_on_the_state_of_psychology.html">以此为题的一次 TED 演讲</a>中（顺便强烈推荐下 TED.com，绝对是开阔眼界提升思想的大宝库）。当即我就在 Kindle Store 上购买了他的书并放入 to-read 列表，不过直到最近完结掉其它好几本书以后才终于开始阅读，初读一两章便相见恨晚。这是一本让我感到思想被颠覆的书，这种感觉在我的读书历程中极其罕见。读的过程中，我在 Evernote 软件里用英文做了几十K的摘抄和笔记，以下是我整理那些笔记时用自己的话复述全书的读书总结。</p>
<p>（需要注明的是，本书第11、12两章，特别地讲了积极心理学在“Love”和“Raising Children”两个方面的应用，我在读的时候跳过了。因为这两方面的快乐，一个我当前足够满足，另一个则还为期遥远。为了看上去更有体系，话题相近的第10章“Work and Personal Satisfaction”也被略过了，也就是说完全没有总结 Positive Institution 这个话题。）</p>
<p><strong>1. 基本问题</strong></p>
<p>心理学的中心话题一度主要是关于如何治疗心理疾病 (mental illness) 的（这也正是弗洛伊德作为一名心理医师 (psychiatrist) 的切入角度），而积极心理学则聚焦于如何使正常人拥有更好的生活。事实上，即便从心理疾病的角度去考虑，积极心理学也提供了有效的预防手段。积极心理学期望的成果是快乐 (happiness or wel-being)，研究对象包括积极的情感 (positive emotions)、积极的特质 (positive traits) 和积极的组织 (positive institution)，这也正是本书的三个部分分别所讲述的。</p>
<p>什么是快乐呢？这个问题并不仅仅是简单的享乐主义理论 (simple hedonic theory) 能解释的。快乐也并不仅仅是快乐的感觉 (feelings)。简单的享乐是能引发快乐的“快捷方式” (shortcuts) ，但并不能带来真正的快乐。践行自己的优势和品德  (the exercise of strengths and virtues) 带来的快乐，才是真实的快乐。（本文以观点的总结为主，作者的这些观点在书中都有精采的论述和例证作为支撑，这里就不详述了。）</p>
<p>人为什么要寻求快乐呢？这也许是一个无需回答的问题，不过作者仍然在书中给出了为啥要快乐的科学证据：人的快乐程度与健康长寿、美满婚姻、事业成就都有显著的相关性 (correlation)，例如有一个很有趣的例子是，在毕业照中真笑 (Duchenne smile) 的人比假笑的人日后拥有更美满的婚姻。同时研究表明更多的快乐直接导致了 (caused) 更高的生产力 （productivity) 和收入。</p>
<p>另一个值得回答的问题是：为何进化过程中发展出了快乐呢？负面情绪和积极情绪又分别是怎样产生的呢？答案是：负面情绪对于赢得进化中非赢即输的胜负游戏 (win-loss game) 有帮助，例如猎物对捕食者的恐惧情绪；而积极情绪则促进了生物个体应用双赢的局面 (win-win encounter)，例如爱情的甜蜜和抚养下一代的满足感。换句话说，负面情绪和积极情绪分别标志着潜在的胜负游戏和双赢局面。</p>
<p>人的快乐能否通过人为干预而持久地 (lastingly) 提升呢？这个问题的答案并不显而易见。暂时地提升快乐水平是简单可行的（例如一份礼物，一场郊游，或一次高潮），但这种提升不能持续，例如研究表明彩票中大奖的人主观感受到的快乐程度会逐渐回落到原来的水平。积极心理学的研究认为，持久地提升人的快乐水平是可以做到的，并给出了如何做到的答案。</p>
<p><strong>2. 积极情绪</strong></p>
<p>持续的快乐水平 (enduring level of happiness) 由三个因素决定：个人可达到的快乐的区间 (set range)，外部环境 (circumstances)，以及你能自发控制的因素 (factors under your voluntary control)。研究表明你的快乐水平可能达到的最高上限和最低下限很大程度上是由基因决定的。外部环境因素也不同程度地决定了快乐与否，例如婚姻、丰富的社会生活 (social life)、所处组织 (institution) 的整体氛围等；自己主观认定的（而非客观衡量的）健康程度等因素也和快乐有很大相关性。可以自发控制的因素可分为三个方面：对过去的满足 (satisfaction about the past)，对未来的乐观 (optimism about the future)，和当下的快乐 (happiness in the present)。关于过去、现在和未来的三种积极情绪是不同的，且并不一定紧密相联。</p>
<p>提升对过去的满足情绪的唯一办法是重写 (rewrite) 自己的过去，手段包括：摒弃过去对于未来的决定论的思想体系；增强对于美好记忆的感恩之心；学会宽宥过去的错误。</p>
<p>对未来的乐观和悲观体现在两个方面：永久性 (permanence) 和普遍性 (pervasiveness)，分别对应于时间和空间。永久性是指相信过去的事件是持续的 (persistent)，导致事情发生的原因是由于个人的特质和能力。普遍性指对事情的发生做出普适的 (universal) 解释。于是，乐观和希望就是，对好事的来临做出永久和普适的解释，同时对不幸的事件找到暂时的 (temporary) 和专门的 (specific) 原因。</p>
<p>要知道自己以为确实的事情 (beliefs) 可能并非事实真相 (facts)，我们做出的关于我们自己的判断可能是错误的。克服悲观情绪需要有意识地和自己的悲观想法争辩，辨认出这些想法，可以想象他们是出自一个专门和自己作对的敌人之口。做自我争辩 (self-disputation) 的方法包括：用证据来证明悲观想法在事实上的错误；对令人悲观的事情找到其它的原因来解释，这种原因应该是可改变的 (changeable)、专门的且并非针对个人的；做出现实的推断 (realistic implications)，不偏向持续的或普适的解释；确定该想法是否有用，思索是否能够改变，如何做出改变，排除与此无关的无用的想法。有必要将有效的自我争辩的记录书写保存下来。</p>
<p>当下的快乐包括两个层面：享乐 (pleasures) 和满足 (gratifications)。享乐是指纯粹的感觉 (raw feels)，如陶醉忘我 (ecstasy)、惊险刺激 (thrill)、性高潮 (orgasm) 等。这种感觉是短暂易逝的 (evanescent)，而且极少或根本没有牵扯到思维。加强享乐感觉的方法有三种：避免习惯化 (habituation)，就是要让特定种类的享乐感觉之间相隔较长的时间；细细品味 (savoring)；留心观察 (mindfulness)。</p>
<p><strong>3. 心流中的满足</strong></p>
<p>享乐和满足之间的不同在于，享乐有关感觉和情绪 (senses and emotions)，而满足则侧重于展现个人的优势和品德 (strengths and virtues)。这种满足的状态表现为完全沉浸于心流 (flow) 中，专注 (immersion) 代替了意识 (couciousness)，情绪则完全不存在。这正是愉快的生活 (pleasant life) 与美好生活 (good life) 的分野。</p>
<p>心流 (flow) 的组成部分包括：有挑战性、需要技巧的事务；我们的专注；清晰的目标；即时的反馈 (feedback)；深入而应付自如的参与 (deep, effortless involvement)；控制感 (sense of control)；自我的感觉 (sense of self) 消失不见；时间停止了。──过程中并没有积极情绪的参与，心流的核心正是情绪与意识的缺失。</p>
<p>这里可以引入心灵资本 (psychological capital) 的概念：享乐是心灵资本的消费，而心流中的满足则是心灵资本的投资。享乐标志着生理满足的成就 (achievement of biological satiation)，而满足则标志心灵成长的成就 (achievement of psychological growth)。</p>
<p>那些抱着电视不放的人 (couch potato) 注视屏幕时的精神状态实际上普遍是轻度的抑郁 (mildly depressive)。当今社会抑郁 (depression) 的蔓延可解释为对快乐的“快捷方式”的过度依赖，这种自我专注 (self-absorption) 是心流和满足的反面，产生了一整代以自己一时感觉为先的自恋者 (a generation of narcissists whose major concern is with how they feel)。</p>
<p>为何人们宁愿选择享乐甚至不快 (displeasure) 也不选择满足的心境呢？因为享乐来得容易，而赢得满足是艰难的。满足产生心流，但这个过程需要技巧和努力，会遇到挑战，存在失败的可能性。</p>
<p>不要问“怎样才能快乐” (How can I be happy) 了，问自己“怎样才是美好的生活” (what is the good life) 吧。</p>
<p>（第七章讲gratifications的后半部分是本书重要的关节，也是给我启示最大的地方。这里的总结尚失全面，亟待补充。）</p>
<p><strong>4. 优势和品德</strong></p>
<p>对优势和品德 (strengths and virtues) 进行研究的目的是建立一个广泛认同的分类系统（类似于 DSM-III 之类精神疾病的分类系统）。入选分类的人格特质应该尽量普适 (universal)，在迥异的文化和历史的不同阶段中得到广泛的 (ubiquitous) 体现。</p>
<p>品德被分为六种：智慧和知识 (wisdom and knowledge)，勇气 (courage)，爱与人性 (love and humanity)，公义 (justice)，坚忍 (temperance)，超越 (transcendence)。每种品德都有若干实现的途径 (way to achieve)，这也就是不同的人格优势 (strengths of character)，分为24种。</p>
<p>（各个人格优势的名称主要根据本书作者的另一本书 Character Strengths and Virtues, A Handbook and Classification 进行表述，分类和遣词有不同但无本质差别。）</p>
<p>智慧方面的优势包括：1. 创造力 (Creativity)；2. 好奇心 (Curiosity)；3. 开放思维 (Open-Mindedness)；4. 热爱学习 (Love of Learning)；5. 洞察力 (Perspective)。</p>
<p>勇气方面的优势包括：6. 英勇 (Bravery)；7. 耐心 (Persistence)；8. 真诚 (Integrity)；9. 活力 (Vitality)。</p>
<p>人性方面的优势包括：10. 爱和被爱 (Love and Be Loved)；11. 仁慈 (Kindness)；12. 社交智慧 (Social Intelligence)。</p>
<p>公义方面的优势包括：13. 公民精神 (Citizenship)；14. 公正 (Fairness)；15. 领导才能 (Leadership)。</p>
<p>坚忍方面的优势包括：16. 宽恕和慈悲 (Forgiveness and Mercy)；17. 谦恭及虚心 (Modesty and Humility)；18. 小心谨慎 (Prudence)；19. 自控 (Self-Regulation)。</p>
<p>超越方面的优势包括：20. 对卓越事物的欣赏 (Appreciation of Beauty and Excellence)；21. 感恩 (Gratitude)；22. 希望 (Hope)；23. 幽默 (Humor)；24. 精神感悟 (Spirituality)。</p>
<p>个人的优势可作为薄弱之处 (weaknesses) 的缓冲 (buffer)。而尤为重要的是个人的显著优势 (signature strengths)，这些优势你能快速习得、灵活运用，这些优势给你真实拥有的感觉，运用这些优势给你带来的是兴致、热情甚至狂喜。</p>
<p>（我在 <a href="http://authentichappiness.org">authentichappiness.org</a> 上做了 VIA Survey of Character Strengths 的测试，结果的前五位分别是：Love of learning; Creativity, ingenuity, and originality; Capacity to love and be loved; Judgment, critical thinking, and open-mindedness; Curiosity and interest in the world.）</p>
<p>达成美好生活的公式就是：每天在生活的各种领域中运用自己的显著优势，以带来充沛的满足 (abundant gratification) 和真实的快乐 (authentic happiness)。</p>
<p><strong>5. 意义和目的</strong></p>
<p>拥有关于过去、未来和现在的积极情绪即是愉快的生活 (pleasant life)，能发挥出自己的显著优势即是美好的生活 (good life)，但这仍然未臻极致。拥有生活的意义和目的 (meaning and purpose)，才是有意义的生活 (meaningful life)，才是完满的生活 (full life)。</p>
<p>本书作者对于意义和目的的答案是神 (God)，脱胎于宗教却并不同于宗教中的意义。他的论述大致是这样的。犹太教-基督教传统 (Judeo-Christian tradition) 中的神具有四个主要属性：全知 (omniscience)，全能 (omnipotence)，至善 (goodness) 和创世 (creation of the universe)。然而这最后一个属性是可能带来矛盾的，如果神是世界的设计师和创造者，同时既善良仁慈又全知全能，那为何这个世界仍存在疾病、罪恶和暴行？各种理论上调和矛盾的努力不令人满意，于是创造世界这一层神的属性被作者放弃了。放弃这个属性之后，全知全能至善的神是否存在呢？还用刚才那个矛盾来说明会给出否定的答案，同时神的全知全能与个体的自由意志 (free will) 也是存在矛盾的。所以结论是，这样的神在过去和现在不存在，神只能存在于将来。作者认为，双赢的自然进程 (natural principle of win-win) 和持续增加的复杂性 (complexity) 的最后就是全知、全能和至善的可称为神的实体的产生。当然，这并不会在我们个人的生命进程中实现，甚至可能不会在我们种族的历史进程中实现。我们作为个体能做的就是增进自己的知识、力量和善念，成为这一达到全知、全能和至善的进程的一分子。</p>
<p>以上是作者书中给出的答案，但每个人关于生活的意义的答案可以各有不同。各种答案的共同点是：它关联到某种大于你自身的让你想投入其中的东西。这种东西可以是道，可以是仁，可以是兼爱，可以是圣杯，可以是理念世界，可以是共产主义，可以是几何的公理系统，可以是神学的三位一体，可以是数学的哥德巴赫猜想，可以是物理的大一统理论，既可以是对爱情的渴望对知识的追求对人类苦难不可遏制的同情，也可以是为天地立心为生民立命为往圣继绝学为万世开太平，甚至可以是把有限的生命投入到无限的为人民服务之中去，同样可以是让每一张办公桌和每一个家庭里都有一台装有我们软件的电脑……但你得有你的答案，得有你自己心中的那个大于你自身的你想要投入其中的东西。</p>
<p>以全书的最后一段作为结束，本想翻译一下又觉得功力不够难免辞不达意，于是原文引用如下：</p>
<p>The good life consists in deriving happiness by using your signature strengths every day in the main realms of living. The meaningful life adds one more component: using these same strengths to forward knowledge, power, or goodness. A life that does this is pregnant with meaning, and if God comes at the end, such a life is sacred.</p>
]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/authentic-happiness-%e8%af%bb%e4%b9%a6%e6%80%bb%e7%bb%93/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>这个寒假读的书及其它</title>
		<link>http://cuitianyi.com/blog/%e8%bf%99%e4%b8%aa%e5%af%92%e5%81%87%e8%af%bb%e7%9a%84%e4%b9%a6%e5%8f%8a%e5%85%b6%e5%ae%83/</link>
		<comments>http://cuitianyi.com/blog/%e8%bf%99%e4%b8%aa%e5%af%92%e5%81%87%e8%af%bb%e7%9a%84%e4%b9%a6%e5%8f%8a%e5%85%b6%e5%ae%83/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 04:52:43 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[生活志]]></category>
		<category><![CDATA[书籍]]></category>
		<category><![CDATA[Kindle]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/?p=429</guid>
		<description><![CDATA[今天，我回到了浙大，我把这算成寒假的结束。上个学期最后一门考试的前一天拿到了一台 Kindle DX，于是这个假期的所有书都是在这台 Kindle 上读的，大致按照读完的顺序如下：
周国平《尼采：在世纪的转折点上》
The Power of Less (Leo Babarta)
陈冠中《盛世》
《中国健康调查报告》
Outliers (Malcolm Gladwell)
Programming in Scala
A Rulebook for Arguments (Anthony Weston)
罗素《西方哲学史》卷一
四本中文书，四本英文书。有小说，有编程，有成功学，有哲学史，有健康指南，有批判思维。虽然数量不算多，不过我相信这是一段富有平衡性、充满营养的阅读体验。这些书读的时候多少都做了一些摘抄、提纲和感悟之类的文字，在此就对每本书做个简短的的读后总结吧。
周国平的《尼采》一书是在ASES读书会中了解到的。我喜欢周国平写的尼采，类似于我欣赏钱穆书中的孔子。钱穆以儒家信徒乃至道统传人的信念写《论语新解》，自然将论语的妙处诠释得淋漓尽致，读者也最能从中受益。（插一句广告，我一直坚定地认为钱穆《论语新解》是用来了解论语以及儒学的最好的入门读物，在此郑重推荐。）我无旁据地揣测，写此书时的周国平必自认为尼采的信徒（虽然不一定会公开承认这一点），而这个角度的介绍，是追求他山之石而非价值判断的我所乐于阅读的。
Leo Babarta 是我订阅了一段时间的英文 blogger，于是它的书 The Power of Less 的英文电子版躺在我硬盘里好久了。真正在 Kindle Store 里买了并从头到尾阅读一遍才如梦初醒，书中完全点明了我拖了那么长时间没抽出空来读它的症结。我非常庆幸能在寒假的开始以及一年的开始时读到这本书，其中的精神整个改变了我的寒假计划，我想也会改变我接下来一年的安排。这本书好像也刚出了中文版，强烈推荐给每个像我一样对“more”有着不懈追求的人。
《盛世》这本书我看的是 Twitter 上分享的陈冠中先生亲自校对和分享的盗版PDF。依我的理解，它从纯粹文学的角度看不算是第一流的小说艺术。对其思想性不评价，主要是因为觉得自己没那个能耐去评价吧。
会去看《中国健康调查报告》这本书是因为有践行书中建议的素食饮食习惯的朋友的推荐。读之前特意在 Google Scholar 里输入了作者的名字，发现确实是个学术大牛，才放心地读了下去。我承认书里的论据和结论都是非常有说服力的。这促使我在过年前的某一天中午对抢我的Kindle看了这书的一部分的我妈说，今天中午吃一顿素食吧。这顿素食带来的后果是我在几个小时之后窜到厨房里对正在准备晚餐的我妈大声喊：“我要吃肉！我要吃肉！”于是这本差不多是素食主义者的圣经的书遇上我这个打小无肉不欢的家伙就完全没起任何作用。嗯……应该说这本书还是带来了一些让我在四十岁或者更老的时候转向素食主义的可能性，至于现在就算了吧……
Malcolm Gladwell 写的 Outliers 一书的副标题是 The Story of Success，最初是在李笑来老师的blog上听说此书的。这本书论证讲述了现实世界中的事业成功被哪些因素左右，并得出了一些有悖于常识却又有说服力的结论。中文译本的书名是叫《异类》，推荐给每个希望了解并达到事业成功的人。
假期里读的唯一一本跟我自己的专业直接相关的书是 Programming in Scala，是因为最近要用到而读的。作为一本编程语言的入门书，它是中规中矩的。至于 Scala 语言本身，我本来想好好写一段技术评论，不过眼界和经验所限，还是不写出来误导人了吧。总之，我的结论是，Scala 绝对大有可为。
会在 Kindle Store 上买了 A Rulebook for [...]]]></description>
			<content:encoded><![CDATA[<p>今天，我回到了浙大，我把这算成寒假的结束。上个学期最后一门考试的前一天拿到了一台 Kindle DX，于是这个假期的所有书都是在这台 Kindle 上读的，大致按照读完的顺序如下：</p>
<p>周国平《尼采：在世纪的转折点上》<br />
The Power of Less (Leo Babarta)<br />
陈冠中《盛世》<br />
《中国健康调查报告》<br />
Outliers (Malcolm Gladwell)<br />
Programming in Scala<br />
A Rulebook for Arguments (Anthony Weston)<br />
罗素《西方哲学史》卷一</p>
<p>四本中文书，四本英文书。有小说，有编程，有成功学，有哲学史，有健康指南，有批判思维。虽然数量不算多，不过我相信这是一段富有平衡性、充满营养的阅读体验。这些书读的时候多少都做了一些摘抄、提纲和感悟之类的文字，在此就对每本书做个简短的的读后总结吧。</p>
<p>周国平的《尼采》一书是在ASES读书会中了解到的。我喜欢周国平写的尼采，类似于我欣赏钱穆书中的孔子。钱穆以儒家信徒乃至道统传人的信念写《论语新解》，自然将论语的妙处诠释得淋漓尽致，读者也最能从中受益。（插一句广告，我一直坚定地认为钱穆《论语新解》是用来了解论语以及儒学的最好的入门读物，在此郑重推荐。）我无旁据地揣测，写此书时的周国平必自认为尼采的信徒（虽然不一定会公开承认这一点），而这个角度的介绍，是追求他山之石而非价值判断的我所乐于阅读的。</p>
<p>Leo Babarta 是我订阅了一段时间的英文 blogger，于是它的书 The Power of Less 的英文电子版躺在我硬盘里好久了。真正在 Kindle Store 里买了并从头到尾阅读一遍才如梦初醒，书中完全点明了我拖了那么长时间没抽出空来读它的症结。我非常庆幸能在寒假的开始以及一年的开始时读到这本书，其中的精神整个改变了我的寒假计划，我想也会改变我接下来一年的安排。这本书好像也刚出了中文版，强烈推荐给每个像我一样对“more”有着不懈追求的人。</p>
<p>《盛世》这本书我看的是 Twitter 上分享的陈冠中先生亲自校对和分享的盗版PDF。依我的理解，它从纯粹文学的角度看不算是第一流的小说艺术。对其思想性不评价，主要是因为觉得自己没那个能耐去评价吧。</p>
<p>会去看《中国健康调查报告》这本书是因为有践行书中建议的素食饮食习惯的朋友的推荐。读之前特意在 Google Scholar 里输入了作者的名字，发现确实是个学术大牛，才放心地读了下去。我承认书里的论据和结论都是非常有说服力的。这促使我在过年前的某一天中午对抢我的Kindle看了这书的一部分的我妈说，今天中午吃一顿素食吧。这顿素食带来的后果是我在几个小时之后窜到厨房里对正在准备晚餐的我妈大声喊：“我要吃肉！我要吃肉！”于是这本差不多是素食主义者的圣经的书遇上我这个打小无肉不欢的家伙就完全没起任何作用。嗯……应该说这本书还是带来了一些让我在四十岁或者更老的时候转向素食主义的可能性，至于现在就算了吧……</p>
<p>Malcolm Gladwell 写的 Outliers 一书的副标题是 The Story of Success，最初是在李笑来老师的blog上听说此书的。这本书论证讲述了现实世界中的事业成功被哪些因素左右，并得出了一些有悖于常识却又有说服力的结论。中文译本的书名是叫《异类》，推荐给每个希望了解并达到事业成功的人。</p>
<p>假期里读的唯一一本跟我自己的专业直接相关的书是 Programming in Scala，是因为最近要用到而读的。作为一本编程语言的入门书，它是中规中矩的。至于 Scala 语言本身，我本来想好好写一段技术评论，不过眼界和经验所限，还是不写出来误导人了吧。总之，我的结论是，Scala 绝对大有可为。</p>
<p>会在 Kindle Store 上买了 A Rulebook for Arguments 这本书来读，最初的动力是打算在了解和学习 critical thinking 这个领域内的知识。至于为什么在卷帙浩繁中选了这本作为开始，我也记不清楚了……不过读完了以后意识到这个选择真是如此幸运啊。讲得深入浅出精炼透彻不说，书最后的 Resources 一节全面的介绍了这个领域的各个方面以及相关推荐书目。非常感激作者的用心。这本书我打五颗星。</p>
<p>罗素《西方哲学史》我从假期的一开始就着手读了，一直作为我读英文书编程书之类读累了的调剂，读得断断续续，直到在回杭州的火车上才最终读完题为“古代哲学”的第一卷，主要内容是古希腊哲学。我这种消遣的读法实在没记住什么东西，只是觉得古希腊的文化真是光辉灿烂，那种感觉跟我高中和大一时泛读诸子差不多，就是发现了一座宝藏。接下来还有“天主教哲学”和“近代哲学”两卷要读，我的计划是还这样泛读过去，然后根据兴趣和需要再选一些章节来精读吧。</p>
<p>写到最后想起来，还读了一本叫 Know Can Do! （中文译本《知道做到》）的英文小书。我的鉴定是这是本在书店里翻翻目录及每章的最后一页即可放下的书。算上或者不算上它对我寒假读书的价值几无影响。</p>
<p>然后列下我正在看还没看完的书单：</p>
<p>罗素《西方哲学史》还差两卷要看。<br />
The Elements of Style (Fourth Edition) 刚刚开始看。这本英语写作方面的绝对经典当然是不能错过的。希望它也能在 critical thinking 的领域有所助益。<br />
The Definitive Guide to Lift 是手头的项目所需要尽快看完的。<br />
The Now Habit (Neil A. Fiore) 是讲拖延症的权威著作。以前读过一次，读到一半就由为书中所载的顽疾本身所累半途而废了。现在重新拿起细读，但进展不快，需要加油。</p>
<p>我下一步要读的书目包括：</p>
<p>Authentic Happiness (Martin Seligman)，积极心理学的代表作 。我高中的时候读过弗洛伊德在精神分析上的一些代表作，深以为然，以其信徒自居。直到最近才警醒过来，且不论弗洛伊德学说本身的价值，把他的学说当成一种精神指南来信奉绝对是害大于益的。于是我打算阅读对个人发展更有建设性作用的积极心理学方面的著作，有必要的话还会读一本《弗洛伊德批判》来解毒。</p>
<p>Programming Pearls，打算读但一直没读过的经典编程书籍。</p>
<p>Being Logical: A Guide to Good Thinking (Joseph M. Williams)，思维领域的下一本书。</p>
<p>What Is Mathematics?: An Elementary Approach to Ideas and Method，高中时读过的数学科普书。打算重读一遍，一方面是试图重试对数学的兴趣，另外也完全有理由相信现在可以从本书中汲取更多的内容。</p>
<p>Pragmatic Thinking and Learning: Refactor Your Wetware 一书的作者 Andy Hunt 曾以 Pragmatic Programmer 一书深深地影响了高中时期的我。我希望这本书能开启我了解和学习脑科学、认知科学的门径。</p>
<p>Armchair Economist (Steven E. Landsburg)，选择读的第一本通俗经济学读物。</p>
<p>The 7 Habits of Highly Effective People (Stephen R. Covey) 是久闻盛名的经典，下一步打算读。</p>
<p>上面的书单竟全部都是英文书啊。中文书的话，现在唯一确定下一步要看的是钱穆《国史大纲》，等到把大部头《西方哲学史》啃完就开始吧。</p>
<p>除此之外，我还有一个包含23本书的 to-read 列表，一个包含31本书的 sometimes/maybe 书单，而且它们的容量还一直在快速增加……于是深刻体会到“吾生也有涯，而知也无涯”，几要发出“以有涯随无涯，殆已”的悲鸣。可我仍愿尝试“求知若渴，虚心若愚(Stay Hungry, Stay Foolish)”，初生牛犊般无畏地前行。</p>
]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/%e8%bf%99%e4%b8%aa%e5%af%92%e5%81%87%e8%af%bb%e7%9a%84%e4%b9%a6%e5%8f%8a%e5%85%b6%e5%ae%83/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>SICP习题解答：第二章（上）</title>
		<link>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%ba%8c%e7%ab%a0%ef%bc%88%e4%b8%8a%ef%bc%89/</link>
		<comments>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%ba%8c%e7%ab%a0%ef%bc%88%e4%b8%8a%ef%bc%89/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 08:52:36 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[程序园]]></category>
		<category><![CDATA[习题]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/?p=424</guid>
		<description><![CDATA[
?View Code SCHEME;; 2.1
&#40;define &#40;make-rat n d&#41;
  &#40;if &#40;&#60; d 0&#41;
      &#40;make-rat &#40;- n&#41; &#40;- d&#41;&#41;
      &#40;cons n d&#41;&#41;&#41;
&#160;
;; 2.2
&#40;define &#40;make-point x y&#41;
  &#40;cons x y&#41;&#41;
&#40;define &#40;x-point p&#41;
  &#40;car p&#41;&#41;
&#40;define &#40;y-point p&#41;
  &#40;cdr p&#41;&#41;
&#40;define &#40;make-segment start end&#41;
  &#40;cons start end&#41;&#41;
&#40;define [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p424code2'); return false;">View Code</a> SCHEME</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4242"><td class="code" id="p424code2"><pre class="scheme" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">;; 2.1</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>rat n <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #b1b100;">d</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>rat <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> n <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.2</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>point x y<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> x y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">-</span>point p<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> p<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">-</span>point p<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> p<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment start end<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> start end<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>start<span style="color: #66cc66;">-</span>segment <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>end<span style="color: #66cc66;">-</span>segment <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>midpoint<span style="color: #66cc66;">-</span>segment <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>a <span style="color: #66cc66;">&#40;</span>start<span style="color: #66cc66;">-</span>segment <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>b <span style="color: #66cc66;">&#40;</span>end<span style="color: #66cc66;">-</span>segment <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">-</span>point a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">-</span>point b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">-</span>point a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">-</span>point b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.3</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 第一种表示</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>rect mid<span style="color: #66cc66;">-</span>point width height<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> mid<span style="color: #66cc66;">-</span>point
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> width <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> height <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>left r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>right r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>bottom r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>top r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 第二种表示</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>rect bottom<span style="color: #66cc66;">-</span>left top<span style="color: #66cc66;">-</span>right<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> bottom<span style="color: #66cc66;">-</span>left top<span style="color: #66cc66;">-</span>right<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>left r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>right r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>bottom r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>top r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 公用函数</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>width r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>right r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>left r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>height r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>top r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>bottom r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>area r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>width r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>height r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>perimeter r<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>width r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">-</span>height r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.4</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>my<span style="color: #66cc66;">-</span><span style="color: #b1b100;">cons</span> x y<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>m x y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>my<span style="color: #66cc66;">-</span><span style="color: #b1b100;">car</span> z<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>z <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>p q<span style="color: #66cc66;">&#41;</span> p<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>my<span style="color: #66cc66;">-</span><span style="color: #b1b100;">cdr</span> z<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>z <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>p q<span style="color: #66cc66;">&#41;</span> q<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.5</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>cons<span style="color: #66cc66;">-</span>n x y<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">; x and y are natural numbers</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> x <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> y <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> y <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> x <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>car<span style="color: #66cc66;">-</span>n z<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> z <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> z <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>cdr<span style="color: #66cc66;">-</span>n z<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> z <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> z <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.6 目前最激动人心的题目</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> zero
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>add<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span> n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>n <span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> one
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> two
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>add m n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>m <span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>n <span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.7 为什么这么重复的题目啊</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval a b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> a b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.8</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>sub<span style="color: #66cc66;">-</span>interval x y<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                 <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.9 对于加法，结果的上（下）界即两上（下）界之和，故宽度就是两宽度之和，即(a-b)+(c-d)=(a-c)-(b-d)。减法有相同的结论。对于乘法，(a-b)*(c-d)!=(ac-bd)；例如宽度相同的(0,1)、(1,2)、(2,3)两两做乘法运算得到(0,2)、(0,3)、(2,6)三个宽度不同的区间。除法类似。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.10</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>div<span style="color: #66cc66;">-</span>interval x y<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound y<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>error <span style="color: #ff0000;">&quot;Divide by a interval that contains zero -- div-interval&quot;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval x
                    <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                                   <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.11 其实归结起来只有三种情况：0、1或2个区间包括0。</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval i<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #ff0000;">&quot;[&quot;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #ff0000;">&quot;,&quot;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #ff0000;">&quot;]<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>neg<span style="color: #66cc66;">-</span>interval i<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval x y<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it a b c <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> b <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>neg<span style="color: #66cc66;">-</span>interval<span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> a<span style="color: #66cc66;">&#41;</span> c <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #b1b100;">d</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>neg<span style="color: #66cc66;">-</span>interval<span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it a b <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> c <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it c <span style="color: #b1b100;">d</span> a b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> a <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> c <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> a <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> b <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> a <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> c <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">max</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> a c<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> b <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> c <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> a c<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> b <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>a <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>b <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>c <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">d</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it a b c <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">;;;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval<span style="color: #66cc66;">-</span>test<span style="color: #66cc66;">-</span>cases<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>mul<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.12</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>center<span style="color: #66cc66;">-</span>percent center percent<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> delta <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> center percent<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> center percent<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> center percent<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>center i<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>percent i<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">50</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>upper<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>lower<span style="color: #66cc66;">-</span>bound i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>center i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>center<span style="color: #66cc66;">-</span>percent i<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #66cc66;">&#40;</span>center i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #ff0000;">&quot;±&quot;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #66cc66;">&#40;</span>percent i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">newline</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.13 a(1+b%)*c(1+d%)=ac(1+b%+d%+b%d%)~=ac(1+b%+d%)</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.14 程序将 (div-interval A A) 与 (div-interval A B) 做相同的处理，而没有意识到前者的两个参数并非是独立的。也即，当同一个变量在式子中多次出现时，程序不能意识到它的每次出现必须取相同的值。</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>interval<span style="color: #66cc66;">-</span>arithmetic<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>A <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>B <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>div<span style="color: #66cc66;">-</span>interval A A<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>interval <span style="color: #66cc66;">&#40;</span>div<span style="color: #66cc66;">-</span>interval A B<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>interval<span style="color: #66cc66;">-</span>arithmetic<span style="color: #66cc66;">-</span>center<span style="color: #66cc66;">-</span>percent<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>A <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>center<span style="color: #66cc66;">-</span>percent <span style="color: #cc66cc;">100.0</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>B <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>center<span style="color: #66cc66;">-</span>percent <span style="color: #cc66cc;">100.0</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>center<span style="color: #66cc66;">-</span>percent <span style="color: #66cc66;">&#40;</span>div<span style="color: #66cc66;">-</span>interval A A<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>print<span style="color: #66cc66;">-</span>center<span style="color: #66cc66;">-</span>percent <span style="color: #66cc66;">&#40;</span>div<span style="color: #66cc66;">-</span>interval A B<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.15 我认为这公式的两个形式是完全等价的，在Alyssa系统上产生的区间限界不同，是由于Alyssa系统的本质缺陷，而非两个形式的优劣。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.16 当同一个变量在式子中多次出现时，程序不能意识到它的每次出现必须取相同的值。每个变量出现的次数不同会导致Alyssa系统得出的结果不同。无缺陷的区间算术包等价于以下问题：多变量的多项式，每个变量有其取值范围，求多项式的值的取值范围。这个问题属于 Interval Computation 的范畴：http://www.lsi.upc.edu/~robert/mirror/interval-comp/</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.17</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">last-pair</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">last-pair</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.18</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it a b<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> a<span style="color: #66cc66;">&#41;</span> b
        <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> a<span style="color: #66cc66;">&#41;</span> b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>it <span style="color: #b1b100;">l</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.19</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>cc amount coin<span style="color: #66cc66;">-</span>values<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> amount <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> amount <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>no<span style="color: #66cc66;">-</span>more? coin<span style="color: #66cc66;">-</span>values<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>cc amount
                <span style="color: #66cc66;">&#40;</span>except<span style="color: #66cc66;">-</span>first<span style="color: #66cc66;">-</span>denomination coin<span style="color: #66cc66;">-</span>values<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>cc <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> amount
                   <span style="color: #66cc66;">&#40;</span>first<span style="color: #66cc66;">-</span>denomination coin<span style="color: #66cc66;">-</span>values<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                coin<span style="color: #66cc66;">-</span>values<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>no<span style="color: #66cc66;">-</span>more? <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>except<span style="color: #66cc66;">-</span>first<span style="color: #66cc66;">-</span>denomination <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>first<span style="color: #66cc66;">-</span>denomination <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; 根据问题的定义，改变表中元素的顺序不会影响回答。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.20</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>same<span style="color: #66cc66;">-</span>parity x . <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter a<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> a<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>b <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">even?</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> a<span style="color: #66cc66;">&#41;</span> b<span style="color: #66cc66;">&#41;</span> b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> x <span style="color: #66cc66;">&#40;</span>iter <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.21</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span><span style="color: #b1b100;">list</span> items<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> items<span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">nil</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span>square <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> items<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> items<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span><span style="color: #b1b100;">list</span> items<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> square items<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.22 第一个程序中，程序从前往后处理things中的元素，却每次把平方后的元素加到answer的头部，故结果的顺序会相反。第二个程序中，当cons的两个参数分别是list和元素时，结果并不是把元素加到list后面。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.23</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">for-each</span> <span style="color: #b1b100;">f</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">not</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">for-each</span> <span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.24 (1 (2 (3 4)))。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.25</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">9</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span> <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.26</span>
<span style="color: #808080; font-style: italic;">; (1 2 3 4 5 6)</span>
<span style="color: #808080; font-style: italic;">; ((1 2 3) 4 5 6)</span>
<span style="color: #808080; font-style: italic;">; ((1 2 3) (4 5 6))</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.27</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>deep<span style="color: #66cc66;">-</span><span style="color: #b1b100;">reverse</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list?</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> deep<span style="color: #66cc66;">-</span><span style="color: #b1b100;">reverse</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.28</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fringe <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list?</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> <span style="color: #66cc66;">&#40;</span>fringe <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>fringe <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.29</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>mobile left right<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> left right<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>branch <span style="color: #b1b100;">length</span> structure<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #b1b100;">length</span> structure<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; (a)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>left<span style="color: #66cc66;">-</span>branch mobile<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> mobile<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>branch mobile<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cadr</span> mobile<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span><span style="color: #b1b100;">length</span> branch<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> branch<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>structure branch<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cadr</span> branch<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; (b)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>total<span style="color: #66cc66;">-</span>weight x<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">number?</span> x<span style="color: #66cc66;">&#41;</span>
      x
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>total<span style="color: #66cc66;">-</span>weight <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>structure <span style="color: #66cc66;">&#40;</span>left<span style="color: #66cc66;">-</span>branch x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>total<span style="color: #66cc66;">-</span>weight <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>structure <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>branch x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;  (c)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>torque x<span style="color: #66cc66;">&#41;</span> 
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>total<span style="color: #66cc66;">-</span>weight <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>structure x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> 
     <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span><span style="color: #b1b100;">length</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>balanced? x<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">number?</span> x<span style="color: #66cc66;">&#41;</span> true<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>left <span style="color: #66cc66;">&#40;</span>left<span style="color: #66cc66;">-</span>branch x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">&#40;</span>right <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>branch x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
           <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>torque left<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>torque right<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>balanced? <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>structure left<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>balanced? <span style="color: #66cc66;">&#40;</span>branch<span style="color: #66cc66;">-</span>structure right<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; (d) 只需更改right-branch和branch-structure中的cadr为cdr</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.30</span>
<span style="color: #808080; font-style: italic;">; 直接定义</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>tree <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">number?</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>square <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>tree <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>tree <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 使用高阶函数</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>tree <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list?</span> x<span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>tree x<span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span>square x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
       <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.31</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>tree<span style="color: #66cc66;">-</span><span style="color: #b1b100;">map</span> <span style="color: #b1b100;">f</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list?</span> x<span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span>tree<span style="color: #66cc66;">-</span><span style="color: #b1b100;">map</span> x<span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
       <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.32 将子集分为包含与不包含(car s)两种情况。</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>subsets <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>rest <span style="color: #66cc66;">&#40;</span>subsets <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> rest <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.33</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>unary<span style="color: #66cc66;">-</span><span style="color: #b1b100;">map</span> p <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span>p x<span style="color: #66cc66;">&#41;</span> y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>apppend seq1 seq2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #b1b100;">cons</span> seq2 seq1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">length</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.34</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>horner<span style="color: #66cc66;">-</span>eval x coefficient<span style="color: #66cc66;">-</span><span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>this<span style="color: #66cc66;">-</span>coeff higher<span style="color: #66cc66;">-</span>terms<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> this<span style="color: #66cc66;">-</span>coeff <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> x higher<span style="color: #66cc66;">-</span>terms<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #cc66cc;">0</span>
              coefficient<span style="color: #66cc66;">-</span><span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.35</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>count<span style="color: #66cc66;">-</span>leaves <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span>
                 <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list?</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>count<span style="color: #66cc66;">-</span>leaves x<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                 y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #cc66cc;">0</span>
              <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; 或</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>count<span style="color: #66cc66;">-</span>leaves <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list?</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>count<span style="color: #66cc66;">-</span>leaves x<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.36</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>accumulate<span style="color: #66cc66;">-</span>n op init seqs<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seqs<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">nil</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span>accumulate op init <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #b1b100;">car</span> seqs<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>accumulate<span style="color: #66cc66;">-</span>n op init <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #b1b100;">cdr</span> seqs<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.37</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>dot<span style="color: #66cc66;">-</span>product v w<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">*</span> v w<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>matrix<span style="color: #66cc66;">-*-</span><span style="color: #b1b100;">vector</span> m v<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>dot<span style="color: #66cc66;">-</span>product x v<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>transpose mat<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate<span style="color: #66cc66;">-</span>n <span style="color: #b1b100;">cons</span> <span style="color: #b1b100;">nil</span> mat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>matrix<span style="color: #66cc66;">-*-</span>matrix m n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>cols <span style="color: #66cc66;">&#40;</span>transpose n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>matrix<span style="color: #66cc66;">-*-</span><span style="color: #b1b100;">vector</span> cols x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.38</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left op initial <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter result rest<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> rest<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>op result <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter initial <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> fold<span style="color: #66cc66;">-</span>right accumulate<span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; 3/2</span>
<span style="color: #808080; font-style: italic;">; 1/6</span>
<span style="color: #808080; font-style: italic;">; (1 (2 (3 ())))</span>
<span style="color: #808080; font-style: italic;">; (((() 1) 2) 3)</span>
<span style="color: #808080; font-style: italic;">; 结合律，以及inital是op的零元。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.39</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>right <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> y <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>fold<span style="color: #66cc66;">-</span>left <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> y x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">nil</span> <span style="color: #b1b100;">sequence</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.40</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>flatmap proc seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #b1b100;">append</span> <span style="color: #b1b100;">nil</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> proc seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>unique<span style="color: #66cc66;">-</span>pairs n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>flatmap
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> 
     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> x i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.41</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>pair<span style="color: #66cc66;">-</span>sum<span style="color: #66cc66;">-</span>no<span style="color: #66cc66;">-</span>more<span style="color: #66cc66;">-</span>than n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>flatmap
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span>
     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> y x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">min</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> x <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>triple<span style="color: #66cc66;">-</span>sum<span style="color: #66cc66;">-</span>is n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>filter
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">not</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cadr</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">caddr</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>pair<span style="color: #66cc66;">-</span>sum<span style="color: #66cc66;">-</span>no<span style="color: #66cc66;">-</span>more<span style="color: #66cc66;">-</span>than <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.42</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> empty<span style="color: #66cc66;">-</span>board <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>safe? k p<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>not<span style="color: #66cc66;">-</span>same p<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null?</span> <span style="color: #66cc66;">&#40;</span>filter <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> p<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> p<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span>
   <span style="color: #66cc66;">&#40;</span>not<span style="color: #66cc66;">-</span>same p<span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#40;</span>not<span style="color: #66cc66;">-</span>same <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">+</span> p <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> k<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#40;</span>not<span style="color: #66cc66;">-</span>same <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">+</span> p <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> k<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>adjoin<span style="color: #66cc66;">-</span>position n k r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> n r<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>queens board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols k<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> k <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> empty<span style="color: #66cc66;">-</span>board<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>filter
         <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>positions<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>safe? k positions<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span>flatmap
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens<span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>new<span style="color: #66cc66;">-</span>row<span style="color: #66cc66;">&#41;</span>
                   <span style="color: #66cc66;">&#40;</span>adjoin<span style="color: #66cc66;">-</span>position new<span style="color: #66cc66;">-</span>row k rest<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>queens<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                 <span style="color: #66cc66;">&#40;</span>enumerate<span style="color: #66cc66;">-</span>interval <span style="color: #cc66cc;">1</span> board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> k <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>queen<span style="color: #66cc66;">-</span>cols board<span style="color: #66cc66;">-</span>size<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.43 原程序中每个 (queen-cols k) 只需调用一次，而这个程序中，为了计算 (queen-cols k)，需要调用 k 次 (queen-cols (- k 1))；大约需要k!T的时间。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.44</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>up<span style="color: #66cc66;">-</span>split painter n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> n <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
      painter
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>smaller <span style="color: #66cc66;">&#40;</span>up<span style="color: #66cc66;">-</span>split painter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>below painter <span style="color: #66cc66;">&#40;</span>beside smaller smaller<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.45</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>split combo1 combo2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>painter n<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> n <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
        painter
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>smaller <span style="color: #66cc66;">&#40;</span>up<span style="color: #66cc66;">-</span>split painter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>combo1 painter <span style="color: #66cc66;">&#40;</span>combo2 smaller smaller<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.46</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect x y<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> x y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>xcor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> v<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>ycor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> v<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>add<span style="color: #66cc66;">-</span>vect v w<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>xcor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>xcor<span style="color: #66cc66;">-</span>vect w<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>ycor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>ycor<span style="color: #66cc66;">-</span>vect w<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>sub<span style="color: #66cc66;">-</span>vect v w<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>xcor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>xcor<span style="color: #66cc66;">-</span>vect w<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>ycor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>ycor<span style="color: #66cc66;">-</span>vect w<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>scale<span style="color: #66cc66;">-</span>vect <span style="color: #b1b100;">s</span> v<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #b1b100;">s</span> <span style="color: #66cc66;">&#40;</span>xcor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #b1b100;">s</span> <span style="color: #66cc66;">&#40;</span>ycor<span style="color: #66cc66;">-</span>vect v<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.47</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>frame origin edge1 edge2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> origin edge1 edge2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>origin<span style="color: #66cc66;">-</span>frame frame<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> frame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>edge1<span style="color: #66cc66;">-</span>frame frame<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cadr</span> frame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>edge2<span style="color: #66cc66;">-</span>frame frame<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">caddr</span> frame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>frame origin edge1 edge2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> origin <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> edge1 edge2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>edge2<span style="color: #66cc66;">-</span>frame frame<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>cddr frame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.48</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment v w<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> v w<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>start<span style="color: #66cc66;">-</span>segment <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>end<span style="color: #66cc66;">-</span>segment <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> <span style="color: #b1b100;">s</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.49</span>
<span style="color: #808080; font-style: italic;">; (a)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> outline<span style="color: #66cc66;">-</span>painter
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>left<span style="color: #66cc66;">-</span>bottom <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>left<span style="color: #66cc66;">-</span>top <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>bottom <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>top <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>segments<span style="color: #66cc66;">-&gt;</span>painter <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment left<span style="color: #66cc66;">-</span>top left<span style="color: #66cc66;">-</span>bottom<span style="color: #66cc66;">&#41;</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment left<span style="color: #66cc66;">-</span>bottom right<span style="color: #66cc66;">-</span>bottom<span style="color: #66cc66;">&#41;</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment right<span style="color: #66cc66;">-</span>bottom right<span style="color: #66cc66;">-</span>top<span style="color: #66cc66;">&#41;</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment right<span style="color: #66cc66;">-</span>top left<span style="color: #66cc66;">-</span>top<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; (b)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> X<span style="color: #66cc66;">-</span>painter
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>left<span style="color: #66cc66;">-</span>bottom <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>left<span style="color: #66cc66;">-</span>top <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>bottom <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>top <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>segments<span style="color: #66cc66;">-&gt;</span>painter <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment left<span style="color: #66cc66;">-</span>bottom right<span style="color: #66cc66;">-</span>top<span style="color: #66cc66;">&#41;</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment left<span style="color: #66cc66;">-</span>top right<span style="color: #66cc66;">-</span>bottom<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; (c)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> diamond<span style="color: #66cc66;">-</span>painter
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>bottom <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.5</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>left <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>top <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.5</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>right <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>segments<span style="color: #66cc66;">-&gt;</span>painter <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment bottom left<span style="color: #66cc66;">&#41;</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment left top<span style="color: #66cc66;">&#41;</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment top right<span style="color: #66cc66;">&#41;</span>
                        <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment right bottom<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; (d) 来源 http://d.hatena.ne.jp/laughing/20081115/1226737187，有修正</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> wave
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>p0 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.4</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p1 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.35</span> <span style="color: #cc66cc;">0.8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p2 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.4</span> <span style="color: #cc66cc;">0.6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p3 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.3</span> <span style="color: #cc66cc;">0.6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p4 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.15</span> <span style="color: #cc66cc;">0.55</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p5 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0.8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p6 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0.6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p7 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.15</span> <span style="color: #cc66cc;">0.4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p8 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.3</span> <span style="color: #cc66cc;">0.55</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p9 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.35</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p10 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.3</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p11 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.4</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p12 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.5</span> <span style="color: #cc66cc;">0.3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p13 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.6</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p14 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p15 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.6</span> <span style="color: #cc66cc;">0.45</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p16 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p17 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p18 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.8</span> <span style="color: #cc66cc;">0.6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p19 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.6</span> <span style="color: #cc66cc;">0.6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p20 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.65</span> <span style="color: #cc66cc;">0.8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>p21 <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0.6</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>segments<span style="color: #66cc66;">-&gt;</span>painter 
     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p0 p1<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p1 p2<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p2 p3<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p3 p4<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p4 p5<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p6 p7<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p7 p8<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p8 p9<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p9 p10<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p11 p12<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p12 p13<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p14 p15<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p15 p16<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p17 p18<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p18 p19<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p19 p20<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>segment p20 p21<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.50</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>flip<span style="color: #66cc66;">-</span>horiz painter<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>transform<span style="color: #66cc66;">-</span>painter painter
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rotate<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">180</span> painter<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>transform<span style="color: #66cc66;">-</span>painter painter
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>rotate<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">270</span> painter<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>transform<span style="color: #66cc66;">-</span>painter painter
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.51</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>below painter1 painter2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>paint<span style="color: #66cc66;">-</span>bottom
         <span style="color: #66cc66;">&#40;</span>transform<span style="color: #66cc66;">-</span>painter painter1
                            <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
                            <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
                            <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>paint<span style="color: #66cc66;">-</span>top
         <span style="color: #66cc66;">&#40;</span>transform<span style="color: #66cc66;">-</span>painter painter2
                            <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span>
                            <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span>
                            <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>vect <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>frame<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>paint<span style="color: #66cc66;">-</span>bottom frame<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>paint<span style="color: #66cc66;">-</span>top frame<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>below painter1 painter2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>rotate<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">270</span> <span style="color: #66cc66;">&#40;</span>beside <span style="color: #66cc66;">&#40;</span>rotate<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">90</span> painter1<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>rotate<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">90</span> painter2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 2.52</span>
<span style="color: #808080; font-style: italic;">; (a) 略</span>
<span style="color: #808080; font-style: italic;">; (b)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>corner<span style="color: #66cc66;">-</span>split painter n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> n <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
      painter
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>up <span style="color: #66cc66;">&#40;</span>up<span style="color: #66cc66;">-</span>split painter n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>right <span style="color: #66cc66;">&#40;</span>right<span style="color: #66cc66;">-</span>split painter n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>top<span style="color: #66cc66;">-</span>left up<span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span>bottom<span style="color: #66cc66;">-</span>right right<span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span>corner <span style="color: #66cc66;">&#40;</span>corner<span style="color: #66cc66;">-</span>split painter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>beside <span style="color: #66cc66;">&#40;</span>below painter top<span style="color: #66cc66;">-</span>left<span style="color: #66cc66;">&#41;</span>
                  <span style="color: #66cc66;">&#40;</span>below bottom<span style="color: #66cc66;">-</span>right corner<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; (c)</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>limit painter n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>combine4 <span style="color: #66cc66;">&#40;</span>square<span style="color: #66cc66;">-</span>of<span style="color: #66cc66;">-</span>four identity flip<span style="color: #66cc66;">-</span>horiz
                                  flip<span style="color: #66cc66;">-</span>vert rotate180<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>combine4 <span style="color: #66cc66;">&#40;</span>corner<span style="color: #66cc66;">-</span>split painter n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%ba%8c%e7%ab%a0%ef%bc%88%e4%b8%8a%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>SICP习题解答：第一章（下）</title>
		<link>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%b8%80%e7%ab%a0%ef%bc%88%e4%b8%8b%ef%bc%89/</link>
		<comments>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%b8%80%e7%ab%a0%ef%bc%88%e4%b8%8b%ef%bc%89/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 15:09:17 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[程序园]]></category>
		<category><![CDATA[习题]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/blog/?p=396</guid>
		<description><![CDATA[
?View Code SCHEME;; 1.29
&#40;define &#40;simpson-integral f a b n&#41;
  &#40;define &#40;coefficient i&#41;
    &#40;cond &#40;&#40;or &#40;= i 0&#41; &#40;= i n&#41;&#41; 1&#41;
          &#40;&#40;even? i&#41; 2&#41;
          &#40;else 4&#41;&#41;&#41;
  &#40;let &#40;&#40;h &#40;/ &#40;- b a&#41;n [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p396code4'); return false;">View Code</a> SCHEME</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3964"><td class="code" id="p396code4"><pre class="scheme" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">;; 1.29</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>simpson<span style="color: #66cc66;">-</span>integral <span style="color: #b1b100;">f</span> a b n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>coefficient i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">even?</span> i<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>h <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> b a<span style="color: #66cc66;">&#41;</span>n <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> h <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>
       <span style="color: #66cc66;">&#40;</span>sum <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> a <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> i h<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>coefficient i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #cc66cc;">0</span>
            <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.30</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>sum term a next b<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter a result<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>next a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> result <span style="color: #66cc66;">&#40;</span>term a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter a <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.31 只需要把sum改动两处。</span>
<span style="color: #808080; font-style: italic;">; 递归实现</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>product term a next b<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span>
      <span style="color: #cc66cc;">1</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>term a<span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span>product term <span style="color: #66cc66;">&#40;</span>next a<span style="color: #66cc66;">&#41;</span> next b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 迭代实现</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>product term a next b<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter a result<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>next a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> result <span style="color: #66cc66;">&#40;</span>term a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter a <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 阶乘</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>factorial n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>product <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; π的近似值</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>calc<span style="color: #66cc66;">-</span>pi n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>term i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>square i<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>square i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>next i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">&#40;</span>product term <span style="color: #cc66cc;">3.0</span> next n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.32</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>accumulate combiner null<span style="color: #66cc66;">-</span>value term a next b<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span>
      null<span style="color: #66cc66;">-</span>value
      <span style="color: #66cc66;">&#40;</span>combiner <span style="color: #66cc66;">&#40;</span>term a<span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#40;</span>accumulate combiner null<span style="color: #66cc66;">-</span>value term <span style="color: #66cc66;">&#40;</span>next a<span style="color: #66cc66;">&#41;</span> next b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>accumulate combiner null<span style="color: #66cc66;">-</span>value term a next b<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter a result<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>next a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>combiner result <span style="color: #66cc66;">&#40;</span>term a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter a null<span style="color: #66cc66;">-</span>value<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.33</span>
<span style="color: #808080; font-style: italic;">; filtered-accumulate 的两种实现</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>filtered<span style="color: #66cc66;">-</span>accumulate combiner null<span style="color: #66cc66;">-</span>value term a next b filter<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>filter x<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>filter x<span style="color: #66cc66;">&#41;</span> x null<span style="color: #66cc66;">-</span>value<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span>
      null<span style="color: #66cc66;">-</span>value
      <span style="color: #66cc66;">&#40;</span>combiner <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>filter <span style="color: #66cc66;">&#40;</span>term a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#40;</span>filtered<span style="color: #66cc66;">-</span>accumulate combiner null<span style="color: #66cc66;">-</span>value term <span style="color: #66cc66;">&#40;</span>next a<span style="color: #66cc66;">&#41;</span> next b filter<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>filtered<span style="color: #66cc66;">-</span>accumulate combiner null<span style="color: #66cc66;">-</span>value term a next b filter<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>filter x<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>filter x<span style="color: #66cc66;">&#41;</span> x null<span style="color: #66cc66;">-</span>value<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter a result<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>next a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>combiner result <span style="color: #66cc66;">&#40;</span>do<span style="color: #66cc66;">-</span>filter <span style="color: #66cc66;">&#40;</span>term a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter a null<span style="color: #66cc66;">-</span>value<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; (a)</span>
<span style="color: #66cc66;">&#40;</span>filtered<span style="color: #66cc66;">-</span>accumulate <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span> a <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> b prime?<span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; (b)</span>
<span style="color: #66cc66;">&#40;</span>filtered<span style="color: #66cc66;">-</span>accumulate <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">1</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">gcd</span> a n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.34 (f f)相当于(f 2)，相当于(2 2)，会因为2并非可以调用的函数而出错。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.35 证明不动点直接计算即可，计算的(fixed-point (lambda (x) (+ 1 (/ 1 x))) 1.0)。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.36 全部代码如下</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> tolerance <span style="color: #cc66cc;">0.00001</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fixed<span style="color: #66cc66;">-</span>point <span style="color: #b1b100;">f</span> first<span style="color: #66cc66;">-</span>guess<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>close<span style="color: #66cc66;">-</span>enough? v1 v2<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> v1 v2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> tolerance<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>try guess<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> guess<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">newline</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>next <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> guess<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>close<span style="color: #66cc66;">-</span>enough? guess next<span style="color: #66cc66;">&#41;</span>
          next
          <span style="color: #66cc66;">&#40;</span>try next<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>try first<span style="color: #66cc66;">-</span>guess<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">log</span> <span style="color: #cc66cc;">1000</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">log</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #66cc66;">&#40;</span>fixed<span style="color: #66cc66;">-</span>point <span style="color: #b1b100;">f</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">newline</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">newline</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #66cc66;">&#40;</span>fixed<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>average x <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">newline</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">newline</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 使用与不使用平均阻尼的步数分别为9与34步。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.37</span>
<span style="color: #808080; font-style: italic;">; 递归版本</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>cont<span style="color: #66cc66;">-</span>frac n <span style="color: #b1b100;">d</span> k<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>shift <span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> k<span style="color: #66cc66;">&#41;</span>
      <span style="color: #cc66cc;">0</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span>n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">d</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>cont<span style="color: #66cc66;">-</span>frac <span style="color: #66cc66;">&#40;</span>shift n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>shift <span style="color: #b1b100;">d</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> k <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 迭代版本</span>
<span style="color: #66cc66;">&#40;</span>dsefine <span style="color: #66cc66;">&#40;</span>cont<span style="color: #66cc66;">-</span>frac n <span style="color: #b1b100;">d</span> k<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter result i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> i<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span>n i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">d</span> i<span style="color: #66cc66;">&#41;</span> result<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">0</span> k<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 当k不小于11时，结果有4位精度。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.38</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span> k<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>cont<span style="color: #66cc66;">-</span>frac <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> i <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                   <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> i<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                   <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
             k<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.39</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>tan<span style="color: #66cc66;">-</span>cf x k<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>cont<span style="color: #66cc66;">-</span>frac <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> i<span style="color: #66cc66;">&#41;</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>square x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
             <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>
               <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> i<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
             k<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.40</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>cubic a b c<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> c <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> b <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> a x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.41</span>
<span style="color: #808080; font-style: italic;">; double函数</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>double <span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; (((double (double double)) inc) 5) 的值为21。因为 (double double) 得到一个把参数过程应用四次的函数，而 (double (double double)) 事实上是将“把参数过程应用四次”的过程应用两次，也就是一个将参数过程应用十六次的函数。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.42</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>compose <span style="color: #b1b100;">f</span> g<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span>g x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.43</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>repeated <span style="color: #b1b100;">f</span> n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> n<span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">f</span>
      <span style="color: #66cc66;">&#40;</span>compose <span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span>repeated <span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.44</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">-</span>times<span style="color: #66cc66;">-</span>smooth <span style="color: #b1b100;">f</span> dx n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>repeated <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>smooth <span style="color: #b1b100;">f</span> dx<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">f</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.45</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>calc<span style="color: #66cc66;">-</span>nth<span style="color: #66cc66;">-</span>root<span style="color: #66cc66;">-</span>with<span style="color: #66cc66;">-</span>t<span style="color: #66cc66;">-</span>average<span style="color: #66cc66;">-</span>damps x n <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>fixed<span style="color: #66cc66;">-</span>point <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>repeated average<span style="color: #66cc66;">-</span>damp <span style="color: #b1b100;">t</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>y<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> x <span style="color: #66cc66;">&#40;</span>fast<span style="color: #66cc66;">-</span><span style="color: #b1b100;">expt</span> y <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 通过实验，得到的规律是，当 2^t&gt;=n 时，用 t 次平均阻尼求 n 次方根是可行的，于是有下面的程序。</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>nth<span style="color: #66cc66;">-</span>root x n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>minimal<span style="color: #66cc66;">-</span><span style="color: #b1b100;">t</span> n<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> n<span style="color: #66cc66;">&#41;</span>
        <span style="color: #cc66cc;">0</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>minimal<span style="color: #66cc66;">-</span><span style="color: #b1b100;">t</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">quotient</span> n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>calc<span style="color: #66cc66;">-</span>nth<span style="color: #66cc66;">-</span>root<span style="color: #66cc66;">-</span>with<span style="color: #66cc66;">-</span>t<span style="color: #66cc66;">-</span>average<span style="color: #66cc66;">-</span>damps x n <span style="color: #66cc66;">&#40;</span>minimal<span style="color: #66cc66;">-</span><span style="color: #b1b100;">t</span> n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.46</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iterative<span style="color: #66cc66;">-</span>improve guess improve good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>good<span style="color: #66cc66;">-</span>enough? guess<span style="color: #66cc66;">&#41;</span>
      guess
      <span style="color: #66cc66;">&#40;</span>iterative<span style="color: #66cc66;">-</span>improve <span style="color: #66cc66;">&#40;</span>improve guess<span style="color: #66cc66;">&#41;</span> improve good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">sqrt</span> x<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>improve y<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> x <span style="color: #66cc66;">&#40;</span>square y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>good<span style="color: #66cc66;">-</span>enough? y<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> tolerance <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span>square y<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iterative<span style="color: #66cc66;">-</span>improve <span style="color: #cc66cc;">1.0</span> improve good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fixed<span style="color: #66cc66;">-</span>point <span style="color: #b1b100;">f</span> first<span style="color: #66cc66;">-</span>guess<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>improve x<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>good<span style="color: #66cc66;">-</span>enough? x<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> tolerance <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> x<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iterative<span style="color: #66cc66;">-</span>improve first<span style="color: #66cc66;">-</span>guess improve good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%b8%80%e7%ab%a0%ef%bc%88%e4%b8%8b%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SICP习题解答：第一章（上）</title>
		<link>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%b8%80%e7%ab%a0/</link>
		<comments>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%b8%80%e7%ab%a0/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 15:00:18 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[程序园]]></category>
		<category><![CDATA[习题]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/blog/?p=395</guid>
		<description><![CDATA[
?View Code SCHEME;; 1.1-2 略
&#160;
;; 1.3
&#40;define &#40;greater-two a b c&#41;
  &#40;-
   &#40;+ a b c&#41;
   &#40;min a b c&#41;&#41;&#41;
; 或
&#40;define &#40;greater-two a b c&#41;
  &#40;cond &#40;&#40;and &#40;&#62; b a&#41; &#40;&#62; c a&#41;&#41;
         &#40;+ b c&#41;&#41;
       [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p395code6'); return false;">View Code</a> SCHEME</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3956"><td class="code" id="p395code6"><pre class="scheme" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">;; 1.1-2 略</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.3</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>greater<span style="color: #66cc66;">-</span>two a b c<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span>
   <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> a b c<span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">min</span> a b c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">; 或</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>greater<span style="color: #66cc66;">-</span>two a b c<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> b a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> c a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> b c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> a b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> c b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> a c<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> a b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.4 (if (&gt; b 0) + -) 根据b的正负性返回函数+或-。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.5 函数p的定义 (define (p) (p)) 是不断递归调用自己，所以欲对其进行求值/展开会产生死循环。调用 (test 0 (p)) 时，若采用应用序求值，会先对函数的参数，包括 (p) 求值，因而产生死循环，无法输出结果；若采用正则序求值，则由于 (p) 的值事实上不会被展开，故会正常返回0。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.6 将在调用函数 new-if 时，应用序要求先算出其所有参数的值，new-if 的后两个参数——代表 if 的两个分支的代码都将被执行。所以 (sqrt-iter guess x) 必然需要调用 (sqrt-iter (improve guess x) x)，这导致死循环。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.7</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">sqrt</span> x<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>sqrt<span style="color: #66cc66;">-</span>iter guess<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> guess guess<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0.001</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>improve<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>average a b<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> a b<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>average guess <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> x guess<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span>
        guess
        <span style="color: #66cc66;">&#40;</span>sqrt<span style="color: #66cc66;">-</span>iter <span style="color: #66cc66;">&#40;</span>improve<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>sqrt<span style="color: #66cc66;">-</span>iter <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.8</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>cube<span style="color: #66cc66;">-</span>root x<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter guess<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> guess guess<span style="color: #66cc66;">&#41;</span> guess<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0.001</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>improve<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">/</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> guess guess<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> guess<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>good<span style="color: #66cc66;">-</span>enough?<span style="color: #66cc66;">&#41;</span>
        guess
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>improve<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.9 第一个过程是递归的，表达式被递归地逐渐展开再合并；第二个过程中的递归是尾递归，不妨理解为迭代的。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.10 (f n)是n的2倍，(g n)是2的n次方，(h n)是2的(h (- n 1))次方。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.11</span>
<span style="color: #808080; font-style: italic;">; 递归方式</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> n <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> n
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">; 迭代方式</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">f</span> n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter a b c i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i n<span style="color: #66cc66;">&#41;</span> c
        <span style="color: #66cc66;">&#40;</span>iter b c
              <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">3</span> a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> b<span style="color: #66cc66;">&#41;</span> c<span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> n <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> n
      <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.12</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>C n i<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #cc66cc;">1</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #66cc66;">&#40;</span>C <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>C <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.13 可利用归纳法和定义直接证。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.14 空间复杂度为 O(amount)，因为任何时刻调用链的长度（栈上的函数数量）不超过 amount+1；时间复杂度为 O(amount * result)，因为每得到一种方案都调用一次 (cc 0 kinds-of-coins)。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.15 空间与时间复杂度均为O(log a)。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.16 prod*a^m是不变量。</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fast<span style="color: #66cc66;">-</span><span style="color: #b1b100;">expt</span> b n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter prod a m<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> m<span style="color: #66cc66;">&#41;</span> prod
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> m <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>iter prod <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> a a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> m <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> prod a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> a a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> m <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">1</span> b n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.17</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fast<span style="color: #66cc66;">-</span>multi a b<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> a<span style="color: #66cc66;">&#41;</span> b
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> a <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span>double <span style="color: #66cc66;">&#40;</span>fast<span style="color: #66cc66;">-</span>multi <span style="color: #66cc66;">&#40;</span>halve a<span style="color: #66cc66;">&#41;</span> b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> b <span style="color: #66cc66;">&#40;</span>double <span style="color: #66cc66;">&#40;</span>fast<span style="color: #66cc66;">-</span>multi <span style="color: #66cc66;">&#40;</span>halve <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> a <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.18</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>fast<span style="color: #66cc66;">-</span>multi a b<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter sum i n<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> n<span style="color: #66cc66;">&#41;</span> sum
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>iter sum <span style="color: #66cc66;">&#40;</span>double i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>halve n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> sum i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>double i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>halve <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">0</span> a b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.19 p’ = pp + qq，q’ = qq + 2pq。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.20 应用序需要4次；正则序需要更多，没仔细数，因为gcd函数体中出现了三处b，当b是调用remainder的形式时，它需要被展开若干次。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.21 略。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.22-24 我用的DrScheme没有定义runtime……555</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.25 如果不在计算乘幂时随时取模，每次乘法将由于被乘数位数的迅速增长而不能被看做单位时间的原子操作。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.26 每次(expmod base exp m)当exp为正偶数时会调用两次而非一次(expmod base exp m)，f(N)=2*f(N/2)+Θ(1)导致f(N)=Θ(N)，而原始版本的f(N)=f(N/2)+Θ(1)导致f(N)=Θ(log N)。</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.27 以下程序中，(find-carmichael n)找出不超过n的Carmichael数</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>prime? n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span>square i<span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span> true<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> n i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> false<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>carmichael? n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i n<span style="color: #66cc66;">&#41;</span> true<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">not</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i <span style="color: #66cc66;">&#40;</span>expmod i n n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> false<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">not</span> <span style="color: #66cc66;">&#40;</span>prime? n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>find<span style="color: #66cc66;">-</span>carmichael n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>iter i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>carmichael? i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">display</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> i n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; 1.28</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>miller<span style="color: #66cc66;">-</span>rabin n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>exp<span style="color: #66cc66;">-</span>iter prod base <span style="color: #b1b100;">exp</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">1</span> prod<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> prod <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> prod prod<span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">exp</span><span style="color: #66cc66;">&#41;</span> prod<span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">even?</span> <span style="color: #b1b100;">exp</span><span style="color: #66cc66;">&#41;</span>
                    <span style="color: #66cc66;">&#40;</span>exp<span style="color: #66cc66;">-</span>iter
                     prod
                     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> base base<span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                    <span style="color: #66cc66;">&#40;</span>exp<span style="color: #66cc66;">-</span>iter
                     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> prod base<span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> base base<span style="color: #66cc66;">&#41;</span> n<span style="color: #66cc66;">&#41;</span>
                     <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>check i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>exp<span style="color: #66cc66;">-</span>iter <span style="color: #cc66cc;">1</span> i <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>iter i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> i <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> true<span style="color: #66cc66;">&#41;</span>
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>check <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#40;</span>random <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> n <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                    <span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>iter <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> false<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">2</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">3</span> n<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">2</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remainder</span> n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>iter <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/sicp%e4%b9%a0%e9%a2%98%e8%a7%a3%e7%ad%94%ef%bc%9a%e7%ac%ac%e4%b8%80%e7%ab%a0/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>2008年11月24日</title>
		<link>http://cuitianyi.com/blog/2008%e5%b9%b411%e6%9c%8824%e6%97%a5/</link>
		<comments>http://cuitianyi.com/blog/2008%e5%b9%b411%e6%9c%8824%e6%97%a5/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 10:04:44 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[军机处]]></category>
		<category><![CDATA[生活志]]></category>
		<category><![CDATA[ACM-ICPC]]></category>
		<category><![CDATA[书籍]]></category>
		<category><![CDATA[计划]]></category>
		<category><![CDATA[Regional]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/blog/?p=391</guid>
		<description><![CDATA[
昨天，ACM/ICPC杭州赛区以金奖（第五名）谢幕。对于Genesis队，本赛季的所有比赛已经结束，以后不大可能再在比赛中看到我们这支队伍了，希望Genesis得到的两块regional金牌以及一直以来的表现能让关注我们的人满意。
对于我已经研一的两名队友，这大约是他们最后一次以队员的身份出现在ACM/ICPC的赛场上；与高远(xgy)、杨克特(T_T)两位学长的无间配合是太过愉快的经历，学长的经验也让我受益良多。
而对于我，一名正式进入大学才三个月的大一新生，一切才刚刚开始；前方还长的路让人激动憧憬，请相信我会带来更多惊喜。
其实，这赛季能够连拿两金，取得对于我这种新手来说可称辉煌的成绩，不仅取决于全队的努力，对于我自己来说，其实不乏运气成分。这学期我主要的突破是仔细读了本《简明数论》（其实这书只有一半名副其实，“明晰”是无疑的，“简单”则谈不上），打下了还算扎实的数论基础，差不多能应付Regional中通常的数论题了，结果我们队参加的哈尔滨和杭州两个赛区正好都有数论题出现，特别是我们在哈尔滨最后才解出的B题更是我们夺金的关键。另外，在杭州赛的前几天，我匆匆浏览了《柔性字符串匹配》的后半部分，主要内容是用有限自动机做正则表达式匹配。对那本书的主题我自然是一知半解，不过倒对有限自动机有了较多的感受和认识。没想到杭州赛区的H题就是判断两个有限确定性自动机是否等价的题目。虽然没见过，但正好这几天见识了很多与自动机有关的内容，灵光一现就得出了算法，使我们队解出了第6题，也是场上解出的最后一道关键题目。
这样看来，我第一年的ACM/ICPC征程真可称顺风顺水，似乎幸运眷顾，完全没遇到挫折地走下来。当然，以后还是老老实实提高自身实力才是王道，近期打算学学Java，读读SICP之类的书。

这个学期还剩下大约一半，除了为了保持状态做点SRM以外，就不再寻求编程竞赛方面的突破了，应该多尝试点不同的内容。学Java达到与目前的C++近似的熟练程度，读SICP、Concrete Maths、Programming Pearls是必须完成的内容，如果还有闲暇就打算读读Algorithm Design以及一些AI方面的书目。最近一本《数学分析原理》让我多少发现了纯数学的美感，虽然这学期应该不大可能了，但以后还是要读些纯数学的经典教材的。物理是这学期多少令人头疼的科目，得抓紧看一下，希望能培养出兴趣。
好吧，读书去了。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://cuitianyi.com/wp-content/uploads/2008/11/dscn0982.jpg"><img class="alignnone size-medium wp-image-392" title="dscn0982" src="http://cuitianyi.com/wp-content/uploads/2008/11/dscn0982-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>昨天，ACM/ICPC杭州赛区以金奖（第五名）谢幕。对于Genesis队，本赛季的所有比赛已经结束，以后不大可能再在比赛中看到我们这支队伍了，希望Genesis得到的两块regional金牌以及一直以来的表现能让关注我们的人满意。</p>
<p>对于我已经研一的两名队友，这大约是他们最后一次以队员的身份出现在ACM/ICPC的赛场上；与高远(xgy)、杨克特(T_T)两位学长的无间配合是太过愉快的经历，学长的经验也让我受益良多。</p>
<p>而对于我，一名正式进入大学才三个月的大一新生，一切才刚刚开始；前方还长的路让人激动憧憬，请相信我会带来更多惊喜。</p>
<p>其实，这赛季能够连拿两金，取得对于我这种新手来说可称辉煌的成绩，不仅取决于全队的努力，对于我自己来说，其实不乏运气成分。这学期我主要的突破是仔细读了本《简明数论》（其实这书只有一半名副其实，“明晰”是无疑的，“简单”则谈不上），打下了还算扎实的数论基础，差不多能应付Regional中通常的数论题了，结果我们队参加的哈尔滨和杭州两个赛区正好都有数论题出现，特别是我们在哈尔滨最后才解出的B题更是我们夺金的关键。另外，在杭州赛的前几天，我匆匆浏览了《柔性字符串匹配》的后半部分，主要内容是用有限自动机做正则表达式匹配。对那本书的主题我自然是一知半解，不过倒对有限自动机有了较多的感受和认识。没想到杭州赛区的H题就是判断两个有限确定性自动机是否等价的题目。虽然没见过，但正好这几天见识了很多与自动机有关的内容，灵光一现就得出了算法，使我们队解出了第6题，也是场上解出的最后一道关键题目。</p>
<p>这样看来，我第一年的ACM/ICPC征程真可称顺风顺水，似乎幸运眷顾，完全没遇到挫折地走下来。当然，以后还是老老实实提高自身实力才是王道，近期打算学学Java，读读SICP之类的书。</p>
<p><a href="http://cuitianyi.com/wp-content/uploads/2008/11/dscn0881.jpg"><img class="alignnone size-medium wp-image-393" title="dscn0881" src="http://cuitianyi.com/wp-content/uploads/2008/11/dscn0881-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>这个学期还剩下大约一半，除了为了保持状态做点SRM以外，就不再寻求编程竞赛方面的突破了，应该多尝试点不同的内容。学Java达到与目前的C++近似的熟练程度，读SICP、Concrete Maths、Programming Pearls是必须完成的内容，如果还有闲暇就打算读读Algorithm Design以及一些AI方面的书目。最近一本《数学分析原理》让我多少发现了纯数学的美感，虽然这学期应该不大可能了，但以后还是要读些纯数学的经典教材的。物理是这学期多少令人头疼的科目，得抓紧看一下，希望能培养出兴趣。</p>
<p>好吧，读书去了。</p>
]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/2008%e5%b9%b411%e6%9c%8824%e6%97%a5/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>《数学分析原理》旁注（上）</title>
		<link>http://cuitianyi.com/blog/%e3%80%8a%e6%95%b0%e5%ad%a6%e5%88%86%e6%9e%90%e5%8e%9f%e7%90%86%e3%80%8b%e6%97%81%e6%b3%a8%ef%bc%88%e4%b8%8a%ef%bc%89/</link>
		<comments>http://cuitianyi.com/blog/%e3%80%8a%e6%95%b0%e5%ad%a6%e5%88%86%e6%9e%90%e5%8e%9f%e7%90%86%e3%80%8b%e6%97%81%e6%b3%a8%ef%bc%88%e4%b8%8a%ef%bc%89/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 02:17:25 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[生活志]]></category>
		<category><![CDATA[书籍]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[数学分析]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/blog/?p=390</guid>
		<description><![CDATA[注：凡“旁注”性质的笔记，都是无规划不成系统的读书随想。尤其与我大多数短篇的读书笔记一样，并不求别人也看懂。
第1章 (2008.11.16)
1.24：引入复数的一切都很完美，只是这个乘法的定义还是略显突兀。能否通过M1~M5以及零元、幺元等内容将这个定义更顺畅地推导或引入呢？换句话说，有了很自然的加法的定义，要满足(1,0)为幺元以及M1~M5，有了这些条件能否得出“合理”的乘法定义有哪些？于是就是函数方程了。如果这是唯一满足的定义那就完美了，不过我的推测是：它是函数方程所有解中明显、特殊、或朴素的一个。
1.35：又是那种“神来之笔”的证明……怎样理解这优美的构造？
1.A.9：任何两个具有最小上界性的有序域同构。我会找到它的证明。
第2章 (2008.11.17)
这章的目的为何？完全不明白，也没办法搞清定理之间的联系。
2.12：可数个可数集的并是可数集。
2.23：所以同为开集与闭集的集就仅有空集和全集。
2.23：紧集，对于集合的每个开覆盖，存在一个有限子集也是开覆盖。
2.44：Cantor集的概念。
第3章 (2008.11.17)
这章的目的应该是判断及求得数列以及级数的极限。
3.1：极限的概念可以直接在度量空间中定义。
3.21：定理能按数列与级数两种语言来叙述与应用。
3.27：正项不增序列a_i的级数收敛当且仅当2^k a_{2^k}的级数收敛。这可以用相对很稀疏的项判断级数的收敛性。
3.38：幂级数的收敛圆（由根值法推出）。
3.42：∑a_n有界，b_n单调递减到0，∑a_n b_n收敛。（分部法）推论：交错递减则收敛。
3.47：级数乘积的定义有卷积的味道。
3.53：对（收敛但非绝对收敛的）级数重排会改变收敛的值！奇妙……
数列：单调有界定理，比较法，Cauchy准则。
级数：比较法，3.27，另一种形式叙述的Cauchy准则，比率法与根值法（3.37说明前者有效的后者一定有效），收敛半径，分部法及推论。
第4章 (2008.11.18)
4.8：函数 f: X-&#62;Y 连续，当且仅当对于Y的每个开集V，f-1(V)是是X中的开集。（由于开集的补集是闭集，所以叙述中可以换成闭集。）
4.18：一致连续是函数（在某个定义域上）的性质，而连续是函数在点上的性质。然而在紧集上，这两个概念等价。
4.23：函数的连续性保持定义域的连通性。
这章应该是探讨了函数的连续性与第2章中集合的特性的关系。2、4两章应该都是构建后文微分、积分理论大厦的基石与原材料。
第5章 (2008.11.19)
5.9：直接证一般中值定理，很赞。
5.12：导函数可以不连续，但不能有第一类间断，且在区间内能像连续函数一样取到所有中间值。
5.13：L&#8217;Hospital法则的证明，看上去很不直观。Wikipedia上的证明似乎更优美。
5.15：这个证Taylor定理/Lagrange余项的方法简洁得很诡异，其实没看懂……Wikipedia上的先证integral reminder再用积分中值定理直接得到Lagrange reminder的方法直接且精炼。
第6章 (2008.11.20-21)
6.1：这个定义与Wikipedia上的Darboux integral完全相同。上积分、下积分——它们必定存在，可积性便等价于二者是否相等——于我是新鲜的概念。以下便用这些定义（还有一个“加细”）证明了若干关于可积性的性质。
6.2：在概念中增添“-Stieltjes”之后，让关于x的Riemann积分可以关于任意函数α(x)，扩充的要点是，α不必可导，甚至不必连续。
6.15：有点绕……第一遍没看明白。不过的确是一下子让人发现Riemann-Stieltjes对于Riemann的扩充，然后函数值、级数(6.16)都可用一个Riemann-Stieltjes积分来表示，6.18是点出本质的总结。
6.20-21：微积分基本定理的两部分。我总是觉得Wikipedia上的证明一下子就能看懂，这书故作高深的倾向却要让人看很久才知道他是怎么证出来的……这种从定义就开始“立意求高”类似于“伤人乎不？问马。”，教材中的例子有萧树铁的《大学数学——代数与几何》中对行列式的定义。这样的教材的确有境界，不过最好还是借助大众化的Wikipedia补充一下。
]]></description>
			<content:encoded><![CDATA[<p>注：凡“旁注”性质的笔记，都是无规划不成系统的读书随想。尤其与我大多数短篇的读书笔记一样，并不求别人也看懂。</p>
<p><strong>第1章 (2008.11.16)</strong></p>
<p>1.24：引入复数的一切都很完美，只是这个乘法的定义还是略显突兀。能否通过M1~M5以及零元、幺元等内容将这个定义更顺畅地推导或引入呢？换句话说，有了很自然的加法的定义，要满足(1,0)为幺元以及M1~M5，有了这些条件能否得出“合理”的乘法定义有哪些？于是就是函数方程了。如果这是唯一满足的定义那就完美了，不过我的推测是：它是函数方程所有解中明显、特殊、或朴素的一个。</p>
<p>1.35：又是那种“神来之笔”的证明……怎样理解这优美的构造？</p>
<p>1.A.9：任何两个具有最小上界性的有序域同构。我会找到它的证明。</p>
<p><strong>第2章 (2008.11.17)</strong></p>
<p>这章的目的为何？完全不明白，也没办法搞清定理之间的联系。</p>
<p>2.12：可数个可数集的并是可数集。</p>
<p>2.23：所以同为开集与闭集的集就仅有空集和全集。</p>
<p>2.23：紧集，对于集合的每个开覆盖，存在一个有限子集也是开覆盖。</p>
<p>2.44：Cantor集的概念。</p>
<p><strong>第3章 (2008.11.17)</strong></p>
<p>这章的目的应该是判断及求得数列以及级数的极限。</p>
<p>3.1：极限的概念可以直接在度量空间中定义。</p>
<p>3.21：定理能按数列与级数两种语言来叙述与应用。</p>
<p>3.27：正项不增序列a_i的级数收敛当且仅当2^k a_{2^k}的级数收敛。这可以用相对很稀疏的项判断级数的收敛性。</p>
<p>3.38：幂级数的收敛圆（由根值法推出）。</p>
<p>3.42：∑a_n有界，b_n单调递减到0，∑a_n b_n收敛。（分部法）推论：交错递减则收敛。</p>
<p>3.47：级数乘积的定义有卷积的味道。</p>
<p>3.53：对（收敛但非绝对收敛的）级数重排会改变收敛的值！奇妙……</p>
<p>数列：单调有界定理，比较法，Cauchy准则。</p>
<p>级数：比较法，3.27，另一种形式叙述的Cauchy准则，比率法与根值法（3.37说明前者有效的后者一定有效），收敛半径，分部法及推论。</p>
<p><strong>第4章 (2008.11.18)</strong></p>
<p>4.8：函数 f: X-&gt;Y 连续，当且仅当对于Y的每个开集V，f<sup>-1</sup>(V)是是X中的开集。（由于开集的补集是闭集，所以叙述中可以换成闭集。）</p>
<p>4.18：一致连续是函数（在某个定义域上）的性质，而连续是函数在点上的性质。然而在紧集上，这两个概念等价。</p>
<p>4.23：函数的连续性保持定义域的连通性。</p>
<p>这章应该是探讨了函数的连续性与第2章中集合的特性的关系。2、4两章应该都是构建后文微分、积分理论大厦的基石与原材料。</p>
<p><strong>第5章 (2008.11.19)</strong></p>
<p>5.9：直接证一般中值定理，很赞。</p>
<p>5.12：导函数可以不连续，但不能有第一类间断，且在区间内能像连续函数一样取到所有中间值。</p>
<p>5.13：L&#8217;Hospital法则的证明，看上去很不直观。Wikipedia上的证明似乎更优美。</p>
<p>5.15：这个证Taylor定理/Lagrange余项的方法简洁得很诡异，其实没看懂……<a href="http://en.wikipedia.org/wiki/Taylor%27s_theorem#Proof:__Taylor.27s_theorem_in_one_variable">Wikipedia</a>上的先证integral reminder再用积分中值定理直接得到Lagrange reminder的方法直接且精炼。</p>
<p><strong>第6章 (2008.11.20-21)</strong></p>
<p>6.1：这个定义与Wikipedia上的<a href="http://en.wikipedia.org/wiki/Darboux_integral">Darboux integral</a>完全相同。上积分、下积分——它们必定存在，可积性便等价于二者是否相等——于我是新鲜的概念。以下便用这些定义（还有一个“加细”）证明了若干关于可积性的性质。</p>
<p>6.2：在概念中增添“-Stieltjes”之后，让关于x的Riemann积分可以关于任意函数α(x)，扩充的要点是，α不必可导，甚至不必连续。</p>
<p>6.15：有点绕……第一遍没看明白。不过的确是一下子让人发现Riemann-Stieltjes对于Riemann的扩充，然后函数值、级数(6.16)都可用一个Riemann-Stieltjes积分来表示，6.18是点出本质的总结。</p>
<p>6.20-21：微积分基本定理的两部分。我总是觉得<a href="http://en.wikipedia.org/wiki/Fundamental_theorem_of_calculus#Formal_statements">Wikipedia上的证明</a>一下子就能看懂，这书故作高深的倾向却要让人看很久才知道他是怎么证出来的……这种从定义就开始“立意求高”类似于“伤人乎不？问马。”，教材中的例子有萧树铁的《大学数学——代数与几何》中对行列式的定义。这样的教材的确有境界，不过最好还是借助大众化的Wikipedia补充一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/%e3%80%8a%e6%95%b0%e5%ad%a6%e5%88%86%e6%9e%90%e5%8e%9f%e7%90%86%e3%80%8b%e6%97%81%e6%b3%a8%ef%bc%88%e4%b8%8a%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>《简明数论》的简明笔记（中）：13~21节</title>
		<link>http://cuitianyi.com/blog/%e3%80%8a%e7%ae%80%e6%98%8e%e6%95%b0%e8%ae%ba%e3%80%8b%e7%9a%84%e7%ae%80%e6%98%8e%e7%ac%94%e8%ae%b0%ef%bc%88%e4%b8%ad%ef%bc%89%ef%bc%9a1321%e8%8a%82/</link>
		<comments>http://cuitianyi.com/blog/%e3%80%8a%e7%ae%80%e6%98%8e%e6%95%b0%e8%ae%ba%e3%80%8b%e7%9a%84%e7%ae%80%e6%98%8e%e7%ac%94%e8%ae%b0%ef%bc%88%e4%b8%ad%ef%bc%89%ef%bc%9a1321%e8%8a%82/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 06:33:49 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[生活志]]></category>
		<category><![CDATA[书籍]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[数论]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/blog/?p=386</guid>
		<description><![CDATA[
Euler函数φ(m)，定义，积性不完全；

；
；
。

用积性证很简单；证明二：按与m的最大公约数分类。




f(n)的Mobius变换：；

Mobius逆变换：；

以上两式等价，f(n)与F(n)的积性也等价。


f与g的Dirichlet卷积：，h保持f与g的积性。


同余：

a对模m的最小非负剩余、绝对最小剩余；
同余式是等价关系；同余式可加减乘；ca≡cb (mod m)等价于a≡b (mod m/(c,m) )；
对模m的逆的定义。


同余类、完全剩余系定义；

既约剩余系包含的同余类个数即φ(m)。
(a,m)=1时，x遍历m的完全/既约剩余系当且仅当ax遍历m的完全/既约剩余系。

用这个可轻松证明Fermat-Euler定理。




Wilson定理，即(p-1)! ≡ -1 (mod p)。

证：除了-1外，其它因子可与（不相等的）逆元配对抵消。
即，p的既约剩余系的积模p得-1。

扩展：p可换成pk，2pk（这两者p是奇素数）。


事实上，r不取1,2,4,pk,2pk时，r的既约剩余系的积模r得1。


ax≡b (mod m) 型的同余方程。

(a,m)&#124;b 是有解的充要条件，解有(a,m)个。

可求a对m的所有逆元。


注意到一个解是 ，也可用扩展欧几里德求特解。
所有解是，其中0&#60;=t&#60;(a,m)。


形如的一次同余方程组。

若{m_i}两两既约，则解数必为1（中国剩余定理）。

解为。
其中，。
当a_i分别遍历m_i的完全/既约剩余系时，x遍历m的完全/既约剩余系。


若{m_i}并非两两既约，例如(m_i,m_j)=a时，可将模m_i与m_j的两个方程化成模a、m_i/a、m_j/a的三个方程。

编程时，直接化为若干个模p^k的方程似更简便，其中p^k &#124;&#124; [m_1,m_2,...,m_i,...]。


f(x)≡0 (mod n) 的解数设为 T(f;n)，则T(f;n)是关于n的积性函数。

于是只需研究f(x)≡0 (mod p^k)型方程的解法。
即求解多个方程后再解个模{p^k}的一次同余方程组。





]]></description>
			<content:encoded><![CDATA[<ul>
<li>Euler函数φ(m)，定义，积性不完全；
<ul>
<li><img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mathtex.cgi?formdata=%5Cphi%28m%29%3Dm%5Cprod_%7Bp%7Cm%7D%281-%5Cfrac%7B1%7D%7Bp%7D%29" alt="\phi(m)=m\prod_{p|m}(1-\frac{1}{p})" width="152" height="47" />；</li>
<li><img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mathtex.cgi?formdata=%5Cphi%28m%29%3Dm%5Csum_%7Bd%7Cm%7D%5Cfrac%7B%5Cmu%28d%29%7D%7Bd%7D" alt="\phi(m)=m\sum_{d|m}\frac{\mu(d)}{d}" width="137" height="48" />；</li>
<li><img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mathtex.cgi?formdata=%5Csum_%7Bd%7Cm%7D%5Cphi%28d%29%3Dm" alt="\sum_{d|m}\phi(d)=m" width="95" height="39" />。
<ul>
<li>用积性证很简单；证明二：按与m的最大公约数分类。</li>
</ul>
</li>
</ul>
</li>
<li>f(n)的Mobius变换：<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mathtex.cgi?formdata=F%28n%29%3D%5Csum_%7Bd%7Cn%7Df%28d%29" alt="F(n)=\sum_{d|n}f(d)" width="115" height="39" />；
<ul>
<li>Mobius逆变换：<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mathtex.cgi?formdata=f%28n%29%3D%5Csum_%7Bd%7Cn%7D%5Cmu%28d%29F%28%5Cfrac%7Bn%7D%7Bd%7D%29" alt="f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})" width="151" height="43" />；
<ul>
<li>以上两式等价，f(n)与F(n)的积性也等价。</li>
</ul>
</li>
<li>f与g的Dirichlet卷积：<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mathtex.cgi?formdata=h%28n%29%3D%5Csum_%7Bd%7Cn%7Df%28d%29g%28%5Cfrac%7Bn%7D%7Bd%7D%29" alt="h(n)=\sum_{d|n}f(d)g(\frac{n}{d})" width="147" height="43" />，h保持f与g的积性。</li>
</ul>
</li>
<li>同余：
<ul>
<li>a对模m的最小非负剩余、绝对最小剩余；</li>
<li>同余式是等价关系；同余式可加减乘；ca≡cb (mod m)等价于a≡b (mod m/(c,m) )；</li>
<li>对模m的逆的定义。</li>
</ul>
</li>
<li>同余类、完全剩余系定义；
<ul>
<li>既约剩余系包含的同余类个数即φ(m)。</li>
<li>(a,m)=1时，x遍历m的完全/既约剩余系当且仅当ax遍历m的完全/既约剩余系。
<ul>
<li>用这个可轻松证明Fermat-Euler定理。</li>
</ul>
</li>
</ul>
</li>
<li>Wilson定理，即(p-1)! ≡ -1 (mod p)。
<ul>
<li>证：除了-1外，其它因子可与（不相等的）逆元配对抵消。</li>
<li>即，p的既约剩余系的积模p得-1。
<ul>
<li>扩展：p可换成p<sup>k</sup>，2p<sup>k</sup>（这两者p是奇素数）。</li>
</ul>
</li>
<li>事实上，r不取1,2,4,p<sup>k</sup>,2p<sup>k</sup>时，r的既约剩余系的积模r得1。</li>
</ul>
</li>
<li>ax≡b (mod m) 型的同余方程。
<ul>
<li>(a,m)|b 是有解的充要条件，解有(a,m)个。
<ul>
<li>可求a对m的所有逆元。</li>
</ul>
</li>
<li>注意到一个解是 <img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mimetex.cgi?formdata=x_0+%3D+a%5E%7B%5Cphi%28m%29-1%7Db" alt="x_0 = a^{\phi(m)-1}b" />，也可用扩展欧几里德求特解。</li>
<li>所有解是<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mimetex.cgi?formdata=x_0+%2B+%5Cfrac%7Bm%7D%7B%28a%2Cm%29%7Dt" alt="x_0 + \frac{m}{(a,m)}t" width="80" height="27" />，其中0&lt;=t&lt;(a,m)。</li>
</ul>
</li>
<li>形如<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mimetex.cgi?formdata=x+%5Cequiv+a_i+%5Cpmod%7Bm_i%7D" alt="x \equiv a_i \pmod{m_i}" width="120" height="24" />的一次同余方程组。
<ul>
<li>若{m_i}两两既约，则解数必为1（中国剩余定理）。
<ul>
<li>解为<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mimetex.cgi?formdata=x+%5Cequiv+%5Csum+M_i+M_i%5E%7B-1%7Da_i+%5Cpmod%7Bm%7D" alt="x \equiv \sum M_i M_i^{-1}a_i \pmod{m}" />。</li>
<li>其中<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mimetex.cgi?formdata=m+%3D+%5Cprod+m_i+%3D+M_i+m_i" alt="m = \prod m_i = M_i m_i" />，<img style="vertical-align: middle;" src="http://www.forkosh.dreamhost.com/mimetex.cgi?formdata=M_i+M_i%5E%7B-1%7D+%5Cequiv+1+%5Cpmod%7Bm_i%7D" alt="M_i M_i^{-1} \equiv 1 \pmod{m_i}" width="168" height="28" />。</li>
<li>当a_i分别遍历m_i的完全/既约剩余系时，x遍历m的完全/既约剩余系。</li>
</ul>
</li>
<li>若{m_i}并非两两既约，例如(m_i,m_j)=a时，可将模m_i与m_j的两个方程化成模a、m_i/a、m_j/a的三个方程。
<ul>
<li>编程时，直接化为若干个模p^k的方程似更简便，其中p^k || [m_1,m_2,...,m_i,...]。</li>
</ul>
</li>
<li>f(x)≡0 (mod n) 的解数设为 T(f;n)，则T(f;n)是关于n的积性函数。
<ul>
<li>于是只需研究f(x)≡0 (mod p^k)型方程的解法。</li>
<li>即求解多个方程后再解个模{p^k}的一次同余方程组。</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/%e3%80%8a%e7%ae%80%e6%98%8e%e6%95%b0%e8%ae%ba%e3%80%8b%e7%9a%84%e7%ae%80%e6%98%8e%e7%ac%94%e8%ae%b0%ef%bc%88%e4%b8%ad%ef%bc%89%ef%bc%9a1321%e8%8a%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACM/ICPC &#8211; Asia Harbin 2008 小结</title>
		<link>http://cuitianyi.com/blog/acmicpc-asia-harbin-2008-%e5%b0%8f%e7%bb%93/</link>
		<comments>http://cuitianyi.com/blog/acmicpc-asia-harbin-2008-%e5%b0%8f%e7%bb%93/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 02:56:51 +0000</pubDate>
		<dc:creator>tianyi</dc:creator>
				<category><![CDATA[军机处]]></category>
		<category><![CDATA[生活志]]></category>
		<category><![CDATA[ACM-ICPC]]></category>
		<category><![CDATA[Harbin]]></category>
		<category><![CDATA[Regional]]></category>

		<guid isPermaLink="false">http://cuitianyi.com/blog/?p=387</guid>
		<description><![CDATA[10月8日晚的火车，三十多个小时的旅途，去往一座遥远陌生的北方城市，哈尔滨。
上火车后，惊喜地发现，我们硬卧车厢的走廊窗口下竟然有两相和三相的电源插座！可以无顾忌地使用电脑，似乎会给旅途增添不少趣味和意义。火车上，我把觉得比较有用的论文看了一遍，又对照着CD看了几章《听音乐》。
我在重要的比赛或考试之前容易滋生紧张情绪，这也是NOI2007的败笔之一。不过这次不同，一路上有队友相伴，本应枯燥的车厢里，充满欢声笑语。
灿哥通过神奇方式买到的火车票十张全是上铺，不过大家发现这种新式车厢的上铺非常舒服。更何况，在某人的下铺处有一只天真无邪可爱动人如假包换的小萝莉……这个话题不展开了，请自行YY。
T_T同学出了一些猥琐的迷题（e.g. 一只公牛和一只母牛同时踩坏了别人家的田，为何公牛主人赔偿三分之一而母牛主人赔偿三分之二？），令大家都很惊讶的，某位dd同学几乎每次都反应很快地第一个说出答案。好吧……在此我申明三点：第一，那些迷题没有一个是我之前听过的；第二，之所以我每次都能最先得出答案，我的唯一解释就是：我的思维敏捷、智商高；第三，我很天真哒，我的话讲完啦。
火车上的每顿饭都去餐车吃，虽然贵且不好吃，但毕竟是能找到的最佳选择了。这时T_T同学的母亲在德州站送上来的三只扒鸡正如雪中送炭，众饕餮很快就将那些可怜的无毛二足动物杀得片甲不留，对其二足尤不留情^_^。
火车到站时间是10日早晨5时许，一群几乎都没来过东北的人立即领教了寒风的威力。一干人等饥寒交迫地奔赴某盖头gg事先选定的车站门口的KFC，却发现人满为患无处容身。我通过手机上的Google Map搜索到了最近的另一家KFC，大家便打车前往。BTW，发现哈尔滨的GPRS网络很棒，明显感觉到比杭州的快，然而不知为何某只很拉风的iPhone在哈尔滨却无论怎样都连不上GPRS……
KFC的早餐让大家都找回了久违的饱腹感，充电完成的一干人等玩起了由gdb引进的多人纸牌游戏“盖棉被”。如果仅描述规则的话，听起来真是一个挺傻气且低技术含量的游戏：若干人轮流出牌，同时循环报数1至13；若某人打出的牌和说出的数字恰相同，所有人都需要尽量快地将手掌盖向牌堆，盖在最上面的手掌（也即反应最慢的）需要拿走所有的牌；手中无牌者胜。不过大家都玩得不亦乐乎，情不自禁高声大叫，引来了KFC MM礼貌的制止。在KFC的经历，让大家明白了一个深刻的道理（做小学生作文状）：南北风俗不一样！好吧，看不懂的请略过或自行YY -___-。
打车来到哈尔滨工程大学……门口的八一宾馆报到，然后在志愿者MM的带领下入住十五元一天的学生宿舍-___-，还好后来在我们强烈要求下换成八一宾馆的标准间了^_^，偶和可爱的xgy队长gg一间哦~
10日一天都没什么安排，继续盖几圈棉被以后，一堆无聊人士围坐一圈玩起了同样低技术含量的梭哈，用另一副牌当筹码。赌博的结果是有的人（可怜的xgy gg，cmft）输到倾家荡产，有的人（就是我啦^_^，嘻嘻）成了大资本家，我赢了比翻倍还要多哦~
午饭选在某忘记了名字的火锅店，灿哥中途从机场赶来加入。相信大家都吃饱了，而且我自己认为吃得还不错，只是某人点了过多的丸子浪费不少……
下午和晚上，除了必要的赛前准备，大家仍然把时间用在了打牌与谈天之类娱乐放松的项目上。期间七个人玩两副牌的接龙还是挺好玩的。顺便炫耀下，在哈尔滨玩的很多盘接龙的分数都记录了下来，在幸运与实力的双重照耀下，dd同学是总积分的最后赢家~oh yeah~
期间值得一提的事情是，我们目睹了某欧阳极囧的脸红过程，并拍下了真相。欲知详情，请私下交流或自行YY……关键字：罩杯-___-。
10日晚上一直玩到午夜才睡。
11日上午貌似仍然是谈天玩牌。哈工程“大学生美食广场”午饭后，Genesis+gdb的猥琐男们在哈工程的长椅上懒洋洋地晒太阳，顺便开展猥琐的分手现场偷窥行动以及路过MM打分行动，期间小耗子乱入-___-。
下午试机，觉得电脑上的NetBeans还算好用，决定第二天比赛就用它了。试机期间，主办方的组织让人不能满意：每队三个人只有一份题目且不说，最不能忍受的是judge故障连连。我默默祈祷正式比赛时最好不要出现judge问题。
11日晚上，大家没有过分的娱乐，早早回到了各自的房间里养精蓄锐。我看了lrj“习题指导”和北大出版社《简明数论》两本书中的重要章节，听了贝交第五全曲，九点半安然入睡。
12日早晨六点半，醒来后的我感到前所未有的精神焕发，觉得这应该就是所谓的最佳比赛状态了。早餐中，灿哥给我们讲了若干“坚持到最后一分钟翻盘”的传奇故事。我相信听者没人想到，那天的比赛中，我们中的一支队伍会创造另一个传奇，一个毫不逊色，且注定被一遍遍讲述的传奇。
开赛半小时前进入场地，我们的装备大致如下：德芙巧克力一盒、红牛饮料若干罐、圣经一本（和合本+NIV对照）、牛津高阶词典一本、以及常用参考书一堆。
比赛开始了，共有十题，从A到J。按照一贯的读题分配：T_T看ABC，xgy看DEFG，我看HIJ。
我分到的题目都比较长，H大致看懂了，断定绝不是前期能写的题；I题意很简单，给定一个顶点的度序列，问是否存在对应的无向简单图，我觉得这应该是的经典问题，但却完全没看过类似的问题或算法；J的题意也不难理解，但可以看出，相当有大自然题的潜质。
大家把题都看的差不多了以后，互相两两交流了一下题意，没发现明显可做的题目。这时看到大屏幕上已经有四个队过题了，过的都是I。我意识到，I肯定不是难题，便专心yy之。期间xgy和我都怀疑是否只判断一下度的奇偶性就可以了，不过很快找到了反例。仿佛灵光一闪，我脑中突然出现了一个贪心构造的方法，讨论后，大家都没思路证明其正确性，却也找不到反例，于是我便上去敲了代码并提交之。
这时看到有牛队过了A，T_T给我讲了题意后，我写出前N层和的表达式给了他，他完善了一下二分答案的细节，便上去写了。写完后发现，按照我给的表达式计算的话，虽然输入不会超过六十四位整数，然而计算的中间过程完全可能会溢出，一时没有找到解决之道，只好由xgy把这个C++程序翻译成Java用BigInteger来写，交上去以后很快返回了Yes。这时已经拖了不知多久的I终于返回了，还好是个Yes。拿到两个气球的我们排名并不乐观。
在此之前，xgy给我讲了他对F的想法，我在他的基础上很快推出了完整的充要条件，但我俩都不太确定该怎么实现比较好。T_T听见后表示，如果充要条件是这样的话，那么他完全能写，因为写过很类似的题目。于是他上去用DP/递推的方式写了个程序，很快Yes了。三道题都1Y的我们第一次冲进了前十名。
写F期间，我和xgy在讨论G题，这道题的文字叙述得挺模糊的，不过通过仔细阅读加合理推测，我们很快发现原来就是一个有向无环图上的博弈问题，拓扑排序一遍再DP就行了，我上去写了以后也1Y了。当我们第4题的AC反映在大屏幕上的时候，我发现，在比赛时间过去约一半时，我们是全场第一个AC 4题的队伍，排名第一。旁边堪称全明星的清华IronGods队也只有三个气球。
这是我第一次感到情绪波动的时候，在此之前，我一直都保持着平和淡定的情绪，精神非常集中，头脑非常清醒，基本上处于巅峰状态，思考和敲题的效率都很高。然而此刻，看着大屏幕上飘扬在最上方的team53（我们的队伍编号），我出现了不应该有的过分激动以及过分自信。现在，我（多少有些羞愧地）承认，在那一瞬间，我想到了斯德哥尔摩。暂时领先造成的情绪波动直接影响到了我后半程的发挥，这也是我个人本次比赛得到的最重要的教训。
C题大概是早就得出了二分图最优匹配的算法，T_T上去写，似乎是用了令我难以置信的短暂时间就敲完了。交上去以后，返回了我们的第一个WA。我提醒T_T是否注意到船到达port以后不能再出来的条件，他意识到忽视了这一点，很快改好了，没想到仍然是WA。于是T_T打印了代码让xgy和我看。给代码查错应该是最需要集中精力的活，而我在看那份代码时却完全做不到这点，草草地、甚至一目十行地在看，怎么看都觉得没错误。很无奈的我们便想，是不是题目比较阴险必须用64位整数才可以过呢？其实赛后来看，这绝对是不必要的想法。因为当时至少有十多支队伍过了C，不少队伍都是作为第四道题过的C，且其中不乏1Y。这可以推断出，WA不大可能源于出题人的阴险，而是应该源于我们自身的问题。不过，当时的情况是，改了long long，依然WA。这期间，4题甚至5题的队伍越来越多，我们的rank一直在跌，前景非常不容乐观。看来我的缺点就是这样……处于顺境的时候容易被冲昏头脑，只有适当的逆境才能达到冷静。我再次看T_T的代码，不漏过一个字符的认真看，终于发现了程序中的低级bug。——只是注释掉了一行代码，程序就AC了。那个错误的根本原因是T_T在写那一小段时稍微有点想错了，而我从局外的角度看这段代码时，本应很快意识到这个几近愚蠢的错误，然而由于第一遍的不专心，我直到若干次WA之后第二遍阅读代码时才发现了它，这题做得不好，我至少应该承担一半的责任。
还好，虽然C题罚时比较多，在我们前四道题全部1Y的基础上，终于五题的我们名次还不错。接下来可做的题只有B和D。前者是数论题，我已经推导出了一个结果，有算法了；后者是纯粹的高斯消元而已；二者的共同点是都需要用到大数，最好是用Java来写。嗯……应该是我们队的另一个缺陷吧，我们没有人能把Java写得跟C++一样熟，所以必须用Java写的题在敲代码的速度上是吃亏的，甚至有些有关语言特性的东西还需要在赛场上试一试才知道。我们三人中写Java最熟练的xgy队长觉得B似乎更容易实现，于是便上去写。花费了比通常要多的时间，但却是严格地按照我给定的算法写出来的，没想到交上去以后WA了，只好打印出来交给我们查错，而他自己接着写D。——我想在这时我们的缺陷就完全暴露出来了：剩下两道可以写的题都需要用Java写，而赛前的训练中用Java写过题的竟只有xgy一人。这导致此时能写D的仍然只有xgy，而自己写的B还没能AC的xgy恐怕无法专心全力去写D，T_T和我在下面对着打印出来的B的Java代码YY其bug……T_T和我一致认为那Java代码十分“诡异”，表达算法时显得很不直白，但分析的结果也无法找到错误。我建议把那代码改成不那么诡异的形式再试试，大家同意了，便放下D来改B的代码。终于改出了比较清晰易懂的代码以后，测试的结果却似乎与刚才“诡异”的程序并无区别……（期间我还忍不住下手帮着写了几行，现在回忆时发现，赛场上的那几行其实是我平生第一次写Java代码- -。。。）貌似又是在我的撺掇下，把那个改完以后完全看不到区别的程序提交了，结果又是WA。这时进入比赛的最后一小时已经有一段时间了，封了board，各个队伍的排名已经不再实时公布，但从现场升起的气球情况来看，貌似已经有七题的队伍了，如果我们再不抓紧时间搞出第六题，能否拿到金牌相当未知……这时xgy继续写不知道有多大希望的D，而T_T和我做了一个相当正确的决定：我们从题意开始，对推导的过程完整地讨论地检查了一遍。期间，T_T的一句话启发了我，我发现原来是我在一开始的数学推导中少考虑了一种情况，难怪一直WA到死……我谢罪。。。还好把那种情况的代码加到程序里并不困难，加上以后就AC了，在比赛还剩十多分钟的时候，我们终于六题。
看到屏幕上的Yes的时候，我们全都激动地站了起来振臂欢呼。这是出现了一个喜剧性的小插曲，比赛的志愿者MM给我们送气球时弄错了：应该给我们的是B题对应的浅紫色气球，她却拿来了J题对应的深紫色气球。据说当时观众席上立刻一片哗然，没人想到会有队伍在比赛中把最不可做的J给做出来。周维民教授（ICPC中国区秘书长）也马上带着一堆摄影记者走过来对着我们不住地拍照。（嗯，以上文字有野史的风范，若有不确切之处请一笑而过^_^。。。）
最后几分钟的时间里xgy在敲D，不过花在这题上的时间和精力的确是比较少，加之我们不知道高斯消元在无需考虑精度的情况下会有比标准的做法好写很多的实现，所以直到最后也没能写完。至于旁边我们的Sirius凭借最后一分钟提交的D题冲至第五的神迹，我们也只有深深膜拜了。。。Orz
金牌到手的我们无忧无虑，下午我玩了会儿牌，听了会儿音乐，晚上代表队伍上台领奖（非常感谢队里的两位gg给我这个荣耀的时刻）。
接下来的时间里，Genesis与Sirius们都兴高采烈，发挥失误获得银牌的三个gdb则无法避免地淡淡失落。不过大家都知道团结勤奋的gdb实力还是相当强的，相信你们下次在成都的比赛中会弥补这次的遗憾！
其实我发现……比赛结束以后的事情我大都不太清楚了，因为颁奖结束的那天晚上起我就全身心地沉迷在一本奇书里。包括在归途火车上也一直是捧着电脑在进行一千多页的脑力激荡与思维历险……嗯，接下来我会抽空慢慢写点关于GEB的读后感的，虽然一下子很难整理出繁复的思绪。。。
哦……这次的哈尔滨之行Sirius与gdb各自也有非常精彩的小结，请原谅这篇略有些虎头蛇尾的文章吧，这五千多字已经写得我要吐血啦。。。有什么脱误遗漏错愕指出请指出，我一定修改。
好了，下一站杭州，在自己家门口比赛，相信通过对哈尔滨之行的总结，我们会越发完美。Genesis加油！
]]></description>
			<content:encoded><![CDATA[<p>10月8日晚的火车，三十多个小时的旅途，去往一座遥远陌生的北方城市，哈尔滨。</p>
<p>上火车后，惊喜地发现，我们硬卧车厢的走廊窗口下竟然有两相和三相的电源插座！可以无顾忌地使用电脑，似乎会给旅途增添不少趣味和意义。火车上，我把觉得比较有用的论文看了一遍，又对照着CD看了几章《<a href="http://www.douban.com/subject/3095037/">听音乐</a>》。</p>
<p>我在重要的比赛或考试之前容易滋生紧张情绪，这也是NOI2007的败笔之一。不过这次不同，一路上有队友相伴，本应枯燥的车厢里，充满欢声笑语。</p>
<p>灿哥通过神奇方式买到的火车票十张全是上铺，不过大家发现这种新式车厢的上铺非常舒服。更何况，在某人的下铺处有一只天真无邪可爱动人如假包换的小萝莉……这个话题不展开了，请自行YY。</p>
<p>T_T同学出了一些猥琐的迷题（e.g. 一只公牛和一只母牛同时踩坏了别人家的田，为何公牛主人赔偿三分之一而母牛主人赔偿三分之二？），令大家都很惊讶的，某位dd同学几乎每次都反应很快地第一个说出答案。好吧……在此我申明三点：第一，那些迷题没有一个是我之前听过的；第二，之所以我每次都能最先得出答案，我的唯一解释就是：我的思维敏捷、智商高；第三，我很天真哒，我的话讲完啦。</p>
<p>火车上的每顿饭都去餐车吃，虽然贵且不好吃，但毕竟是能找到的最佳选择了。这时T_T同学的母亲在德州站送上来的三只扒鸡正如雪中送炭，众饕餮很快就将那些可怜的无毛二足动物杀得片甲不留，对其二足尤不留情^_^。</p>
<p>火车到站时间是10日早晨5时许，一群几乎都没来过东北的人立即领教了寒风的威力。一干人等饥寒交迫地奔赴某盖头gg事先选定的车站门口的KFC，却发现人满为患无处容身。我通过手机上的Google Map搜索到了最近的另一家KFC，大家便打车前往。BTW，发现哈尔滨的GPRS网络很棒，明显感觉到比杭州的快，然而不知为何某只很拉风的iPhone在哈尔滨却无论怎样都连不上GPRS……</p>
<p>KFC的早餐让大家都找回了久违的饱腹感，充电完成的一干人等玩起了由gdb引进的多人纸牌游戏“盖棉被”。如果仅描述规则的话，听起来真是一个挺傻气且低技术含量的游戏：若干人轮流出牌，同时循环报数1至13；若某人打出的牌和说出的数字恰相同，所有人都需要尽量快地将手掌盖向牌堆，盖在最上面的手掌（也即反应最慢的）需要拿走所有的牌；手中无牌者胜。不过大家都玩得不亦乐乎，情不自禁高声大叫，引来了KFC MM礼貌的制止。在KFC的经历，让大家明白了一个深刻的道理（做小学生作文状）：南北风俗不一样！好吧，看不懂的请略过或自行YY -___-。</p>
<p>打车来到哈尔滨工程大学……门口的八一宾馆报到，然后在志愿者MM的带领下入住十五元一天的学生宿舍-___-，还好后来在我们强烈要求下换成八一宾馆的标准间了^_^，偶和可爱的xgy队长gg一间哦~</p>
<p>10日一天都没什么安排，继续盖几圈棉被以后，一堆无聊人士围坐一圈玩起了同样低技术含量的梭哈，用另一副牌当筹码。赌博的结果是有的人（可怜的xgy gg，cmft）输到倾家荡产，有的人（就是我啦^_^，嘻嘻）成了大资本家，我赢了比翻倍还要多哦~</p>
<p>午饭选在某忘记了名字的火锅店，灿哥中途从机场赶来加入。相信大家都吃饱了，而且我自己认为吃得还不错，只是某人点了过多的丸子浪费不少……</p>
<p>下午和晚上，除了必要的赛前准备，大家仍然把时间用在了打牌与谈天之类娱乐放松的项目上。期间七个人玩两副牌的接龙还是挺好玩的。顺便炫耀下，在哈尔滨玩的很多盘接龙的分数都记录了下来，在幸运与实力的双重照耀下，dd同学是总积分的最后赢家~oh yeah~</p>
<p>期间值得一提的事情是，我们目睹了某欧阳极囧的脸红过程，并拍下了真相。欲知详情，请私下交流或自行YY……关键字：罩杯-___-。</p>
<p>10日晚上一直玩到午夜才睡。</p>
<p>11日上午貌似仍然是谈天玩牌。哈工程“大学生美食广场”午饭后，Genesis+gdb的猥琐男们在哈工程的长椅上懒洋洋地晒太阳，顺便开展猥琐的分手现场偷窥行动以及路过MM打分行动，期间小耗子乱入-___-。</p>
<p>下午试机，觉得电脑上的NetBeans还算好用，决定第二天比赛就用它了。试机期间，主办方的组织让人不能满意：每队三个人只有一份题目且不说，最不能忍受的是judge故障连连。我默默祈祷正式比赛时最好不要出现judge问题。</p>
<p>11日晚上，大家没有过分的娱乐，早早回到了各自的房间里养精蓄锐。我看了lrj“习题指导”和北大出版社《简明数论》两本书中的重要章节，听了贝交第五全曲，九点半安然入睡。</p>
<p>12日早晨六点半，醒来后的我感到前所未有的精神焕发，觉得这应该就是所谓的最佳比赛状态了。早餐中，灿哥给我们讲了若干“坚持到最后一分钟翻盘”的传奇故事。我相信听者没人想到，那天的比赛中，我们中的一支队伍会创造另一个传奇，一个毫不逊色，且注定被一遍遍讲述的传奇。</p>
<p>开赛半小时前进入场地，我们的装备大致如下：德芙巧克力一盒、红牛饮料若干罐、圣经一本（和合本+NIV对照）、牛津高阶词典一本、以及常用参考书一堆。</p>
<p>比赛开始了，共有十题，从A到J。按照一贯的读题分配：T_T看ABC，xgy看DEFG，我看HIJ。</p>
<p>我分到的题目都比较长，H大致看懂了，断定绝不是前期能写的题；I题意很简单，给定一个顶点的度序列，问是否存在对应的无向简单图，我觉得这应该是的经典问题，但却完全没看过类似的问题或算法；J的题意也不难理解，但可以看出，相当有大自然题的潜质。</p>
<p>大家把题都看的差不多了以后，互相两两交流了一下题意，没发现明显可做的题目。这时看到大屏幕上已经有四个队过题了，过的都是I。我意识到，I肯定不是难题，便专心yy之。期间xgy和我都怀疑是否只判断一下度的奇偶性就可以了，不过很快找到了反例。仿佛灵光一闪，我脑中突然出现了一个贪心构造的方法，讨论后，大家都没思路证明其正确性，却也找不到反例，于是我便上去敲了代码并提交之。</p>
<p>这时看到有牛队过了A，T_T给我讲了题意后，我写出前N层和的表达式给了他，他完善了一下二分答案的细节，便上去写了。写完后发现，按照我给的表达式计算的话，虽然输入不会超过六十四位整数，然而计算的中间过程完全可能会溢出，一时没有找到解决之道，只好由xgy把这个C++程序翻译成Java用BigInteger来写，交上去以后很快返回了Yes。这时已经拖了不知多久的I终于返回了，还好是个Yes。拿到两个气球的我们排名并不乐观。</p>
<p>在此之前，xgy给我讲了他对F的想法，我在他的基础上很快推出了完整的充要条件，但我俩都不太确定该怎么实现比较好。T_T听见后表示，如果充要条件是这样的话，那么他完全能写，因为写过很类似的题目。于是他上去用DP/递推的方式写了个程序，很快Yes了。三道题都1Y的我们第一次冲进了前十名。</p>
<p>写F期间，我和xgy在讨论G题，这道题的文字叙述得挺模糊的，不过通过仔细阅读加合理推测，我们很快发现原来就是一个有向无环图上的博弈问题，拓扑排序一遍再DP就行了，我上去写了以后也1Y了。当我们第4题的AC反映在大屏幕上的时候，我发现，在比赛时间过去约一半时，我们是全场第一个AC 4题的队伍，排名第一。旁边堪称全明星的清华IronGods队也只有三个气球。</p>
<p>这是我第一次感到情绪波动的时候，在此之前，我一直都保持着平和淡定的情绪，精神非常集中，头脑非常清醒，基本上处于巅峰状态，思考和敲题的效率都很高。然而此刻，看着大屏幕上飘扬在最上方的team53（我们的队伍编号），我出现了不应该有的过分激动以及过分自信。现在，我（多少有些羞愧地）承认，在那一瞬间，我想到了斯德哥尔摩。暂时领先造成的情绪波动直接影响到了我后半程的发挥，这也是我个人本次比赛得到的最重要的教训。</p>
<p>C题大概是早就得出了二分图最优匹配的算法，T_T上去写，似乎是用了令我难以置信的短暂时间就敲完了。交上去以后，返回了我们的第一个WA。我提醒T_T是否注意到船到达port以后不能再出来的条件，他意识到忽视了这一点，很快改好了，没想到仍然是WA。于是T_T打印了代码让xgy和我看。给代码查错应该是最需要集中精力的活，而我在看那份代码时却完全做不到这点，草草地、甚至一目十行地在看，怎么看都觉得没错误。很无奈的我们便想，是不是题目比较阴险必须用64位整数才可以过呢？其实赛后来看，这绝对是不必要的想法。因为当时至少有十多支队伍过了C，不少队伍都是作为第四道题过的C，且其中不乏1Y。这可以推断出，WA不大可能源于出题人的阴险，而是应该源于我们自身的问题。不过，当时的情况是，改了long long，依然WA。这期间，4题甚至5题的队伍越来越多，我们的rank一直在跌，前景非常不容乐观。看来我的缺点就是这样……处于顺境的时候容易被冲昏头脑，只有适当的逆境才能达到冷静。我再次看T_T的代码，不漏过一个字符的认真看，终于发现了程序中的低级bug。——只是注释掉了一行代码，程序就AC了。那个错误的根本原因是T_T在写那一小段时稍微有点想错了，而我从局外的角度看这段代码时，本应很快意识到这个几近愚蠢的错误，然而由于第一遍的不专心，我直到若干次WA之后第二遍阅读代码时才发现了它，这题做得不好，我至少应该承担一半的责任。</p>
<p>还好，虽然C题罚时比较多，在我们前四道题全部1Y的基础上，终于五题的我们名次还不错。接下来可做的题只有B和D。前者是数论题，我已经推导出了一个结果，有算法了；后者是纯粹的高斯消元而已；二者的共同点是都需要用到大数，最好是用Java来写。嗯……应该是我们队的另一个缺陷吧，我们没有人能把Java写得跟C++一样熟，所以必须用Java写的题在敲代码的速度上是吃亏的，甚至有些有关语言特性的东西还需要在赛场上试一试才知道。我们三人中写Java最熟练的xgy队长觉得B似乎更容易实现，于是便上去写。花费了比通常要多的时间，但却是严格地按照我给定的算法写出来的，没想到交上去以后WA了，只好打印出来交给我们查错，而他自己接着写D。——我想在这时我们的缺陷就完全暴露出来了：剩下两道可以写的题都需要用Java写，而赛前的训练中用Java写过题的竟只有xgy一人。这导致此时能写D的仍然只有xgy，而自己写的B还没能AC的xgy恐怕无法专心全力去写D，T_T和我在下面对着打印出来的B的Java代码YY其bug……T_T和我一致认为那Java代码十分“诡异”，表达算法时显得很不直白，但分析的结果也无法找到错误。我建议把那代码改成不那么诡异的形式再试试，大家同意了，便放下D来改B的代码。终于改出了比较清晰易懂的代码以后，测试的结果却似乎与刚才“诡异”的程序并无区别……（期间我还忍不住下手帮着写了几行，现在回忆时发现，赛场上的那几行其实是我平生第一次写Java代码- -。。。）貌似又是在我的撺掇下，把那个改完以后完全看不到区别的程序提交了，结果又是WA。这时进入比赛的最后一小时已经有一段时间了，封了board，各个队伍的排名已经不再实时公布，但从现场升起的气球情况来看，貌似已经有七题的队伍了，如果我们再不抓紧时间搞出第六题，能否拿到金牌相当未知……这时xgy继续写不知道有多大希望的D，而T_T和我做了一个相当正确的决定：我们从题意开始，对推导的过程完整地讨论地检查了一遍。期间，T_T的一句话启发了我，我发现原来是我在一开始的数学推导中少考虑了一种情况，难怪一直WA到死……我谢罪。。。还好把那种情况的代码加到程序里并不困难，加上以后就AC了，在比赛还剩十多分钟的时候，我们终于六题。</p>
<p>看到屏幕上的Yes的时候，我们全都激动地站了起来振臂欢呼。这是出现了一个喜剧性的小插曲，比赛的志愿者MM给我们送气球时弄错了：应该给我们的是B题对应的浅紫色气球，她却拿来了J题对应的深紫色气球。据说当时观众席上立刻一片哗然，没人想到会有队伍在比赛中把最不可做的J给做出来。周维民教授（ICPC中国区秘书长）也马上带着一堆摄影记者走过来对着我们不住地拍照。（嗯，以上文字有野史的风范，若有不确切之处请一笑而过^_^。。。）</p>
<p>最后几分钟的时间里xgy在敲D，不过花在这题上的时间和精力的确是比较少，加之我们不知道高斯消元在无需考虑精度的情况下会有比标准的做法好写很多的实现，所以直到最后也没能写完。至于旁边我们的Sirius凭借最后一分钟提交的D题冲至第五的神迹，我们也只有深深膜拜了。。。Orz</p>
<p>金牌到手的我们无忧无虑，下午我玩了会儿牌，听了会儿音乐，晚上代表队伍上台领奖（非常感谢队里的两位gg给我这个荣耀的时刻）。</p>
<p>接下来的时间里，Genesis与Sirius们都兴高采烈，发挥失误获得银牌的三个gdb则无法避免地淡淡失落。不过大家都知道团结勤奋的gdb实力还是相当强的，相信你们下次在成都的比赛中会弥补这次的遗憾！</p>
<p>其实我发现……比赛结束以后的事情我大都不太清楚了，因为颁奖结束的那天晚上起我就全身心地沉迷在<a href="http://www.douban.com/subject/1291204/">一本奇书</a>里。包括在归途火车上也一直是捧着电脑在进行一千多页的脑力激荡与思维历险……嗯，接下来我会抽空慢慢写点关于GEB的读后感的，虽然一下子很难整理出繁复的思绪。。。</p>
<p>哦……这次的哈尔滨之行Sirius与gdb各自也有非常精彩的小结，请原谅这篇略有些虎头蛇尾的文章吧，这五千多字已经写得我要吐血啦。。。有什么脱误遗漏错愕指出请指出，我一定修改。</p>
<p>好了，下一站杭州，在自己家门口比赛，相信通过对哈尔滨之行的总结，我们会越发完美。Genesis加油！</p>
]]></content:encoded>
			<wfw:commentRss>http://cuitianyi.com/blog/acmicpc-asia-harbin-2008-%e5%b0%8f%e7%bb%93/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
