首页 > 其他分享 >PTA L1-064 估值一亿的AI核心代码

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

时间:2024-09-22 16:54:59浏览次数:3  
标签:原文中 prime 064 show AI PTA 空格 know

L1-064 估值一亿的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

题解:

#include<stdio.h>
#include<ctype.h>

// 判断是否为空格or非字母非数字字符
int Judge(char p)
{
    if ((p >= 'A' && p <= 'Z') || (p >= 'a' && p <= 'z') || (p >= '0' && p <= '9'))
        return 0;
    else
        return 1;
}

// 去除空格
void DelBlank(char arr[], int len)
{
    int i = 0;
    for (i = 0; i < len; i++)
    {
        // 处理开头的空格
        if (arr[0] == ' ')
        {
            int j = 0;
            for (j = 0; j < len; j++)
            {
                arr[j] = arr[j + 1];
            }
        }

        if (arr[i] == ' ')
        {
            int flag = Judge(arr[i + 1]);
            if (flag == 1)
            {
                int k = 0;
                for (k = i; k < len; k++)
                {
                    arr[k] = arr[k + 1];
                }
                i--;
            }
        }
    }
}

// 大写转小写
void Tolower(char arr[], int len)
{
    int i = 0;
    for (i = 0; i < len; i++)
    {
        if (arr[i] != 'I')
        {
            arr[i] = tolower(arr[i]);
        }
    }
}

// 替换并打印最终结果
void ReplacePrint(char arr[])
{
    printf("AI: ");

    int i = 0;
    for (i = 0; i < strlen(arr); i++)
    {
        if ((arr[i] == 'c' && arr[i + 1] == 'a' && arr[i + 2] == 'n' && arr[i + 3] == ' ' && arr[i + 4] == 'y' && arr[i + 5] == 'o' && arr[i + 6] == 'u') && (i == 0 || arr[i - 1] == ' ') && (arr[i + 7] == ' ' || arr[i + 7] == '\0' || Judge(arr[i + 7])))
        {
            printf("I can");
            i += 6;
        }
        else if ((arr[i] == 'c' && arr[i + 1] == 'o' && arr[i + 2] == 'u' && arr[i + 3] == 'l' && arr[i + 4] == 'd' && arr[i + 5] == ' ' && arr[i + 6] == 'y' && arr[i + 7] == 'o' && arr[i + 8] == 'u') && (i == 0 || arr[i - 1] == ' ') && (arr[i + 9] == ' ' || arr[i + 9] == '\0' || Judge(arr[i + 9])))
        {
            printf("I could");
            i += 8;
        }
        else if (arr[i] == 'I' && (i == 0 || arr[i - 1] == ' ') && (arr[i + 1] == ' ' || arr[i + 1] == '\0' || Judge(arr[i + 1])))
        {
            printf("you");
        }
        else if ((arr[i] == 'm' && arr[i + 1] == 'e') && (i == 0 || arr[i - 1] == ' ') && (arr[i + 2] == ' ' || arr[i + 2] == '\0' || Judge(arr[i + 2])))
        {
            printf("you");
            i += 1;
        }
        else
        {
            printf("%c", arr[i]);
        }
    }
}

void Change(char arr[], int len)
{
    int i = 0;
    for (i = 0; i < len; i++)
    {
        if (arr[i] == '?')
        {
            arr[i] = '!';
        }
    }
}

int main()
{
    int n = 0;
    scanf("%d", &n);
    getchar();
    char arr[1001] = { 0 };
    int i = 0;
    for (i = 0; i < n; i++)
    {
        gets(arr);
        printf("%s\n", arr);
        int len = strlen(arr);
        DelBlank(arr, len);
        Tolower(arr, len);
        Change(arr, len);
        ReplacePrint(arr);
        printf("\n");
    }

return 0;
}

标签:原文中,prime,064,show,AI,PTA,空格,know
From: https://blog.csdn.net/qq_50907107/article/details/142438155

相关文章

  • [PTA]7-8 汉诺塔问题(Hanoi) 7-9 建国的数学难题 7-10 用递归法求解Fibonacci数列
    [PTA]7-8汉诺塔问题(Hanoi)7-9建国的数学难题7-10用递归法求解Fibonacci数列描述:一、汉诺塔问题有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。提示:可将圆盘临时......
  • [PTA]7-2 输出全排列
    [PTA]7-2输出全排列请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。输入格式:输入给出正整数n(<10)。输出格式:输入样例:3输出样例:123132213231312321代码#include<stdio.h>#defineYES1#defineNO......
  • [PTA]7-4 九连环问题
    [PTA]7-4九连环问题九连环是一种流传于山西省的传统民间的智力玩具,由九个圆环相连成串,以解开为胜。九连环的九个环,一环扣一环地套在钗上。除了第1号环可以随时装上或卸下以外,其它环装上或卸下的条件是:在它的前面仅有紧靠它那一个环在钗上。即:当第1~i−2号环都不在......
  • idea运行java项目main方法报build failure
    当你在IntelliJIDEA中运行Java项目的main方法时遇到buildfailure,这通常意味着构建过程中出现了问题。以下是一些常见的原因和解决方法:1.检查构建日志首先,查看构建日志以获取详细的错误信息。构建日志通常会显示具体的错误原因,帮助你定位问题。2.检查依赖项确保所有依赖......
  • AIGC实战之如何构建出更好的大模型RAG系统
      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学......
  • 探索Mem0:AI的智能记忆层
    文章目录探索Mem0:AI的智能记忆层背景介绍Mem0是什么?如何安装Mem0?简单使用方法应用场景常见问题及解决方案总结![探索Mem0:AI的智能记忆层背景介绍在人工智能的世界里,记忆是个性化体验的关键。想象一下,如果你的AI助手能够记住你的喜好、习惯,甚至是你上次的对话......
  • ERROR StatusLogger NoSql contains an invalid element or attribute "MongoDb"
    报错:ERRORStatusLoggerNoSqlcontainsaninvalidelementorattribute"MongoDb"ERRORStatusLoggerNoSQLprovidernotspecifiedforappender[databaseAppender].ERRORStatusLoggerNullobjectreturnedforNoSqlinAppenders.ERRORStatusLoggerUnab......
  • 【win/mac】Adobe Illustrator(AI2024)软件下载安装(亲测可用)
    目录简介下载链接软件功能操作指南简介AdobeIllustrator,简称AI,是一款由Adobe公司开发的矢量图形编辑软件。它广泛应用于插画制作、Logo设计、排版、Web设计等多个领域。由于其强大的图形编辑功能和支持多种格式的文件导入导出,AI成为设计师们必备的工具之一。AI不仅可......
  • 题解:AT_abc372_c [ABC372C] Count ABC Again
    博客内食用更佳乍一看好像是数据结构。我们结合题目所求内容考虑。对于每次修改,能对答案产生影响的最多只能是当前字符向前和向后延伸\(2\)个元素所构成的长为\(5\)的子串。那么我们先\(\mathcal{O}(n)\)计算出来初始答案。每次修改的时候,不妨先把\(i-2\simi\)和\(i-......
  • airplay认证流程有哪些?
    **AirPlay认证流程解析**在当前的数字时代,无线传输技术已成为连接设备、分享内容的标配。AirPlay,作为苹果公司开发的一种专有无线通信技术,允许用户将音频、视频和屏幕镜像从iOS设备、macOS计算机无线传输到支持的接收设备,如扬声器、电视和投影仪等。为了保障用户的使用体验和内容的......