sicp每日一题[2.44]

news/2024/10/14 8:26:42

我在这一章遇到了一个大问题,就是书上用的那些函数 beside, wave, flip-vert 我统统用不了。我用的是 DrRacket 这个软件,在网上查了半天,终于找到了解决办法。
首先是官方教程,在 DrRacket 中依次打开 File -> Package Manager...,在弹出的页面中 "Do What I Mean" 菜单页的输入:sicp,回车之后自动安装就行了。
但是我试了好几次,总是因为网络问题没法下载成功,最后求助于 chatgpt 终于解决了。
首先是手动下载 sicp 包到 Racket 安装目录,然后打开 cmd 命令行,输入 raco pkg install ./sicp 即可用本地的 sicp 目录安装包。
安装好之后,重启 DrRacket 软件,依次点击上方菜单栏的 Language -> Choose Language,在弹出的页面中,找到 Teaching Languages(ctl-T) 下选择 SICP(PLaneT 1.18),点击 OK。
再次回到代码编辑页面后,就不需要开头的 #lang racket 了,直接写代码就行。
还有一点,安装的 sicp 包里也是没有 wave, rogers 的,但是提供了 einstein,所以可以用 (define wave einstein) 替换掉或者把书上所有代码里的 wave 都用 einstein 代替。不过直接在文件里输入 einstein 或者 wave 是看不到图象的,而是以以 #procedure 的形式存在的,需要用 (paint einstein) 显式地调用,这样就可以看到爱神的头像了。

Exercise 2.44

Define the procedure up-split used by corner-split. It is similar to right-split, except that it switches the roles of below and beside.


这道题非常的简单,就像题目所说的那样,只要交换 below 和 beside 的位置就行。

(paint (right-split wave 1))(define (up-split painter n)(if (= n 0)painter(let ((smaller (up-split painter (- n 1))))(below painter (beside smaller smaller)))))(paint (up-split wave 1))(define (corner-split painter n)(if (= n 0)painter(let ((up (up-split painter (- n 1)))(right (right-split painter (- n 1))))(let ((top-left (beside up up))(bottom-right (below right right))(corner (corner-split painter (- n 1))))(beside (below painter top-left)(below bottom-right corner))))))(paint (corner-split wave 1))
(paint (corner-split wave 2))

效果如下图:



不过这是全新的内容,我觉得最好先理解 below 和 beside 的作用,其实就是字面意思,beside 是把2个图形左右排列,第一个图形在左边;below 是把2个图形上下排列,但是要注意它是把第二个图形放在上面,如下图所示:

(define wave einstein)(paint (beside wave (below wave wave)))
(paint (below (beside wave wave) wave))


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Day7 备战CCF-CSP练习

201409-4Day 7 题目描述 栋栋最近开了一家餐饮连锁店,提供外卖服务。 随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题。 栋栋的连锁店所在的区域可以看成是一个 \(nn\)的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客…

Windows Server 2025 OVF, released Sep 2024 (sysin) - VMware 虚拟机模板

Windows Server 2025 OVF, released Sep 2024 (sysin) - VMware 虚拟机模板Windows Server 2025 OVF, released Sep 2024 (sysin) - VMware 虚拟机模板 2024 年 9 月版本更新,现在自动运行 sysprep,支持 ESXi Host Client 部署 请访问原文链接:https://sysin.org/blog/windo…

Burp Suite Professional 2024.9 发布下载,新增功能概览

Burp Suite Professional 2024.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描Burp Suite Professional 2024.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接:https://sys…

C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

再见,数据中台,理想还在路上

近日,Gartner发布了24年《中国数据分析及人工智能成熟度周期报告》,在成熟度曲线中声明“数据中台”已被淘汰。数据中台,这个曾被奉若圭臬,视为先进架构的标志性建筑,将就此将淡出历史舞台。 有些东西,在它真正消亡前,就已经被遗忘。 其实,早在几年前,国内技术圈已经…

超级干货:Air780E之RS485通信篇,你学会了吗?

​ 今天,我们来学习低功耗4G模组Air780E的RS485通信,同学们,你学习了吗? 一、RS485简介 物联网(IoT)在工业场景中的应用越来越广泛,而RS485是一种常见的通信协议,广泛应用于工业自动化和物联网系统中。 RS485是一种串行通信标准,主要用于长距离、多节点通信。适用于工…

远程升级频频失败?原因竟然是…

​最近有客户反馈在乡村里频繁出现掉线的情况。 赶紧排查原因! 通过换货、换SIM卡对比排查测试,发现只有去年采购的那批模块在客户环境附近会出现掉线的情况,而今年采购的模块批次就不会掉线。。。 继续追究原因,联系对应的销售工作人员,了解到差异就是模块内的固件版本不…

时间函数:与时间相关那些事。。。

​ 在LuatOS中,获取时间函数用得最多的就是os.time()函数。 应很多同学要求,今天,我会讲一些与这个函数以及其他时间函数相关的知识。 一、时间戳相关 os.time()这个函数,只能获取当前时间戳;如果客户希望获取的是当前时间,即相应的年月日时分秒,可以使用os.date()函数。…