本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:
无论用户说什么,首先把对方说的话在一行中原样打印出来;
消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
把原文中所有大写英文字母变成小写,除了 I;
把原文中所有独立的 can you、could you 对应地换成 I can、I 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
 1 #include<stdio.h>
2 #include<string.h>
3
4 char b[1005];
5 int judge(int x)
6 {
7 return !((b[x]>='A' && b[x]<='Z') || (b[x]>='a' && b[x]<='z') || (b[x]>='0' && b[x]<='9'));
8 }
9
10
11 int main(void)
12 {
13 int i,j;
14 int n,c;
15 char a[1005];
16
17 scanf("%d",&n);
18 getchar();
19
20 while(n--)
21 {
22 gets(a);
23 puts(a);
24 printf("AI: ");
25 c = i = 0;
26
27 for(i=0; a[i]; i++)
28 {
29 if(a[i] == ' ') //把所有空格窦归为一个
30 {
31 while(a[i] == ' ')
32 {
33 i++;
34 }
35 b[c++] = ' ';
36 i--;
37 }
38 else if(a[i] == '?')
39 {
40 b[c++] = '!';
41 }
42 else if(a[i]>='A' && a[i]<='Z' && a[i]!='I')
43 {
44 b[c++] = a[i]+32;
45 }
46 else
47 {
48 b[c++] = a[i];
49 }
50 }
51
52 for(i=0; i<c; i++) //strstr返回的是地址!
53 {
54 if(i==0 && b[i]==' ') continue;
55 if((i==0 || judge(i-1)) && strstr(b+i,"could you")==&b[i] && (i+9==c || judge(i+9))) //i使用来检查是否在首尾独立
56 { //judge检查是否在句中独立
57 printf("I could");
58 i+=8;
59 }
60 else if((i==0 || judge(i-1)) && strstr(b+i,"can you")==&b[i] && (i+7==c || judge(i+7)))
61 {
62 printf("I can");
63 i+=6;
64 }
65 else if((i==0 || judge(i-1)) && b[i]=='m' && b[i+1]=='e' && (i+2==c || judge(i+2)))
66 {
67 printf("you");
68 i++;
69 }
70 else if((i==0 || judge(i-1)) && b[i]=='I' && (i+1==c || judge(i+1)))
71 {
72 printf("you");
73 }
74 else if(b[i]==' ')
75 {
76 if(i==c-1) continue; //结尾空格
77 if(!judge(i+1))//如果空格后一个是数字或者字母 直接过滤掉标点
78 {
79 printf(" ");
80 }
81 }
82 else
83 {
84 printf("%c",b[i]);
85 }
86 }
87 printf("\n");
88 }
89
90 return 0;
91 }

估值为一亿的AI核心代码的更多相关文章

  1. L1-064 估值一亿的AI核心代码 (20 分)

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

  2. PTA --- 天梯赛 L1-064 估值一亿的AI核心代码

    L1-064 估值一亿的AI核心代码 (20 point(s)) 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多 ...

  3. L1-064 估值一亿的AI核心代码 (20分)

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

  4. PTA 估值一亿的AI核心代码

    题面 比赛时被模拟题打自闭了,本来以为是个比较麻烦的模拟,实际上只要会C++的regex不到40行就能把这个题过掉了(orz smz) regex是用来处理正则表达式,里面有个函数regex_repl ...

  5. PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)

    Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...

  6. L1-064 估值一亿的AI核心代码

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

  7. go & AI核心代码

  8. 【五子棋AI循序渐进】关于VCT,VCF的思考和核心代码

    前面几篇发布了一些有关五子棋的基本算法,其中有一些BUG也有很多值得再次思考的问题,在框架和效果上基本达到了一个简单的AI的水平,当然,我也是初学并没有掌握太多的高级技术.对于这个程序现在还在优化当中 ...

  9. .NET核心代码保护策略

    .NET核心代码保护策略-隐藏核心程序集 经过之前那个道德指责风波过后也有一段时间没写博客了,当然不是我心怀内疚才这么久不写,纯粹是程序员的通病..怎一个懒字了得,本来想写一些长篇大论反讽一下那些道德 ...

  10. APP反编译第一课《如何找到核心代码》

    相信很多人都应该会去接触APP反编译,本小七给大家带来入门级别套路,自己也在慢慢摸索学习,一起成长吧.第一步,反编译需要的工具有:一.java环境,其实这里你只要安装了burp就不用管这个的二.apk ...

随机推荐

  1. Mysql高级2-SQL性能分析

    一.SQL执行频率 MySQL客户端 连接成功后,通过show [session | global] status 命令可以提供服务器状态信息,通过如下指令,可以查看当前数据库的insert,upda ...

  2. 【更新】【解决中文文件名乱码】mac一键获取最新datagrid 2017.3注册码到剪贴板

    背景与前版实现请见: 前版原文 需要the unarchiver 解决中文文件名在mac上创建文件异常. 代码调整 IDEA_JIHUOMA_HOME="/tmp/idea-jihuoma& ...

  3. 2023-08-06:小青蛙住在一条河边, 它想到河对岸的学校去学习 小青蛙打算经过河里 的石头跳到对岸 河里的石头排成了一条直线, 小青蛙每次跳跃必须落在一块石头或者岸上 给定一个长度为n的数组ar

    2023-08-06:小青蛙住在一条河边, 它想到河对岸的学校去学习 小青蛙打算经过河里 的石头跳到对岸 河里的石头排成了一条直线, 小青蛙每次跳跃必须落在一块石头或者岸上 给定一个长度为n的数组ar ...

  4. 使用$test$plusargs提高RTL验收速度

    0 前言 这段时间在整合一个小ip,因为要验证每个feature是否可行,需要用testbench + C语言的方式进行仿真验证,由于每种feature不仅要在C语言中修改寄存器配置,还要再testb ...

  5. 【技术积累】Java里的volatile关键字到底能干嘛?

    7.4 最害怕的一集 - volatile 7.4.1 最简单的一集 - volatile 语义 (难度 : ) 读 -> 读一个 volatile 必须从 主内存读 写 -> 写一个 v ...

  6. 第一个程序PingPong

    功能需求 如图所示,开启两个ping类型的服务ping1和ping2,ping1给ping2发消息,ping2收到回应ping1,ping1收到再回应ping2,不断循环. 服务模块 Skynet提供 ...

  7. 我是如何使用Spring Retry减少1000 行代码

    本文翻译自国外论坛 medium,原文地址:https://levelup.gitconnected.com/how-i-deleted-more-than-1000-lines-of-code-us ...

  8. 实在智能TARS-RPA-Agent,业界首发的产品级大模型Agent有何非凡之处?

    融合LLM的RPA进化到什么程度? AIGC如何借AI Agent落地? 像生成文本一样生成流程的ChatRPA,能够提升RPA新体验? 边探索边创建的ChatRPA,能否破解RPA与LLM融合难题? ...

  9. Java NIO 图解 Netty 服务端启动的过程

    一.启动概述 了解整体Netty常用的核心组件后,并且对比了传统IO模式.在对比过程中,找到了传统IO对应Netty中是如何实现的.最后我们了解到在netty中常用的那些组件. 本文在了解下这些核心组 ...

  10. SqlServer修改表字段类型

    if not exists (select 1 from syscolumns where name='字段名' and id=OBJECT_ID('表名') and 条件) begin alter ...