7-118 估值一亿的AI核心代码 (20 分)

以上图片来自新浪微博。

本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:

  • 无论用户说什么,首先把对方说的话在一行中原样打印出来;
  • 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
  • 把原文中所有大写英文字母变成小写,除了 I
  • 把原文中所有独立的 can youcould you 对应地换成 I canI could—— 这里“独立”是指被空格或标点符号分隔开的单词;
  • 把原文中所有独立的 I 和 me 换成 you
  • 把原文中所有的问号 ? 换成惊叹号 !
  • 在一行中输出替换后的句子作为 AI 的回答。

输入格式:

输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。

输出格式:

按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。

输入样例:

6
Hello ?Good to chat   with you
can   you speak Chinese?
Really?
Could you show me 5
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 5
AI: I could show you 5
What Is this prime? I,don 't know
AI: what Is this prime! you,don't know

19分代码

#include<bits/stdc++.h>
using namespace std;
int main(){int n; cin >> n,getchar();string s;vector<string>v;while (n--) {v.clear();getline(cin ,s);cout << s << endl << "AI: ";for (int i = 0; i < s.size(); i++) {if (isalnum(s[i]) && s[i] != 'I') {s[i] = tolower(s[i]);}else {s.insert(i ," ");i++;}if (s[i] == '?') s[i] = '!';}stringstream t(s);while (t >> s) v.push_back(s);for (int i = 0; i < v.size(); i++) {if (v[i] == "I" || v[i] == "me") v[i] = "you";if (v[i] == "can" && v[i + 1] == "you") v[i] = "I" ,v[i + 1] = "can";if (v[i] == "could" && v[i + 1] == "you") v[i] = "I" ,v[i + 1] = "could";if (!isalnum(v[i][0])) cout << v[i];else {if (i) cout << ' ';cout << v[i];}}cout << endl;}return 0;
}
#include<bits/stdc++.h>
using namespace std;
int t;
string s;
vector<string>v;
int main() {cin >> t; getchar();while (t--) {v.clear();getline (cin ,s);cout << s << endl << "AI: ";int len = s.length();for (int i = 0;i < len; i++) {if (s[i] == '?') s[i] = '!';//将所有问号转换为省略号if (s[i] != 'I' && 'A' <= s[i] && s[i] <= 'Z') s[i] = (char)(s[i]+32);//除I外的大写字母全部变为小写} for (int i = 0; i < len;) { string tmp = "";if(s[i] == ' '){tmp = " ";while(i < len && s[i] == ' ')i++;//遇到连续的空格只存一个}else if (isalpha(s[i])) {while(i < len && isalpha(s[i]))tmp += s[i++];}else if (isdigit(s[i])) {while (i < len && isdigit(s[i]))tmp += s[i++];}else{tmp += s[i++];if (v.size() > 0 && v.back() == " ") v.pop_back();//删去字符前面的空格}if (tmp != " " || (!v.empty() && i != len)) v.push_back(tmp);//删去句首和句末的空格}for(int i = 0;i < v.size(); i++){if (v[i] == "I" || v[i] == "me") v[i] = "you";//所有I和me转换为youelse if (v[i] == "you"){//遇到you时检测前一个是否为分隔符,前前个是否是"can"或"could"if (i < 2) continue;//小于2自然不行if (isdigit(v[i-1][0]) || isalpha(v[i-1][0])) continue;//数字和字母不行if (v[i-2] == "can") v[i-2] = "I" ,v[i] = "can";if (v[i-2] == "could") v[i-2] = "I",v[i] = "could";}}for(int i = 0; i < v.size(); i++) cout << v[i];//输出cout << endl;}//记得换行return 0;
}

7-118 估值一亿的AI核心代码 (20 分)相关推荐

  1. 7-8 估值一亿的AI核心代码 (20 分) 代码有解析

    7-8 估值一亿的AI核心代码 (20 分) 以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文 ...

  2. 估值一亿的AI核心代码 (20分)

    估值一亿的AI核心代码 (20分) 以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多余空格 ...

  3. L1-064 估值一亿的AI核心代码 (20 分)-PAT 团体程序设计天梯赛 GPLT

    本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部 ...

  4. L1-064 估值一亿的AI核心代码——按照规则逐一击破

    一.题目 估值一亿的AI核心代码 二.分析 1.消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉: 判断是否为符号 bool If(char ...

  5. 【PTA-训练day16】L2-028 秀恩爱分得快 + L1-064 估值一亿的AI核心代码

    !L2-028 秀恩爱分得快 - 分块大模拟 PTA | 程序设计类实验辅助教学平台 这个题还是挺考验 函数合理运用 和 数据模拟处理能力 的 思路: 因为可能出现-0这种输入 所以不能是int型 s ...

  6. PTA 估值一亿的AI核心代码 (20 分)

    估值一亿的AI核心代码 (20 分) AI.jpg 以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消 ...

  7. 估值一亿的AI核心代码现已开源

    package ai.core;import java.util.Scanner;/*** @description: AI核心代码*/ public class AiMain {public sta ...

  8. 估值一亿的AI核心代码(简洁详细过程+题目存在漏洞)

    以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多余空格:把相邻单词间的多个空格换成 1 个 ...

  9. L1-064 估值一亿的AI核心代码(C++)

    以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多余空格:把相邻单词间的多个空格换成 1 个 ...

最新文章

  1. 数学推导+纯Python实现机器学习算法:GBDT
  2. 虚拟主机,连接mysql及论坛安装
  3. (深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack)(C/C++存储类型总结)(内存管理)
  4. php网站分区,PHP - Manual: 分区和分片 (官方文档)
  5. Python对Protobuf进行序列化与反序列化
  6. 『实用』判断一个噩梦客户的7个预警信号
  7. 注册名字英文name域名_关于域名和备案,你想知道的都在这里
  8. 计算机网络提供服务靠,计算机网络体系结构及协议之通信子网的操作方式和网络层提供的服务...
  9. Hadoop Yarn源码 - day1
  10. struts2第一个程序的详解(配图)
  11. 面向对象的OOA、OOD、OOP
  12. “区块链+物联网”的发展现状和应用案例
  13. 星巴克与阿里巴巴合作咖啡外卖
  14. php ios表情包,十分钟开发一款 iOS 表情包 App
  15. 电气潮流运算Matlab怎么编程,基于Matlab的电力系统潮流编程计算
  16. 异贝服装店都可以做会员营销?神奇的逆向思维让他快速裂变赚钱!
  17. 异常点检测算法(三)Replicator Neural Networks
  18. 【图像上色小综述】生成对抗网络的GAN法
  19. postman生成时间戳,未来时间戳
  20. 拆解闲鱼无货源盈利模式,需要注意的细节太多?

热门文章

  1. pythonjam可以画图吗_GitHub - jamfs/pyecharts: Python Echarts Plotting Library
  2. mysql之事件的开启和调用
  3. UML和模式应用5:细化阶段(5)---系统顺序图
  4. 去除UINavigationBar的下边框
  5. 大蚂蚁在64位系统下,右键没有快发的解决方案
  6. jquery颜色选择器
  7. 对于小波分解和傅立叶分解的理解
  8. (转)VS.NET使用
  9. Java、JS、OC、Flutter的Base64编码和解码
  10. flutter网络dio框架公共请求参数、请求header使用总结