Assignment 1: Random Sentence Generator(RSG)"/>
Stanford CS107 Assignment 1: Random Sentence Generator(RSG)
Abstract
本人正在学习Stanford CS107。这门课很不错,我简单把这门课的信息说一下。
key | value |
---|---|
官网 | |
课程名 | 编程范式 |
所需基础 | C,C++ |
上课视频 | Bilibili搜索 (可能会失效) |
我做的作业 |
Assignment Task
对于我来说,这个任务的难度在于阅读handout(本人英语渣)。所以我这里把任务说一下。(Random Sentence Generator 我直接缩写为RSG)
Jerry老师给出了程序的骨架,只需要我们10-20行代码即可完成任务。
程序基于使用context-free grammar.(缩写为CFG)。语法其实类似于模板作文。我举个例子(即handout的例子)
首先:所有的CFG从<start>标签开始。
以上图为例:这个句子的模板为 The <object> <verb> tonight,填入<object> <verb>即可
{
<>
}
圈起来的即为可从模板中填写词。
根据上面给出的模板可以写出:
①The big yellow flowers sign warily tonight;
②The waves die warily tonight;
…等等
通过随机的选择模板里的单词,就能随机的生成句子了。
通过阅读老师给的骨架(有很多注释),编写代码。这就是RSG的任务了
Assignment solution
通过思考,其实使用CFG语法写的句子就是一棵树的一条路径。而RSG随机生成句子:就是随机走一条路。所以DFS就可以解决问题啦。
现在剖析下老师给的骨架
老师定义了两个类 Production,Definition。仔细一看:
Production是把vector<string>封装起来。
Definition是把vector<Produvtion>封装起来。
有什么用呢?且看下图
更多推荐
Stanford CS107 Assignment 1: Random Sentence Generator(RSG)
发布评论