7-11 敲笨钟
原题:
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。
现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。
输入格式:
输入首先在第一行给出一个不超过 20 的正整数 N。随后 N 行,每行用汉语拼音给出一句古诗词,分上下两半句,用逗号 ,
分隔,句号 .
结尾。相邻两字的拼音之间用一个空格分隔。题目保证每个字的拼音不超过 6 个字符,每行字符的总长度不超过 100,并且下半句诗至少有 3 个字。
输出格式:
对每一行诗句,判断其是否压“ong”韵。即上下两句末尾的字都是“ong”结尾。如果是压此韵的,就按题面方法糟改之后输出,输出格式同输入;否则输出 Skipped
,即跳过此句。
.
解题思路:
- 引入
readline
模块并创建接口对象:首先将readline
模块引入,并使用createInterface
方法创建一个接口对象rl
。该对象设置了输入流为标准输入。 - 读取输入并存储:通过监听
'line'
事件,将每行输入存储在数组buf
中。 - 解析输入:通过
parseInt(buf[0])
将第一行输入转换为一个整数n,表示后续字符串的数量。通过buf.slice(1)
获取从第二行开始的输入文本,并将其存储在数组str
中。 - 处理字符串并输出结果:使用
for...of
循环遍历数组str
。对于每个字符串,使用正则表达式匹配是否符合条件/.*?ong,.*?ong\./
。如果匹配成功,则通过replace
方法将匹配到的部分替换为" qiao ben zhong.“,然后将结果输出到控制台。如果不匹配,则输出"Skipped”。
.
JavaScript(node)代码:
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
});
let buf = [];
rl.on('line', (input) => {
buf.push(input);
});
rl.on('close', () => {
const n = parseInt(buf[0]);
const str = buf.slice(1);
for (let i of str) {
if (i.match(/.*?ong,.*?ong\./)) {
console.log(i.replace(/ [a-z]+ [a-z]+ [a-z]+\./g, ' qiao ben zhong.'));
} else {
console.log("Skipped");
}
}
});
.