PTA --- 天梯赛 L1-064 估值一亿的AI核心代码
L1-064 估值一亿的AI核心代码 (20 point(s))
本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:
- 无论用户说什么,首先把对方说的话在一行中原样打印出来;
- 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
- 把原文中所有大写英文字母变成小写,除了
I; - 把原文中所有独立的
can you、could you对应地换成I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词; - 把原文中所有独立的
I和me换成you; - 把原文中所有的问号
?换成惊叹号!; - 在一行中输出替换后的句子作为 AI 的回答。
输入格式:
输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。
输出格式:
按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。
输入样例:
Hello ?
Good to chat with you
can you speak Chinese?
Really?
Could you show me
What Is this prime? I,don 't know
输出样例:
Hello ?
AI: hello!
Good to chat with you
AI: good to chat with you
can you speak Chinese?
AI: I can speak chinese!
Really?
AI: really!
Could you show me
AI: I could show you
What Is this prime? I,don 't know
AI: what Is this prime! you,don't know
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
getchar();
string s;
while(n--){
string str[];
int cnt=;
getline(cin,s);
cout << s << endl << "AI:";
for(int i=;i<s.size();++i){
if(isalnum(s[i])){
if(s[i]!='I')
s[i]=tolower(s[i]);
}
else{
s.insert(i," "); //对每个非字母和数字之前加空格
i++;
}
if(s[i]=='?')
s[i]='!';
}
stringstream ss(s); //主要依靠这个函数来取消单词之前的空格
while(ss >> s){
str[cnt++]=s;
}
if(!isalnum(str[0][0])) // 如果 第一个单词的第一个位置就是标点 那么要输出一个空格,题中要求 每个 AI 的回答前要加上 AI: 和一个空格。
cout << " ";
for(int i=;i<cnt;++i){
if(!isalnum(str[i][0])){ // 判断第一个字符是否是 标点,标点前面不要输出空格
cout << str[i];
}
else if(str[i]=="can" && str[i+]=="you"){
cout << " I can";
i++;
}
else if(str[i]=="could" && str[i+]=="you"){
cout << " I could";
i++;
}
else if(str[i]=="I" || str[i]=="me"){
cout << " you";
}
else
cout << " " << str[i];
}
cout << endl;
}
}
红色函数方法的详细的解释
https://www.cnblogs.com/expedition/p/11616279.html
PTA --- 天梯赛 L1-064 估值一亿的AI核心代码的更多相关文章
- L1-064 估值一亿的AI核心代码 (20 分)
L1-064 估值一亿的AI核心代码 (20 分) 以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: ...
- PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)
Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...
- PTA 估值一亿的AI核心代码
题面 比赛时被模拟题打自闭了,本来以为是个比较麻烦的模拟,实际上只要会C++的regex不到40行就能把这个题过掉了(orz smz) regex是用来处理正则表达式,里面有个函数regex_repl ...
- L1-064 估值一亿的AI核心代码
以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多余空格:把相邻单词间的多个空格换成 1 个 ...
- PTA 天梯赛 L1
L1-002 打印沙漏 细节:就是在 (i>j&&i+j<r+1) 这个区间里才有空格,然后就是 for 循环 for(r=1; ;r+=2) 条件不满足之后还会再 ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 001-006
应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 052-053
今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 048-49
今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 040-41
近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...
随机推荐
- JAVA WEB之Servlet使用
3. JSP提交数据和Servlet程序设计 想要将JSP数据提交,主要的方法有form表单方式.url方式和Session方式.将JSP数据传递给后台,form表单显然比较简单方便. 正如上一节中展 ...
- java中简单的反射
1.为什么会用到反射机制? 最近需要写定时服务,如果一个一个去写定时服务的话,后期维护是很烦人的,通过反射机制,我们就可以将定时服务的信息通过数据配置来实现,这样我们后期就可以将整个模块交给运维人员去 ...
- 【Layui】Layui模板引擎生成下拉框不显示
首先让我震惊了一下,layui引擎模板居然是支持ajax操作的 博主的需求是需要在数据表格内放入下拉框而下拉框的数据是数据库内查出来的(详见上一篇博客),但是下拉框怎么也显示不出来 找了四个小时的问题 ...
- VUE路由过度效果vs缓存
app页面 router.js
- vue 的nextTick的理解
适用场景: 例如:你在DOM渲染之前对DOM进行了操作的话,这时肯定不会有效果,好比你在 vue 的生命周期 created 里面操作了DOM元素这时肯定不会有效果, 如果我们在 created 里面 ...
- Confluence 6 分享一个文件
协同合作和编辑不仅仅是发生在页面中,很多时候你需要与你的项目小组针对文档,报告,图片,表格进行协同操作.不管是针对性的市场计划或者一个完整的项目计划,你可以在 Confluence 中让你的项目小组成 ...
- codeforces412A
Poster CodeForces - 412A The R1 company has recently bought a high rise building in the centre of Mo ...
- CentOS7 安装JumpServer
环境: CentOS Linux release 7.6.1810 (Core) JumpServer 1.4.8 Python 3.6.X MariaDB 编译安装Python3.6 首先,下载Py ...
- MySQL_(Java)使用JDBC向数据库中插入(insert)数据
MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...
- 库&插件&框架&工具
nodejs 入门 nodejs 入门教程,大家可以在 github 上提交错误 2016 年最好用的表单验证库 SMValidator.js 前端表单验证工具分享 浅谈前端线上部署与运维 说到前端部 ...