|
@@ -259,11 +259,11 @@
|
|
|
<el-timeline>
|
|
<el-timeline>
|
|
|
<el-timeline-item v-for="(item,index) in aiTestItem" :timestamp="item.time" placement="top" :key="index">
|
|
<el-timeline-item v-for="(item,index) in aiTestItem" :timestamp="item.time" placement="top" :key="index">
|
|
|
<el-card>
|
|
<el-card>
|
|
|
- <h4>{{ item.title }}</h4>
|
|
|
|
|
- <p style="color: blue;">达成度:{{item.process}}%</p>
|
|
|
|
|
|
|
+ <h3>{{ item.title }}</h3>
|
|
|
|
|
+ <p style="color:blue;font-weight: bold;">达成度:{{item.process}}</p>
|
|
|
<br>
|
|
<br>
|
|
|
- <p style="color: blue;">AI解析:</p>
|
|
|
|
|
- <p>{{item.content}}</p>
|
|
|
|
|
|
|
+ <p style="color: blue;font-weight: bold;">AI解析:</p>
|
|
|
|
|
+ <p v-html="item.content"></p>
|
|
|
</el-card>
|
|
</el-card>
|
|
|
</el-timeline-item>
|
|
</el-timeline-item>
|
|
|
</el-timeline>
|
|
</el-timeline>
|
|
@@ -294,31 +294,25 @@ let items = [
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
let evalItems = [];
|
|
let evalItems = [];
|
|
|
-evalItems.push("功能描述准确:\n" +
|
|
|
|
|
- "汉诺塔问题是给定三根柱子(通常设为源柱 A、辅助柱 B、目标柱 C)和若干个大小不同的圆盘,初始时圆盘按从大到小顺序叠放在源柱 A 上。要求将所有圆盘从源柱 A 借助辅助柱 B 移动到目标柱 C 上,并且在移动过程中,每次只能移动一个圆盘,且任何时刻大圆盘不能放在小圆盘上面。目标是通过算法实现对圆盘移动过程的模拟并输出每一步的移动操作。\n" +
|
|
|
|
|
- "术语表达规范:\n" +
|
|
|
|
|
- "在描述中准确使用了 “柱子”“圆盘”“递归”(在后续解决中会用到递归思想)等专业术语,无口语化表达,符合计算机学科对于这类逻辑问题的表述规范。比如描述移动规则 “每次只能移动一个圆盘,且任何时刻大圆盘不能放在小圆盘上面”。\n" +
|
|
|
|
|
- "上下文抽象:\n" +
|
|
|
|
|
- "剔除了如汉诺塔问题的起源等无关背景信息,保留了核心要素:三根柱子(源柱、辅助柱、目标柱)、若干圆盘、移动规则(每次移动一个圆盘,大圆盘不能在小圆盘上面)以及最终要达成的目标(将圆盘从源柱移动到目标柱),对问题进行了抽象精炼表达。\n" +
|
|
|
|
|
- "接口定义清晰:\n" +
|
|
|
|
|
- "输入:圆盘的数量 n(n 为正整数,表示圆盘的个数),源柱标识(如字符 'A' 表示源柱),辅助柱标识(如字符 'B' 表示辅助柱),目标柱标识(如字符 'C' 表示目标柱)。\n" +
|
|
|
|
|
- "输出:每一步圆盘的移动操作,例如 “将圆盘从 A 柱移动到 C 柱”。\n" +
|
|
|
|
|
- "约束条件:圆盘数量 n >= 1,柱子标识为合法的字符表示(如 'A'、'B'、'C') ,函数设计符合模块化原则,将移动操作封装成一个函数便于调用和复用。")
|
|
|
|
|
-
|
|
|
|
|
-evalItems.push("拆解维度合理:\n" +
|
|
|
|
|
- "汉诺塔问题是一个递归结构的问题,可按流程进行拆解。\n" +
|
|
|
|
|
- "首先,考虑递归终止条件,当只有一个圆盘时,直接将其从源柱移动到目标柱。\n" +
|
|
|
|
|
- "然后,对于多个圆盘的情况,可将其分解为三个子问题:\n" +
|
|
|
|
|
- "把 n-1 个圆盘从源柱借助目标柱移动到辅助柱。\n" +
|
|
|
|
|
- "把第 n 个(最大的)圆盘从源柱移动到目标柱。\n" +
|
|
|
|
|
- "把 n-1 个圆盘从辅助柱借助源柱移动到目标柱。\n" +
|
|
|
|
|
- "这种拆解方式符合递归问题的解决思路,将复杂问题逐步简化为更小的相同子问题。\n" +
|
|
|
|
|
- "逻辑结构完整:\n" +
|
|
|
|
|
- "上述拆解覆盖了汉诺塔问题的所有关键部分。递归终止条件(只有一个圆盘时直接移动)明确,移动过程包含了对多个圆盘情况的处理,通过递归调用实现了整体的移动逻辑,涵盖了将圆盘从源柱借助辅助柱移动到目标柱的整个过程。\n" +
|
|
|
|
|
- "颗粒度适中:\n" +
|
|
|
|
|
- "将汉诺塔问题拆解为递归终止条件和递归步骤两部分,对于已知递归概念的人来说,这种拆解符合认知逻辑。对于未认知递归的人来说,递归终止条件和递归步骤都是单一性问题,可以分别理解和掌握,颗粒度较为合适。");
|
|
|
|
|
-
|
|
|
|
|
-evalItems.push("public class Hanoi {\n" +
|
|
|
|
|
|
|
+evalItems.push({c:"<div><strong>功能描述准确(5/5):</strong>汉诺塔问题是给定三根柱子(通常设为源柱 A、辅助柱 B、目标柱 C)和若干个大小不同的圆盘,初始时圆盘按从大到小顺序叠放在源柱 A 上。要求将所有圆盘从源柱 A 借助辅助柱 B 移动到目标柱 C 上,并且在移动过程中,每次只能移动一个圆盘,且任何时刻大圆盘不能放在小圆盘上面。目标是通过算法实现对圆盘移动过程的模拟并输出每一步的移动操作。</div>" +
|
|
|
|
|
+ "<div><strong>术语表达规范(4/5):</strong> 在描述中准确使用了 “柱子”“圆盘”“递归”(在后续解决中会用到递归思想)等专业术语,无口语化表达,符合计算机学科对于这类逻辑问题的表述规范。比如描述移动规则 “每次只能移动一个圆盘,且任何时刻大圆盘不能放在小圆盘上面。</div>" +
|
|
|
|
|
+ "<div><strong>上下文抽象(4/5):</strong> 剔除了如汉诺塔问题的起源等无关背景信息,保留了核心要素:三根柱子(源柱、辅助柱、目标柱)、若干圆盘、移动规则(每次移动一个圆盘,大圆盘不能在小圆盘上面)以及最终要达成的目标(将圆盘从源柱移动到目标柱),对问题进行了抽象精炼表达。</div>" +
|
|
|
|
|
+ "<div><strong>接口定义清晰(4/5):</strong> 输入:圆盘的数量 n(n 为正整数,表示圆盘的个数),源柱标识(如字符 'A' 表示源柱),辅助柱标识(如字符 'B' 表示辅助柱),目标柱标识(如字符 'C' 表示目标柱)。</div>" +
|
|
|
|
|
+ "输出:每一步圆盘的移动操作,例如 “将圆盘从 A 柱移动到 C 柱”。<br/>" +
|
|
|
|
|
+ "约束条件:圆盘数量 n >= 1,柱子标识为合法的字符表示(如 'A'、'B'、'C') ,函数设计符合模块化原则,将移动操作封装成一个函数便于调用和复用。</div>",p:"(17/20)"})
|
|
|
|
|
+
|
|
|
|
|
+evalItems.push({c:"<div><strong>拆解维度合理(4/5):</strong> 汉诺塔问题是一个递归结构的问题,可按流程进行拆解。" +
|
|
|
|
|
+ "<br/>首先,考虑递归终止条件,当只有一个圆盘时,直接将其从源柱移动到目标柱。" +
|
|
|
|
|
+ "<br/>然后,对于多个圆盘的情况,可将其分解为三个子问题:\n" +
|
|
|
|
|
+ "<br/> 把 n-1 个圆盘从源柱借助目标柱移动到辅助柱。\n" +
|
|
|
|
|
+ "<br/> 把第 n 个(最大的)圆盘从源柱移动到目标柱。\n" +
|
|
|
|
|
+ "<br/> 把 n-1 个圆盘从辅助柱借助源柱移动到目标柱。\n" +
|
|
|
|
|
+ "<br/>这种拆解方式符合递归问题的解决思路,将复杂问题逐步简化为更小的相同子问题。</div>" +
|
|
|
|
|
+ "<div><strong>逻辑结构完整(3/5):</strong> 上述拆解覆盖了汉诺塔问题的所有关键部分。递归终止条件(只有一个圆盘时直接移动)明确,移动过程包含了对多个圆盘情况的处理,通过递归调用实现了整体的移动逻辑,涵盖了将圆盘从源柱借助辅助柱移动到目标柱的整个过程。</div>" +
|
|
|
|
|
+ "<div><strong>颗粒度适中(3/5):</strong>" +
|
|
|
|
|
+ "将汉诺塔问题拆解为递归终止条件和递归步骤两部分,对于已知递归概念的人来说,这种拆解符合认知逻辑。对于未认知递归的人来说,递归终止条件和递归步骤都是单一性问题,可以分别理解和掌握,颗粒度较为合适。",p:"(10/15)"});
|
|
|
|
|
+
|
|
|
|
|
+evalItems.push({c:"<div><pre>public class Hanoi {\n" +
|
|
|
" public static void hanoi(int n, char source, char auxiliary, char target) {\n" +
|
|
" public static void hanoi(int n, char source, char auxiliary, char target) {\n" +
|
|
|
" if (n == 1) {\n" +
|
|
" if (n == 1) {\n" +
|
|
|
" System.out.println(\"将圆盘从 \" + source + \" 柱移动到 \" + target + \" 柱\");\n" +
|
|
" System.out.println(\"将圆盘从 \" + source + \" 柱移动到 \" + target + \" 柱\");\n" +
|
|
@@ -338,7 +332,7 @@ evalItems.push("public class Hanoi {\n" +
|
|
|
"# 测试\n" +
|
|
"# 测试\n" +
|
|
|
"n = 3\n" +
|
|
"n = 3\n" +
|
|
|
"hanoi(n, 'A', 'B', 'C')\n" +
|
|
"hanoi(n, 'A', 'B', 'C')\n" +
|
|
|
- "以上代码通过递归函数 hanoi 实现了汉诺塔问题的求解,输出了每一步圆盘的移动操作,是最终可执行的代码,满足有效性要求。");
|
|
|
|
|
|
|
+ "以上代码通过递归函数 hanoi 实现了汉诺塔问题的求解,输出了每一步圆盘的移动操作,是最终可执行的代码,满足有效性要求。</pre></div>",p:"(75/100)"});
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
name: 'question-info',
|
|
name: 'question-info',
|
|
@@ -443,8 +437,8 @@ export default {
|
|
|
let p = Math.floor(50 + Math.random() * 40)
|
|
let p = Math.floor(50 + Math.random() * 40)
|
|
|
this.aiTestItem.push({
|
|
this.aiTestItem.push({
|
|
|
title: items[i],
|
|
title: items[i],
|
|
|
- process: p,
|
|
|
|
|
- content: evalItems[i],
|
|
|
|
|
|
|
+ process: evalItems[i].p,
|
|
|
|
|
+ content: evalItems[i].c,
|
|
|
time: ts
|
|
time: ts
|
|
|
})
|
|
})
|
|
|
|
|
|