Stanford CS107 Assignment 1: Random Sentence Generator(RSG)

在这里插入图片描述

Abstract

本人正在学习Stanford CS107。这门课很不错,我简单把这门课的信息说一下。

key value
官网 https://see.stanford.edu/Course/CS107
课程名 编程范式
所需基础 C,C++
上课视频 Bilibili搜索 https://www.bilibili.com/video/av9789206 (可能会失效)
我做的作业 https://github.com/peanwang/stanford-cs107

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>封装起来。
有什么用呢?且看下图
在这里插入图片描述
我把Definition里的Production打印了出来。终于明白了:
Definition里面装的是每一个标签里的内容,其中可选的话便用Production(vector<string>)封装起来。
{
<>


}。
举个例子:
{
<verb>
sign <advert>;
ported like ;
die ;
}
Definition(vector)有三个Produ

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值