标题
魔王语言解释
时间限制
1 S
内存限制
10000 Kb
问题描述
有一个魔王总是使用自已的一种非常精练而抽象的语言讲话,没有人能听得懂。但他的语言是可以逐步解释成人能懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:
(1) α→β1β2…βm
(2) (θδ1δ2…δm)→(θδm…δ2θδ1θ)
在这两种形式中,从左到右均表示解释;从右到左均表示抽象。
写一个魔王解释程序,将魔王的话解释成人能听懂的话。
基本要求:设大写字母表示魔王语言的词汇,小写字母表示人的词汇,希腊字母表示可以用大写字母或小写字母代换的变量。用下述两种规则和下述规则(2)实现。
(1) B→tAdA
(2) A→sae
问题输入
一组数据,数据为一个字符串,表示一个待翻译的字符串。
问题输出
将字符串按规则翻译后输出。
输入样例
B(pxyzABhij)B
输出样例
tsaedsaepjpiphptsaedsaepsaepzpypxptsaedsae
看完题目我直接就是一脸懵,下面这俩到底是啥,
(1) α→β1β2…βm
(2) (θδ1δ2…δm)→(θδm…δ2θδ1θ)
样例的输出为啥不是 tsaedsae(pxyzsaetsaedsaehij)tsaedsae
于是乎我找了大佬的代码,仔细思考,终于明白了题目的意思,真给我气笑了
(1) α→β1β2…βm
对应
(1) B→tAdA
(2) A→sae
指字符串的替换
(2) (θδ1δ2…δm)→(θδm…δ2θδ1θ) 这个式子中的θ与δ无区别,都可以指任何字符
因此,字符串B(pxyzABhij)B 中的三B两A用
(1) B→tAdA
(2) A→sae 替换即可
中间括号需要用(θδ1δ2…δm)→(θδm…δ2θδ1θ) θ→p δ1δ2…δm→xyzABhij
即 pxyzABhij →pjpiphpBpApzpypxp
这就是这个题想表达的意思,如果你像我一样是个笨比看不懂题目,希望这可以帮助你理解该题目
附上大佬的代码链接:魔王语言解释问题(C语言) - 知乎 (zhihu.com)