PTA 编程助手 — 题目提取、AI 生成代码、模拟打字输入,三合一油猴脚本。
| 功能 | 说明 |
|---|---|
| 📋 题目提取 | 从 PTA 平台提取题目内容,输出为标准 Markdown 格式(支持标题、段落、代码块、表格、列表、KaTeX 公式等) |
| 🤖 AI 生成代码 | 调用 AI API 自动生成编程题答案,内置题型判断和代码质量优化 |
| ⌨️ 模拟打字 | 将生成的代码以模拟打字方式逐字符输入答题编辑器(每 30ms 输入 5 个字符),避免被 PTA 检测为粘贴 |
| 🛑 紧急停止 | 按 Esc 键可随时中断打字输入 |
| ⚙️ 可配置 AI | 支持自定义 API Endpoint、API Key、Model、System/User Prompt |
| 🎨 拖拽浮动按钮 | 圆形悬浮按钮可自由拖动,位置自动保存 |
- 安装浏览器扩展 Tampermonkey(推荐)或 Violentmonkey
- 点击油猴图标 → 添加新脚本 → 将
不知道起什么名字所以就叫蒋介石吧233-2.0.0.user.js的全部内容粘贴进去 - 保存(Ctrl+S)
- 打开 PTA 平台的题目页面(
pintia.cn/www.pintia.cn) - 页面右下角会出现一个 ⚡ 圆形浮动按钮
- 点击按钮展开菜单:
- 点击菜单 「提取题目」
- 弹出模态框展示 Markdown 格式的题目内容
- 自动识别题目标题、答题语言
- 如果已有答案,会附在 Markdown 下方
- 点击 「复制 Markdown」 将内容复制到剪贴板
- 点击菜单 「AI 生成代码」
- 脚本自动完成:
- 提取当前页面题目
- 获取答题语言和已填写代码
- 调用配置的 AI API 生成答案
- 清理代码格式(去除 Markdown 围栏、去重)
- 自动修复兼容性问题(
scanf_s→scanf等) - 以模拟打字方式将代码输入答题区
- 浮动按钮会显示 ⏱️ 动画表示正在生成
在答题区编辑器中按 Ctrl+V 粘贴时,脚本会拦截粘贴操作,改为模拟打字方式输入剪贴板内容。
输入过程中按 Esc 可立即停止打字。
点击菜单 「API 设置」 打开配置面板:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| API Endpoint | AI API 地址 | https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions |
| API Key | 你的 API 密钥 | (空) |
| Model | 模型名称 | qwen-plus |
| System Prompt | 系统提示词 | 内置 PTA 解题专家提示 |
| User Prompt | 用户提示词模板 | {question} / {target_language} / {current_answer} |
默认使用阿里云百炼 DashScope,兼容 OpenAI API 格式。你也可以换成其他兼容接口(如 OpenAI、Ollama、vLLM 等)。
| 变量 | 说明 |
|---|---|
{question} |
提取的题目内容 |
{target_language} |
答题语言(从页面自动识别) |
{current_answer} |
编辑器中已有的代码 |
脚本会将 PTA 题目页面的 HTML 内容转换为 Markdown,支持以下元素:
- 标题(
h1~h6)→#标题 - 段落文本,内联格式(加粗、斜体、行内代码、链接、图片、上下标、删除线)
- KaTeX 数学公式 → 提取
annotation文本 - 有序/无序列表
- 表格(自动生成分隔行)
- 引用块 →
> - 分割线 →
--- - 代码编辑器内容 →
```lang\ncode\n```
每 30ms 输入 5 个字符 → 逐块插入 → 触发 input/change 事件
使用 document.execCommand('insertText') + 降级 DataTransfer 粘贴事件双重方案,确保兼容不同编辑器实现。
提取题目 → 构造 Prompt → 流式请求 API → 解析 SSE → 清理代码
├─ 去除 Markdown 代码围栏
├─ 检测并截断重复程序
├─ 自动替换 _s 函数 → 标准函数
└─ 警告硬编码数据
脚本会自动将以下微软专属函数替换为标准 C 函数:
| 不安全 | 安全 |
|---|---|
scanf_s |
scanf |
printf_s |
printf |
strcpy_s |
strcpy |
strcat_s |
strcat |
memcpy_s |
memcpy |
| ...等 12 个函数 |
| 浏览器 | Tampermonkey | Violentmonkey |
|---|---|---|
| Chrome / Edge | ✅ | ✅ |
| Firefox | ✅ | ✅ |
| Safari | ✅ | ❌ |
MIT
- weijianxian / Bzjdtc
脚本名称来自作者的原话:"不知道起什么名字所以就叫蒋介石吧233"