Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_java
提交
a4c2bb4f
S
skill_tree_java
项目概览
CSDN 技术社区
/
skill_tree_java
通知
43
Star
8
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a4c2bb4f
编写于
11月 02, 2021
作者:
M
Mars Liu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
document
上级
31ddd92f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
171 deletion
+9
-171
README.md
README.md
+9
-171
未找到文件。
README.md
浏览文件 @
a4c2bb4f
...
...
@@ -59,180 +59,18 @@ pip install -r requirement.txt
{
//
...
"export"
:
[
//
TODO
...
"HellowWorld.json"
]
}
```
格式说明:
*
`file`
: 指定该目录下的习题源文件
*
`variants`
: 指定习题同名的json选项配置文件,参考下一节
*
`depends`
: 如果习题依赖同目录下的其他习题源代码,则在此字段里配置依赖的其他习题源文件名
在 export 字段中,我们列出习题定义 json ,下面我们了解如何编写习题。
## `知识节点` 的导出习题选项配置编辑
目前我们支持使用 markdown 语法直接编辑习题和各选项,或者编写习题代码和替换规则,让程序动态生成选项。
我们先介绍使用替换规则的习题如何编辑,在最后介绍 markdown 方式编写习题的方法。对于 Java 技能树,我们更
*推荐*
使用 markdown 方式编写习题。
### 使用替换规则编写习题
首先,在知识节点下增加一个习题代码,例如在
`data/1.Java初阶/1.Java概述/1.什么是Java`
下增加一个
`HelloWorld.java`
代码:
```
java
public
class
App
{
public
static
void
main
(
String
[]
args
){
System
.
out
.
println
(
"Hello world!"
)
}
}
```
其次,增加一个同名的选项配置文件
`HelloWorld.json`
,目前有三种配置规则
#### 单行替换规则
*
配置由
`one_line`
字段指定的单行替换字典
*
格式是:
`"<源字符串>"`
: [
`"<替换字符串A>"`
,
`<替换字符串B>`
,...],
*
其中每个
`"<源字符串>"`
`/`
`"<替换字符串A>"`
被生成为是一个替换选项
*
指定的配置应该能至少生成
`3+`
个替换选项
```
json
{
"one_line"
:
{
"println"
:
[
"printf"
,
"print"
,
"fprint"
]
}
}
```
上面的替换规则会将代码替换成 3 个变种的代码:
```
java
public
class
App
{
public
static
void
main
(
String
[]
args
){
System
.
out
.
print
(
"Hello world!"
)
}
}
```
```
java
public
class
App
{
public
static
void
main
(
String
[]
args
){
System
.
out
.
printf
(
"Hello world!"
)
}
}
目前我们支持使用 markdown 语法直接编辑习题和各选项。
```
```
java
public
class
App
{
public
static
void
main
(
String
[]
args
){
System
.
out
.
sprint
(
"Hello world!"
)
}
}
```
这些变种代码将会作为技能树该知识点该代码选择题的选项。
#### 多行替换规则
*
配置由
`multiline`
字段指定的多行替换数组
*
数组的每个元素是一组替换规则,会整组被替换
例如:
```
json
{
"mulitiline"
:
[{
"public class"
:
"public interface"
,
"main("
:
"Main("
},
{
"public class"
:
"interface"
,
"void main"
:
"int main"
},
{
"public static void main"
:
"public void main"
}]
```
上面的替换规则会将代码替换成 3 个变种的代码:
```
java
public
interface
App
{
public
static
void
Main
(
String
[]
args
){
System
.
out
.
println
(
"Hello world!"
)
}
}
```
```
java
public
interface
App
{
public
static
int
main
(
String
[]
args
){
System
.
out
.
println
(
"Hello world!"
)
}
}
```
```
java
public
class
App
{
public
void
main
(
String
[]
args
){
System
.
out
.
print
(
"Hello world!"
)
}
}
```
这些变种代码将会作为技能树该知识点该代码选择题的选项。
#### 预制的替换规则
*
配置由
`prepared`
字段制定的预制文件数组
*
数组每一个元素是一个预制的代码文件的路径文件名
例如:
```
json
{
"prepared"
:
[
"HelloWord.1.java"
,
"HelloWord.2.java"
,
"HelloWord.3.java"
]
}
```
同样,该配置将支持将源代码生成3个变种代码
```
java
// HelloWord.1.java
public
interface
App
{
default
void
Main
(
String
[]
args
){
System
.
out
.
println
(
"Hello world!"
)
}
}
```
```
java
public
interface
App
{
public
static
void
main
(
String
[]
args
){
System
.
out
.
println
(
"Hello world!"
)
}
}
```
```
java
class
App
{
void
main
(
String
[]
args
){
System
.
out
.
print
(
"Hello world!"
)
}
}
```
### 使用 markdown 编写习题
如前内容,我们在知识节点下增加一个习题配置,例如在
`data/1.Java初阶/1.Java概述/1.什么是Java`
下增加一个
`HelloWorld.json`
代码:
如前文内容,我们在知识节点下增加习题
`HelloWord`
的定义文件,即在
`data/1.Java初阶/1.Java概述/1.什么是Java`
目录增加一个
`HelloWorld.json`
文件:
```
json
{
...
...
@@ -243,12 +81,12 @@ class App {
"notebook_enable"
:
true
}
```
其中 type 字段目前都固定是
`code_options`
。exercise_id 可以不写,处理程序会自动填补这个数据。根据具体情况写好其它字段,注意这里 source 的文件名,我们指定了一个 markdwon 文件。现在我们新建一个 HelloWorld.md 并编辑为:
其中 type 字段目前都固定是
`code_options`
。exercise_id 可以不写,notebook_enable 字段决定这个习题是否生成对应的 notebook 。处理程序会自动填补这个
数据。根据具体情况写好其它字段,注意这里 source 的文件名,我们指定了一个 markdwon 文件。现在我们新建一个 HelloWorld.md 并编辑为:
````
markdown
# Hello World
以下
`Hello World`
程序中,能够正确输出内容的是:
## 答案
...
...
@@ -264,7 +102,7 @@ public class App {
## 选项
###
A
###
不必要的返回值
```
java
...
...
@@ -276,7 +114,7 @@ public class App {
}
```
###
B
###
没有引用 System.out
```
java
...
...
@@ -287,7 +125,7 @@ public class App {
}
```
###
C
###
混合了 c 代码
```
java
import
stdout
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录