# Flash Card Math Quiz
**Repository Path**: bg6lh/Flash-Card-Math-Quiz
## Basic Information
- **Project Name**: Flash Card Math Quiz
- **Description**: 一个网页版20以内加减法的闪算练习,帮助孩子提高专注力
- **Primary Language**: HTML
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-02
- **Last Updated**: 2025-03-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 口算闪卡
如何训练一年级儿童的专注力?口算闪卡是个不错的练习工具。所谓闪卡(Flash Card)就是快速给娃出一些简单的算术题,让他必须按顺序写出序号和对应的答案。本代码参考了娃的数学老师的PPT课件,在我设计的提示词下,由DeepSeek R1生成。
[点击这里直接进入闪卡测试](https://bg6lh.github.io/Flash-Card-Math-Quiz/math-quiz.html)
## 提示词设计
我向DeepSeek提出了一系列要求,DeepSeek在第二轮对话中就完成了正确的代码。之后我又陆续对用户界面和易用性提了一些要求。大致整理如下:
```text
假设你是一个网页前端工程师,帮我写一个页面:
- 在黑屏的浏览器上,随机、不重复地输出答案由20以内数字组成的加减法题,避免出现负数答案,位置随机,不能超出屏幕,每道题,停留2秒;
- 开始出题前,请把出题数目、停留时间,提取为变量,放在网页的前部,可以由用户自定义;
- 出完所有题之后是黑屏等待,并提示在按任意键后输出答案;
- 按任意键后,按出题顺序输出每道题的编号、公式,和正确答案,使用`
`标签输出,对齐编号、运算符号,如果内容太长,网页可以滚动显示,可以显示滚动条。
- 网页基本字体改为24px,出题时字体题目字体用200px,加粗。
```
## “20以内加减法”的定义
老师并没有告诉我特别精准的定义。我给AI提出的要求是:“答案由20以内的数字组成的加减法题”,和“避免出现负数答案“。
> 这个要求在另一个AI里出现了`98-83=`这样的题,虽然答案没超过20,但对一年学生有点超纲了。
DeepSeek自己推理是:
>……关于生成题目,加减法要随机选择,同时保证结果非负。比如,如果是减法,需要确保被减数大于等于减数。可以先生成运算符,再根据运算符生成合适的数。例如,加法的话,两个数相加不超过20;减法的话,第一个数大于等于第二个数,结果也不超过20……
之后,它直接在20以内随机挑选加减数。最终做到了总和小于等于20(儿童加法题),并且结果不是负数(基础减法题)。挺靠谱。
以下是Deepseek写的“20以内加减法”的完整代码:
```javascript
function generateProblems() {
const count = getProblemCount();
const used = new Set();
problems = [];
while(problems.length < count) {
const isAdd = Math.random() > 0.5;
let a, b;
do {
a = Math.floor(Math.random() * 20) + 1;
b = Math.floor(Math.random() * (isAdd ? 20 - a : a)) + 1;
const problem = `${a}${isAdd ? '+' : '-'}${b}=`;
if (!used.has(problem)) {
used.add(problem);
problems.push({
num1: a,
operator: isAdd ? '+' : '-',
num2: b + '=',
answer: isAdd ? a + b : a - b
});
break;
}
} while(true);
}
}
```
我让他用mermaid输出了逻辑流程:
```mermaid
graph TD
A[开始生成问题] --> B[获取题目数量count]
B --> C[初始化problems数组和used集合]
C --> D{循环次数 < count?}
D -- 是 --> E[随机选择运算符isAdd]
E --> F[生成随机数a]
F --> G{是加法?}
G -- 是 --> H[生成b: 0 < b ≤ 20-a]
G -- 否 --> I[生成b: 0 < b ≤ a]
H --> J[组合问题字符串problem]
I --> J
J --> K{problem存在used中?}
K -- 是 --> F
K -- 否 --> L[存入used集合]
L --> M[存入problems数组]
M --> N[循环次数+1]
N --> D
D -- 否 --> O[返回problems数组]
```
## 版权声明
虽然代码是DeepSeek写的,根据它自己的回答,我[对生成内容享有完整的权利(4-4.2)](https://cdn.deepseek.com/policies/en-US/deepseek-terms-of-use.html),所以我决定放在这里开源给各位。可以拿去给娃练练。