当前位置: 首页 > news >正文

【CS61A 2024秋】Python入门课,全过程记录P7(Week13 Macros至完结)【完结撒花!】

文章目录

  • 关于
  • 新的问题
  • 更好的解决方案
  • Week13
    • Mon Macros
      • 阅读材料
      • Lab 11: Programs as Data, Macros
        • Q1: WWSD: Quasiquote
        • Q2: If Program
        • Q3: Exponential Powers
        • Q4: Repeat
    • Wed SQL
      • 阅读材料
      • Disc 11: Macros
        • Q1: Mystery Macro
        • Q2: Multiple Assignment
        • Q3: Switch
      • Optional Contest: Scheme Art
    • Fri Tables
      • 阅读材料
      • HW 10: SQL
        • Q1: By Parent Height
        • Q2: Size of Dogs
        • Q3: Sentences
        • Q4: Low Variance
  • Week14
    • Mon Aggregation
    • Wed No Lecture: Thanksgiving
    • Fri No Lecture: Thanksgiving
  • Week15
    • Mon Databases
      • 阅读材料
      • Lab 12: SQL
        • Q1: Room Sharing
        • Q2: Two Rooms
        • Q3: (OPTIONAL) Big Courses
        • Q4: (OPTIONAL) Seats Remaining
    • Wed Designing Functions
      • Discussion 12: SQL
        • Q1: Open Early
        • Q2: Study Session
        • Q3: Late Night Snack
        • Q4: Double Pizza
    • Fri Conclusion
      • 阅读材料
      • Homework 11: Finale
      • Scheme Gallery

关于

个人博客,里面偶尔更新,最近比较忙。发一些总结的帖子和思考。

江湖有缘相见🤝。如果读者想和我交个朋友可以加我好友(见主页or个人博客),共同学习。笔者是学生,课业还是比较繁重的,可能回复不及时。笔者也正在四处寻找一些可以兼职锻炼知识并且补贴一些生活的工作,如果读者需要一些详细的辅导,或者帮助完成一些简易的lab也可以找我,笔者还是学生,自以为才学有限,也没有高价的理由📖。

新的问题

在这里插入图片描述
可以发现,cs61a归档了,而这个网站是需要Berkeley账号的,还是没法登录。这时候笔者决定使用档案馆网站,去翻网页的归档了。虽然有点难受,但是还能用orz。

对了,textbook是可以直接访问的,在这里

更好的解决方案

我在GitHub上找到了cs61a 2024 fall的归档,这里给出连接link

Week13

Mon Macros

阅读材料

Quasiquotation是反引用,宏展开?

Lab 11: Programs as Data, Macros

Q1: WWSD: Quasiquote

问答题。略。

Q2: If Program

构造if程序。

(define (if-program condition if-true if-false)(list 'if condition if-true if-false)
)
Q3: Exponential Powers

难题啊,太晕了。反引号是给宏展开,列表内元素有逗号的后面的元素所在子列表会进行eval操作。

(define (pow-expr base exp)(cond ((= exp 0) 1)  ((even? exp) `(square ,(pow-expr base (/ exp 2))))  ; if exp is even, apply square(else `(* ,base ,(pow-expr base (- exp 1))))))  ; if exp is odd
Q4: Repeat

宏魔法。

(define-macro (repeat n expr)`(repeated-call ,n (lambda () ,expr))); Call zero-argument procedure f n times and return the final result.
(define (repeated-call n f)(if (= n 1)(f)(begin (f) (repeated-call (- n 1) f))))

Wed SQL

阅读材料

喜闻乐见SQL。
在这里插入图片描述
居然有ByteDance。
Structured Query Language (SQL)

Disc 11: Macros

Q1: Mystery Macro

神秘的宏。

(define-macro (mystery-macro expr old new)(mystery-helper expr old new))(define (mystery-helper e o n)(if (pair? e)(cons (mystery-helper (car e) o n) (mystery-helper (cdr e) o n))(if (eq? e o) n e)))

功能是把列表中的old替换成new。

Q2: Multiple Assignment

实现同时赋值。

(define-macro (assign sym1 sym2 expr1 expr2)`(begin(define ,sym1 ,expr1)(define ,sym2 ,expr2)))(assign x y (+ 1 1) 3)
(assign x y y x)
(expect x 3)
(expect y 2)

上面这样简单粗暴的写的。第一次x=2,y=3,第二次,x=3,y=3了。使用eval的话可能是因为优先级比较高。

(define-macro (assign sym1 sym2 expr1 expr2)`(begin(define ,sym1 ,expr1)(define ,sym2 ,(eval expr2))))(assign x y (+ 1 1) 3)
(assign x y y x)
(expect x 3)
(expect y 2)
Q3: Switch

宏版的Switch。宏真的抽象的黑魔法。这里map内要另外的反引号,引号map递归计算cases里面的元素。

(define-macro (switch expr cases)`(let ((val ,expr)),(cons'cond(map (lambda (case) (cons`(equal? val ,(car case))(cdr case)))cases))))

Optional Contest: Scheme Art

这个貌似是画图的,略了。

Fri Tables

阅读材料

讲解一些SQL知识。

HW 10: SQL

在这里插入图片描述
可以看到sqlite,sqlite是轻量级的数据库。据说大部分的手机APP都使用sqlite,包括微信。

Q1: By Parent Height

创建表格的方法第一次见,是通过UNION实现的。
现在是2025年了,写SQL语句对于AI来说轻而易举,只会CRUD可都得被淘汰。
首先找到有父母的狗,再对应上父母的体重,再根据父母体重排序。

-- All dogs with parents ordered by decreasing height of their parent
CREATE TABLE by_parent_height ASSELECT d.name AS dog_nameFROM dogs dJOIN parents p ON d.name = p.childJOIN dogs pd ON p.parent = pd.nameORDER BY pd.height DESC;
Q2: Size of Dogs

根据体重确定狗的类型。

-- The size of each dog
CREATE TABLE size_of_dogs ASSELECT d.name AS name, s.size AS sizeFROM dogs dJOIN sizes sON d.height > s.min AND d.height <= s.max;
Q3: Sentences

一堆查表连接。

-- [Optional] Filling out this helper table is recommended
CREATE TABLE siblings ASSELECT p1.child AS sibling1, p2.child AS sibling2FROM parents p1JOIN parents p2 ON p1.parent = p2.parentWHERE p1.child < p2.child;-- Sentences about siblings that are the same size
CREATE TABLE sentences ASSELECT "The two siblings, " || s1.name || " and " || s2.name || ", have the same size: " || ss1.size AS sentenceFROM siblingsJOIN dogs s1 ON siblings.sibling1 = s1.nameJOIN dogs s2 ON siblings.sibling2 = s2.nameJOIN size_of_dogs ss1 ON ss1.name = s1.nameJOIN size_of_dogs ss2 ON ss2.name = s2.nameWHERE ss1.size = ss2.size;
Q4: Low Variance

只有满足低方差类型的毛发种类的狗才输出。

-- Height range for each fur type where all of the heights differ by no more than 30% from the average height
CREATE TABLE low_variance ASSELECT fur, MAX(height) - MIN(height) AS height_rangeFROM dogsWHERE fur IN (SELECT d.furFROM dogs dJOIN (SELECT fur, AVG(height) AS avg_heightFROM dogsGROUP BY fur) AS avg_heights ON d.fur = avg_heights.furGROUP BY d.furHAVING MIN(d.height) >= 0.7 * avg_heights.avg_heightAND MAX(d.height) <= 1.3 * avg_heights.avg_height)GROUP BY fur;

Week14

Mon Aggregation

讲了一些关于SQL的语法。

Wed No Lecture: Thanksgiving

Fri No Lecture: Thanksgiving

Week15

Mon Databases

阅读材料

讲了一些其他的语法。

Lab 12: SQL

Q1: Room Sharing

找到每门课和别的课程共用的房间数。

CREATE TABLE sharing ASSELECT a.course, COUNT(DISTINCT a.hall) AS sharedFROM finals AS a, finals AS bWHERE a.course <> b.course and a.hall == b.hall GROUP BY a.course;
Q2: Two Rooms

case语句。

CREATE TABLE pairs AS
SELECT CASE WHEN a.room < b.room THEN a.room || ' and ' || b.roomELSE b.room || ' and ' || a.roomEND || ' together have ' || (a.seats + b.seats) || ' seats' AS rooms
FROM sizes AS a, sizes AS b
WHERE a.room < b.room AND a.seats + b.seats >= 1000
ORDER BY a.seats + b.seats DESC;
Q3: (OPTIONAL) Big Courses

连接+聚合。

CREATE TABLE big AS
SELECT f.course
FROM finals f
JOIN sizes s ON f.hall = s.room
GROUP BY f.course
HAVING SUM(s.seats) >= 1000;
Q4: (OPTIONAL) Seats Remaining

作个减法。

CREATE TABLE remaining AS
SELECT f.course,SUM(s.seats) - MAX(s.seats) AS remaining
FROM finals f
JOIN sizes s ON f.hall = s.room
GROUP BY f.course;

Wed Designing Functions

Discussion 12: SQL

Q1: Open Early

找到在13点前开门的店。

-- Pizza places that open before 1pm in alphabetical order
SELECT p.name as name 
FROM pizzas p
WHERE p.open < 13
ORDER BY name DESC
;
Q2: Study Session

都是晚上关门,直接和14减。

-- Pizza places and the duration of a study break that ends at 14 o'clock
SELECT name,MAX(14 - open, 0) AS duration
FROM pizzas
ORDER BY duration DESC;
Q3: Late Night Snack

比较ez。

-- Pizza places that are open for late-night-snack time and when they closeSELECT p.name || " closes at " || p.close AS statusFROM pizzas p, meals mWHERE m.time <= p.close and m.meal = 'snack';
Q4: Double Pizza

多表。

-- Two meals at the same place
SELECT m1.meal AS first, m2.meal AS second, p.name
FROM meals m1, meals m2, pizzas p
WHERE m2.time - m1.time > 6AND p.open <= m1.time AND p.close >= m1.timeAND p.open <= m2.time AND p.close >= m2.time;

Fri Conclusion

阅读材料

复习与总结。

Homework 11: Finale

学评教?

Scheme Gallery

上面scheme画画的作品集。

相关文章:

【CS61A 2024秋】Python入门课,全过程记录P7(Week13 Macros至完结)【完结撒花!】

文章目录 关于新的问题更好的解决方案Week13Mon Macros阅读材料Lab 11: Programs as Data, MacrosQ1: WWSD: QuasiquoteQ2: If ProgramQ3: Exponential PowersQ4: Repeat Wed SQL阅读材料Disc 11: MacrosQ1: Mystery MacroQ2: Multiple AssignmentQ3: Switch Optional Contest:…...

SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)

SSH隧道Nginx&#xff1a;内网资源访问的绿色通道 问题背景 模拟生产环境&#xff0c;使用两层Nginx做反向代理&#xff0c;请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现&#xff0c;重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…...

LabVIEW用户界面设计原则

在LabVIEW开发中&#xff0c;用户界面&#xff08;UI&#xff09;设计不仅仅是为了美观&#xff0c;它直接关系到用户的操作效率和体验。一个直观、简洁、易于使用的界面能够大大提升软件的可用性&#xff0c;尤其是在复杂的实验或工业应用中。设计良好的UI能够减少操作错误&am…...

Datawhale 数学建模导论二 2025年2月

第6章 数据处理与拟合模型 本章主要涉及到的知识点有&#xff1a; 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论&#xff0c;如果对这部分内容不熟悉&#xff0c;可以参考相关概率论与数理统计的…...

SQL CASE表达式的用法

SQL CASE表达式的用法 一、CASE表达式的基础语法简单CASE表达式搜索CASE表达式 二、简单CASE表达式的应用示例三、搜索CASE表达式的应用示例四、CASE表达式在聚合函数中的应用五、嵌套CASE表达式的应用 今天在也无力用到了CASE表达式&#xff0c;于是有了这篇博客&#xff0c;C…...

趣味魔法项目 LinuxPDF —— 在 PDF 中启动一个 Linux 操作系统

最近&#xff0c;一位开源爱好者开发了一个LinuxPDF 项目&#xff08;ading2210/linuxpdf: Linux running inside a PDF file via a RISC-V emulator&#xff09;&#xff0c;它的核心功能是在一个 PDF 文件中启动并运行 Linux 操作系统。它通过巧妙地使用 PDF 文件格式中的 Ja…...

win32汇编环境,窗口程序使用跟踪条(滑块)控件示例一

;运行效果 ;win32汇编环境,窗口程序使用跟踪条(滑块)控件示例一 ;生成2条横的跟踪条,分别设置不同的数值范围,设置不同的进度副度的例子 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>…...

mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案

用的是【Mars3d】官网的uniapp的仓库&#xff0c;安卓没有问题&#xff0c;但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案&#xff1a;感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域&#xff0c;需要先把瓦片下载后转base64&…...

使用 Notepad++ 编辑显示 MarkDown

Notepad 是一款免费的开源文本编辑器&#xff0c;专为 Windows 用户设计。它是替代记事本&#xff08;Notepad&#xff09;的最佳选择之一&#xff0c;因为它功能强大且轻量级。Notepad 支持多种编程语言和文件格式&#xff0c;并可以通过插件扩展其功能。 Notepad 是一款功能…...

wordpress主题制作

工具/原料 <P><BR>使用divcss语言编写的html静态页面一个</P> <P>Macromedia Dreamweaver软件<BR></P> WordPress主题结构分析 1 1、index.php首页模板&#xff08;最基本&#xff09; ---- 1、header.php头部 ---- 2、sidebar.php侧边…...

MybatisPlus常用增删改查

记录下MybatisPlus的简单的增删改查 接口概述 Service和Mapper区别 Mapper简化了单表的sql操作步骤&#xff08;CRUD&#xff09;&#xff0c;而Serivce则是对Mapper的功能增强。 Service虽然加入了数据库的操作&#xff0c;但还是以业务功能为主&#xff0c;而更加复杂的SQL…...

Citus的TPCC、TPCH性能测试

Citus的TPCC、TPCH性能测试 文章目录 Citus的TPCC、TPCH性能测试测试的目的适用范围测试环境架构信息硬件配置操作系统软件版本 测试结果TPCC测试测试结果TPCH测试测试结果 一、环境部署1.1、安装BenchmarkSQL1.2、PostgreSQL安装1.3、nmon部署1.4、TPC-H测试的生成数据工具安装…...

蓝桥杯---颜色分类(leetcode第75题)题解

文章目录 1.问题重述2.思路分析3.代码分析 1.问题重述 颜色分类&#xff0c;实际上就是赋予了三种颜色不同的数值&#xff0c;0,1,2分别代表的就是一个类型的颜色&#xff0c;我们题目说的是对于颜色进行分类&#xff0c;实际上就是对于0,1,2进行分类&#xff0c;我们把很多数…...

C语言基础13:循环结构 for和while

循环结构 什么是循环结构 代码在满足某种条件的前提下&#xff0c;重复执行&#xff0c;就叫做循环结构。 循环的分类 无限循环&#xff1a;其实就是死循环&#xff0c;程序设计中尽量避免无限循环&#xff0c;如果非要使用&#xff0c;那么这个循环一定要在可控范围内。有…...

六西格玛设计培训如何破解风电设备制造质量与成本困局

2023年&#xff0c;中国风电行业装机容量突破4.3亿千瓦&#xff0c;稳居全球第一&#xff0c;但高速扩张背后暗藏隐忧&#xff1a; 质量痛点&#xff1a;叶片开裂、齿轮箱故障等缺陷频发&#xff0c;运维成本占项目全生命周期成本超30%&#xff1b;成本压力&#xff1a;原材料…...

【Android开发】安卓手机APP使用机器学习进行QR二维码识别

前言:本项目是一个 Android 平台的二维码扫描应用,具备二维码扫描和信息展示功能。借助 AndroidX CameraX 库实现相机的预览、图像捕获与分析,使用 Google ML Kit 进行二维码识别。为方便大家了解项目全貌,以下将介绍项目核心代码文件 MainActivity.java 和 AndroidManifes…...

Zabbix-监控SSL证书有效期

背景 项目需要&#xff0c;需要监控所有的SSL证书的有效期&#xff0c;因此需要自定义一个监控项 实现 创建自定义脚本 在Zabbix的scripts目录(/etc/zabbix/scripts/)下创建一个新的shell脚本check_ssl.sh&#xff0c;内容如下 #!/bin/bash time$(echo | openssl s_client…...

生成式聊天机器人 -- 基于Pytorch + Global Attention + 双向 GRU 实现的SeqToSeq模型 -- 上

生成式聊天机器人 -- 基于Pytorch Global Attention 双向 GRU 实现的SeqToSeq模型 -- 上 前言数据预处理下载并加载数据原始数据格式化数据清洗与字典映射转换为模型需要的数据格式 SeqToSeq 模型Encoder 编码器Decoder 解码器全局注意力机制解码器实现 前言 本文会介绍使用…...

Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统

Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统 需求 在实际生成操作过程中&#xff0c;一般会遇到物理服务器存在多块盘的情况。 安装过程中&#xff0c;磁盘的标签是随机分配的&#xff0c;并不是空间较小的盘&#xff0c;就会使用较小的磁盘标签 而需求往往需要…...

基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系

摘要 本文提出了一种基于进化式大语言模型(Evolutionary LLM)的智能漏洞挖掘框架,突破了传统静态分析的局限,构建了具备对抗性思维的动态攻防体系。通过引入深度强化学习与多模态感知机制,实现了漏洞挖掘过程的自适应进化,在RCE、SQLi、XXE等关键漏洞类型的检测中达到97…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...