From f4101a8bcb156f321f60757af98202e97fe68596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=81=E6=B3=93=E5=AE=81?= Date: Mon, 21 Sep 2026 12:11:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E9=A2=98=E5=A4=B4=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E9=87=8D=E6=8E=92=E7=AC=AC=E4=B8=80=E9=A2=98?= =?UTF-8?q?=E5=B9=B6=E8=B0=83=E6=95=B4=20AI=20=E5=AD=A6=E4=B9=A0=E8=A7=84?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- tasks/01-basics.md | 87 +++++++++++++++++++++++++++++------------ tasks/02-design.md | 5 ++- tasks/03-development.md | 5 ++- 4 files changed, 71 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index a3544fd..24db353 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ | 题目 | 你要完成什么 | 提交材料 | AI 使用规则 | | --- | --- | --- | --- | -| [第一题:出门检查器](tasks/01-basics.md) · 必做 | 学习 Swift 基础,独立编写并运行一个清单检查程序 | `main.swift`、真实运行截图 | 全程不得使用 AI | +| [第一题:出门检查器](tasks/01-basics.md) · 必做 | 学习 Swift 基础,独立编写并运行一个清单检查程序 | `main.swift`、真实运行截图 | 仅可辅助学习和讲解基础知识;解题、编码与排错须独立完成 | | [第二题:为一个小麻烦设计 App](tasks/02-design.md) · 必做 | 提出自己的方案,用草图和操作示例说明 | 一份 `design.pdf` | 仅可润色本人已有的文字和草图 | | [第三题:把想法做成 App](tasks/03-development.md) · 选做 | 开发第二题方案,或统一题目“出门前” | 个人 Fork 中的项目、需求说明、实际运行展示 | 允许使用 AI 完成开发,须亲自检查和说明 | diff --git a/tasks/01-basics.md b/tasks/01-basics.md index 1bddb72..8d0303c 100644 --- a/tasks/01-basics.md +++ b/tasks/01-basics.md @@ -1,16 +1,21 @@ # 第一题 出门检查器 -类型:基础题。语言:Swift。提交:源码和真实运行截图。全程不得使用 AI。 +- **类型**:基础语法与代码题(必做) +- **基础要求**:Swift 基础语法 +- **提交材料**:源码和真实运行截图 +- **AI 规则**:仅可辅助学习和讲解基础知识,解题、编码与排错须独立完成 -## 任务背景 +## 任务背景与概述 出门前,你有一份“需要带的物品”清单,也知道哪些物品已经放进包里。请写一个程序,对照两份清单,告诉你还缺什么。 -这道题只需要 Swift 基础语法,不需要制作图形界面。 +本题是一道 Swift 基础练习:定义数组,编写并调用函数,再根据结果输出信息。输入数据直接写在代码中,不需要实现键盘输入或图形界面。 -## 输入和规则 +## 任务详细要求 -用两个字符串数组表示清单: +### 1. 输入数据与命名规则 + +使用下面两个字符串数组作为初始数据: ```swift let requiredItems = ["校园卡", "钥匙", "水杯", "耳机"] @@ -19,35 +24,45 @@ var packedItems = ["手机", "校园卡", "钥匙"] - `requiredItems` 是本次需要带的物品。 - `packedItems` 是已经放进包里的物品,可能包含本次清单之外的东西。 +- 初始数组使用上述变量名。`packedItems` 后续需要修改,因此使用 `var`;其他自定义变量的名称清楚即可。 - 本题保证每个数组内部没有重复名称,也没有空名称。名称按字符串完全相同判断,无需处理错别字、空格清理或模糊匹配。 - 缺少的物品应按 `requiredItems` 中的先后顺序返回。 - 本题只判断物品是否存在,不处理数量。 -## 你需要完成什么 +### 2. 函数要求 -**1. 编写检查函数。** - -自己编写一个名为 `findMissingItems` 的函数,接收两个 `[String]`,返回缺少物品的 `[String]`。为了方便统一检查,请使用下面的函数名称和参数标签: +编写函数,接收需要清单和已装入清单,返回缺少物品的数组。请使用以下函数名称、参数标签和类型: ```swift func findMissingItems(required: [String], packed: [String]) -> [String] ``` -上面只是接口说明,不是完整代码。花括号和函数内部逻辑由你编写。 +上面只是接口说明,函数体由你编写。没有缺少物品时返回空数组。函数应适用于符合规则的其他清单,不能把示例答案直接写死。 -**2. 调用函数并输出结果。** +### 3. 输出要求 -输出需要带的物品、已装入的物品,以及缺少物品的名称和数量。需要清单非空且没有缺少物品时,输出“已经准备好了,可以出发”;需要清单为空时,输出“本次没有必带物品,无需检查”。 +调用函数,每次检查都输出: -初始数据应得到:缺少水杯、耳机,共 2 项。手机不在需要清单里,不影响结果。输出排版可以自行安排,只要信息清楚,不按装饰性标点或空格扣分。 +- 案例名称、需要带的物品、已装入的物品; +- 缺少物品的名称和数量;没有缺少物品时明确显示“无”或空数组,数量为 0; +- 需要清单非空且没有缺少物品时,输出“已经准备好了,可以出发”; +- 需要清单为空时,输出“本次没有必带物品,无需检查”。 -**3. 修改数据,再次运行。** +初始数据的一种输出形式如下: -在同一个程序中,向已装入清单依次添加“水杯”和“耳机”,每次添加后都重新调用检查函数并打印结果。预期变化:缺两项 → 只缺耳机 → 准备齐全。 +```text +案例 A:初次检查 +需要带的物品:校园卡、钥匙、水杯、耳机 +已装入的物品:手机、校园卡、钥匙 +缺少的物品:水杯、耳机 +缺少数量:2 +``` -**4. 检查其他情形。** +输出排版可以自行安排,只要信息清楚。标点、空格和数组的显示样式不要求与示例逐字一致。手机不在需要清单里,不影响结果。 -使用下面的公开案例验证函数,并在输出中标明案例名称。程序应适用于符合规则的其他清单,不能把示例答案直接写死。 +### 4. 数据修改与运行案例 + +在同一个程序中完成 A–F:先检查初始数据,再向 `packedItems` 依次添加“水杯”和“耳机”,每次添加后重新调用函数并输出结果,得到 A、B、C。然后使用 D、E、F 的数据继续调用函数并输出。 | 案例 | 需要带的物品 | 已装入的物品 | 函数应返回 | | --- | --- | --- | --- | @@ -58,15 +73,25 @@ func findMissingItems(required: [String], packed: [String]) -> [String] | E 本次没有必带物品 | 空数组 | 手机 | 空数组 | | F 两份清单都为空 | 空数组 | 空数组 | 空数组 | -C 输出准备齐全的提示;E、F 输出无需检查的提示。修改数组和运行这些案例属于同一道基础题,不另算拔高任务。 +C 输出准备齐全的提示;E、F 输出无需检查的提示。 -## 提交材料 +## 提交材料、方式与格式规范 -1. `main.swift`:包含自己编写的函数、调用与上述运行案例;命名清楚,适当添加注释。 -2. 运行截图:能够辨认程序实际输出,覆盖 A–F。可以分多张截图,不要求把所有内容挤在一张图里。 +### 提交材料与格式 + +| 材料 | 格式与要求 | +| --- | --- | +| 源码 | 文件名为 `main.swift`,使用 UTF-8 编码,包含函数、调用和 A–F 案例;保持缩进和命名清楚,必要处添加注释 | +| 运行截图 | 使用 PNG 或 JPG,文字清晰,能辨认案例名称与实际输出,覆盖 A–F;可分多张,按 `run-01.png`、`run-02.png` 等顺序命名,JPG 使用相应扩展名 | 源码和截图应来自同一个最终版本。允许裁去无关窗口,不得修改运行结果文字、拼造结果或用 AI 生成截图。未全部完成时可提交当前源码与实际结果,标注未完成处。 +### 提交方式 + +第一题材料直接提交到本次考核原仓库。具体上传入口、个人目录或标识规则和截止时刻,见 [仓库首页](../README.md) 后续公布的统一提交指南;当前仍在筹备,尚未开放提交。 + +不需要额外提交设计文档、学习笔记或调试报告。 + ## 学习范围与资源 学习到能使用下面这些内容即可: @@ -88,10 +113,22 @@ C 输出准备齐全的提示;E、F 输出无需检查的提示。修改数组 ## 独立完成规则 -本题不得使用 AI,包括解题思路、代码生成或 AI 补全、代码解释、排错。可以阅读普通教程和官方文档,使用编辑器的非 AI 语法提示,向干部询问环境问题或某个基础概念;不能让他人代写本题。 +**允许用 AI 辅助学习基础知识。** 例如,询问 `let` 和 `var` 的区别、函数参数标签的含义,或请 AI 讲解教程中看不懂的语法和通用示例。理解之后,本题的思路、代码与检查过程由自己完成。 -请亲自运行,比较预期与实际结果,必要时修改后重试。无需额外提交调试报告,也不要求必须遇到或制造某个错误。二面可能请你解释某段代码,或预测改变一份清单后会输出什么。 +**不得用 AI 完成本题。** 包括分析题目并给出解题思路或伪代码,生成、补全、修改或优化本题代码,以及检查、解释或调试待提交的代码。不要把本题题面、自己的解法、源码或报错交给 AI 分析;运行证据也必须由自己实际运行获得。 -## 评价重点 +可以阅读教程和官方文档,使用编辑器的非 AI 语法提示,向干部询问环境问题或基础概念;不能让他人代写。 -规则是否正确;空数组等情形是否处理;是否能随输入变化得到结果;源码是否清楚;是否有本人真实运行的结果。截图本身不能证明独立完成,评价会结合源码及二面交流。 +请亲自运行,比较预期与实际结果,必要时自己定位问题、修改后重试。不要求必须遇到或制造某个错误。 + +## 考察重点 + +完成后,可以用下面的问题检查自己是否真正理解: + +- **变量与数据**:哪些数据会改变?为什么需要区分 `let` 和 `var`?数组怎样表示一份清单? +- **条件与循环**:自己用到的判断和遍历在做什么?为什么能找出缺少的物品,并保留原清单的顺序?若用了标准库方法,能否说明它的作用? +- **函数与调用**:参数和返回值分别是什么?返回结果与打印结果有什么区别?换一组输入,函数为什么还能工作? +- **边界情形**:包为空、需要清单为空、全部带齐时分别会发生什么?为什么“全部带齐”和“本次无需检查”要区分? +- **运行与检查**:能否运行自己的源码、对照案例检查输出;修改数据后,能否先预测结果,再运行验证?发现不一致时,能否说明自己的检查过程? + +二面会结合源码与真实运行结果交流上述内容,可能请你解释一段代码,或预测输入变化后的输出。重点是基础知识与本人完成过程,不以代码行数、装饰性排版或高级语法数量判断能力。 diff --git a/tasks/02-design.md b/tasks/02-design.md index 5ebf347..45a50a6 100644 --- a/tasks/02-design.md +++ b/tasks/02-design.md @@ -1,6 +1,9 @@ # 第二题 为一个小麻烦设计 App -类型:设计题。不需要代码基础。只提交一份 PDF 设计文档。 +- **类型**:设计题(必做) +- **基础要求**:不需要编程基础 +- **提交材料**:一份 PDF 设计文档 +- **AI 规则**:仅可润色本人已有的文字和草图,想法与设计须独立提出 ## 任务背景 diff --git a/tasks/03-development.md b/tasks/03-development.md index b98d40c..f8997b2 100644 --- a/tasks/03-development.md +++ b/tasks/03-development.md @@ -1,6 +1,9 @@ # 第三题 把想法做成 App -类型:选做开发挑战。使用 Swift 开发可交互的 App,界面优先采用 SwiftUI。允许 AI 辅助,包括生成较大部分代码。作品需要亲自运行、检查,并在二面展示和说明。 +- **类型**:开发挑战(选做) +- **基础要求**:使用 Swift 开发可交互的 App,界面优先采用 SwiftUI +- **提交材料**:个人 Fork 中的项目、需求说明与实际运行展示 +- **AI 规则**:允许辅助开发及生成主要代码,作品须亲自运行、检查,并在二面展示和说明 ## 两条题目路线