L1-064 估值一亿的AI核心代码 (20 分)
发布日期:2021-06-29 22:18:38
浏览次数:3
分类:技术文章
本文共 2253 字,大约阅读时间需要 7 分钟。
以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来;消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;把原文中所有大写英文字母变成小写,除了 I;把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;把原文中所有独立的 I 和 me 换成 you;把原文中所有的问号 ? 换成惊叹号 !;在一行中输出替换后的句子作为 AI 的回答。输入格式:输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。输出格式:按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。输入样例:6Hello ? Good to chat with youcan you speak Chinese?Really?Could you show me 5What Is this prime? I,don 't know输出样例:Hello ?AI: hello! Good to chat with youAI: good to chat with youcan you speak Chinese?AI: I can speak chinese!Really?AI: really!Could you show me 5AI: I could show you 5What Is this prime? I,don 't knowAI: what Is this prime! you,don't know
#include#include /*检查该字符是否属于标点或者空格,如果属于就输出true,如果不属于就输出false; */int checkedPost(char ch){ if(ch>='0'&&ch<='9') return 0; else if(ch=='I') return 0; else if(ch>='a'&&ch<='z') return 0; else return 1; } int Ichecked(char s[],int i){ //判断满足I字符前面为空格或者是第一个字符; i--; if(i>=0&&s[i]!=' ') return 0; i++; //判断该字符的后面也需要是空格或者标点符号; if(checkedPost(s[i+1])) return 1; else return 0;}int meChecked(char s[],int i){ //判断me字符串前面是否是空格; i--; if(i>=0&&s[i]!=' ') return 0; i++; //判断 if(s[i+1]=='e'&&checkedPost(s[i+2])) return 1; else return 0;}int cancould(char s[],int i){ /* 如果如果字符串前面第一个字符不是空格的话,说明该字符串不是独立的; */ i--; if(i>=0&&s[i]!=' ') return 0; i++; /* 判断是否是can you,并且需要保证后面是空格或者是标点符号分割的; 判断是否是could you,并且需要保证后面是空格或者是标点符号分割的; */ if(s[i+1]=='a'&&s[i+2]=='n'&&s[i+3]==' '&&s[i+4]=='y'&&s[i+5]=='o'&&s[i+6]=='u'&&checkedPost(s[i+7])) return 1; else if(s[i+1]=='o'&&s[i+2]=='u'&&s[i+3]=='l'&&s[i+4]=='d'&&s[i+5]==' '&&s[i+6]=='y'&&s[i+7]=='o'&&s[i+8]=='u'&&checkedPost(s[i+9])) return 2; else return 0; }void produceStr(char str[]){ char str2[1005]; int i=0,j=0,first=0,end=0,k=0; first=0; end=strlen(str)-1; while(str[first]==' ') first++; while(str[end]==' ') end--; for(i=first;i<=end;i++) { if(str[i]>='A'&&str[i]<='Z'&&str[i]!='I') str2[k++]=str[i]+32; else if(str[i]==' ') { while(str[i]==' ') i++; i--; str2[k++]=str[i]; } else str2[k++]=str[i]; } str2[k]='\0'; //测试;// printf("str2==%s\n",str2); for(i=0;i
转载地址:https://dingshijie.blog.csdn.net/article/details/115708060 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月30日 11时16分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【NLP学习笔记】词性标注(Part-of-speech Tagging, POS)
2019-04-30
《知识图谱》阅读笔记(七)
2019-04-30
《知识图谱》阅读笔记(九)
2019-04-30
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
超越白皮书8:穿云而过的闪电网络
2019-04-30
AMM做市无常损失对冲分析系列(一)—— 损益及期权对冲模型构建
2019-04-30
JS中document对象和window对象有什么区别
2019-04-30
【python练习题】遍历1
2019-04-30
【matlab】显示图片且下方显示文字
2019-04-30
关于greater<int>以及类模板的一些理解
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
基于CentOS 7的Linux常用命令行命令
2019-04-30
行阶梯型矩阵
2019-04-30
信号量机制
2019-04-30
临界资源与临界区
2019-04-30
matlab中uint8,double,im2double和im2uint8的区别
2019-04-30
数字图像处理总复习
2019-04-30
图像去噪(包含修正的阿尔法均值滤波及通用滤波方法代码)
2019-04-30