拉丁猪文字游戏

这是一个英语语言游戏。基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如“banana”会变成“anana-bay”)。可以在维基百科上了解更多内容。

基本的思想是,对于aeiou这五个元音字符装起来,这里不需要序列,感觉使用set集合类挺好的,然后遍历,寻找第一个不属于元音字母的辅音字母,然后给它组合起来,然后连接到字符串的后面组成一个新的字符串。

  1. #include <iostream>
  2. #include <string>
  3. #include <set>
  4. using namespace std;
  5. int main(int argc, char const *argv[])
  6. {
  7. set<int> vowel;
  8. vowel.insert(‘a‘);
  9. vowel.insert(‘e‘);
  10. vowel.insert(‘i‘);
  11. vowel.insert(‘o‘);
  12. vowel.insert(‘u‘);
  13. vowel.insert(‘A‘);
  14. vowel.insert(‘E‘);
  15. vowel.insert(‘I‘);
  16. vowel.insert(‘O‘);
  17. vowel.insert(‘U‘);
  18. string str; cin>>str;
  19. string item;
  20. string::iterator rIt ;
  21. for (rIt = str.begin(); rIt != str.end(); ++rIt)
  22. {
  23. if (vowel.find(*rIt) == vowel.end())
  24. {
  25. item = *rIt;
  26. str.erase(rIt);
  27. str+="-"+item+"ay";
  28. cout<<str;
  29. break;
  30. }
  31. }
  32. return 0;
  33. }

set集合常用的操作:

begin()        ,返回set容器的第一个元素

end()      ,返回set容器的最后一个元素

clear()          ,删除set容器中的所有的元素

empty()    ,判断set容器是否为空

max_size()   ,返回set容器可能包含的元素最大个数

size()      ,返回当前set容器中的元素个数

rbegin     ,返回的值和end()相同

rend()     ,返回的值和rbegin()相同

如下:

  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4. int main()
  5. {
  6. set<int> s;
  7. s.insert(1);
  8. s.insert(2);
  9. s.insert(3);
  10. s.insert(1);
  11. cout<<"set 中 1 出现的次数是 :"<<s.count(1)<<endl;
  12. cout<<"set 中 4 出现的次数是 :"<<s.count(4)<<endl;
  13. return 0;
  14. }

count() 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。

  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4. int main()
  5. {
  6. set<int> s;
  7. s.insert(1);
  8. s.insert(2);
  9. s.insert(3);
  10. s.insert(1);
  11. cout<<"set 中 1 出现的次数是 :"<<s.count(1)<<endl;
  12. cout<<"set 中 4 出现的次数是 :"<<s.count(4)<<endl;
  13. return 0;
  14. }

equal_range() ,返回一对定位器,分别表示第一个大于或等于给定关键值的元素和 第一个给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值。

  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4. int main()
  5. {
  6. set<int> s;
  7. set<int>::iterator iter;
  8. for(int i = 1 ; i <= 5; ++i)
  9. {
  10. s.insert(i);
  11. }
  12. for(iter = s.begin() ; iter != s.end() ; ++iter)
  13. {
  14. cout<<*iter<<" ";
  15. }
  16. cout<<endl;
  17. pair<set<int>::const_iterator,set<int>::const_iterator> pr;
  18. pr = s.equal_range(3);
  19. cout<<"第一个大于等于 3 的数是 :"<<*pr.first<<endl;
  20. cout<<"第一个大于 3的数是 : "<<*pr.second<<endl;
  21. return 0;
  22. }

erase(iterator)  ,删除定位器iterator指向的值

erase(first,second),删除定位器first和second之间的值

erase(key_value),删除键值key_value的值

  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4. int main()
  5. {
  6. set<int> s;
  7. set<int>::const_iterator iter;
  8. set<int>::iterator first;
  9. set<int>::iterator second;
  10. for(int i = 1 ; i <= 10 ; ++i)
  11. {
  12. s.insert(i);
  13. }
  14. //第一种删除
  15. s.erase(s.begin());
  16. //第二种删除
  17. first = s.begin();
  18. second = s.begin();
  19. second++;
  20. second++;
  21. s.erase(first,second);
  22. //第三种删除
  23. s.erase(8);
  24. cout<<"删除后 set 中元素是 :";
  25. for(iter = s.begin() ; iter != s.end() ; ++iter)
  26. {
  27. cout<<*iter<<" ";
  28. }
  29. cout<<endl;
  30. return 0;
  31. }

find()  ,返回给定值的定位器,如果没找到则返回end()

  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4. int main()
  5. {
  6. int a[] = {1,2,3};
  7. set<int> s(a,a+3);
  8. set<int>::iterator iter;
  9. if((iter = s.find(2)) != s.end())
  10. {
  11. cout<<*iter<<endl;
  12. }
  13. return 0;
  14. }

insert(key_value); 将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置

inset(first,second);将定位器firstsecond之间的元素插入到set中,返回值是void.

  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4. int main()
  5. {
  6. int a[] = {1,2,3};
  7. set<int> s;
  8. set<int>::iterator iter;
  9. s.insert(a,a+3);
  10. for(iter = s.begin() ; iter != s.end() ; ++iter)
  11. {
  12. cout<<*iter<<" ";
  13. }
  14. cout<<endl;
  15. pair<set<int>::iterator,bool> pr;
  16. pr = s.insert(5);
  17. if(pr.second)
  18. {
  19. cout<<*pr.first<<endl;
  20. }
  21. return 0;
  22. }

lower_bound(key_value) ,返回第一个大于等于key_value的定位器

upper_bound(key_value),返回最后一个大于等于key_value的定位器

  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4. int main()
  5. {
  6. set<int> s;
  7. s.insert(1);
  8. s.insert(3);
  9. s.insert(4);
  10. cout<<*s.lower_bound(2)<<endl;
  11. cout<<*s.lower_bound(3)<<endl;
  12. cout<<*s.upper_bound(3)<<endl;
  13. return 0;
  14. }

总结:使用了set集合元素,set集合元素只能是唯一的,集合元素查找很容易,在使用find() 函数中,如果查找函数找到了元素,那么就返回该元素的的定位器,否则返回end()

字符串的拼接,对于自己的一个挑战是,如何不使用多余定义的字符串就可以将拼接实现。其中char类型和string类型不可以直接的转换。需要进行中间部分的的处理。

来自为知笔记(Wiz)

时间: 2024-10-14 00:28:15

拉丁猪文字游戏的相关文章

小项目创意大集合

每个程序员都可以入手的小项目创意大集合 我经常看有人发帖问关于软件项目创意点子的事,也看到了很多回帖,我自己也回了一些常见的软件项目创意.不过我觉得只列出三两个是远远不够的,因此就收集并这个软件项目创意列表,大家要找简单的编程软件项目创意学习练手的话,可以收藏并扩散本文.这些软件项目创意并不是论文级别的,只是想抛砖引玉让大家能从中受些启发. 下面你们会看到 120 多个个软件项目创意想法,都是我通过头脑风暴得来的.我将其根据主题分成了10 个分类,但有些软件项目创意其实涵盖了不止一个主题. 更新

python练手项目

文本操作 逆转字符串--输入一个字符串,将其逆转并输出. 拉丁猪文字游戏--这是一个英语语言游戏.基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如"banana"会变成"anana-bay").可以在维基百科上了解更多内容. 统计元音字母--输入一个字符串,统计处其中元音字母的数量.更复杂点的话统计出每个元音字母的数量. 判断是否为回文--判断用户输入的字符串是否为回文.回文是指正反拼写形式都是一样的词,譬如"racecar

程序员练手项目

转自:http://mp.weixin.qq.com/s?__biz=MzA4OTE4MjIwMA==&mid=2666146030&idx=1&sn=765c206ffcb28822674376985cdf9393&scene=23&srcid=0801NjfvdJozzoHkpC1BGnN4#rd 我经常看有人发帖问关于项目点子的事,也看到了很多回帖,我自己也回了一些常见的项目.不过我觉得只列出三两个是远远不够的,因此就收集并这个项目列表,大家要找简单的编程项目

一些点子

文本操作 逆转字符串——输入一个字符串,将其逆转并输出. 拉丁猪文字游戏——这是一个英语语言游戏.基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如“banana”会变成“anana-bay”).可以在维基百科上了解更多内容. 统计元音字母——输入一个字符串,统计处其中元音字母的数量.更复杂点的话统计出每个元音字母的数量. 判断是否为回文——判断用户输入的字符串是否为回文.回文是指正反拼写形式都是一样的词,譬如“racecar”. 统计字符串中的单词数目——统计字符

大数据Hadoop生态圈:Pig和Hive

前言 Pig最早是雅虎公司的一个基于Hadoop的并行处理架构,后来Yahoo将Pig捐献给Apache的一个项目,由Apache来负责维护,Pig是一个基于 Hadoop的大规模数据分析平台. Pig为复杂的海量数据并行计算提供了一个简 易的操作和编程接口,这一点和FaceBook开源的Hive一样简洁,清晰,易上手! 一.Pig概述 Pig包括 两部分 1:用于描述数据流的语言,称为 Pig Latin (拉丁猪,个人翻译) 2:用于运行PigLatin程序的 执行环境 .一个是 本地 的单

大数据 hadoop ------ pig 、hive、Mahout、hbase

pig Pig最早是雅虎公司的一个基于Hadoop的并行处理架构,后来Yahoo将Pig捐献给Apache的一个项目,由Apache来负责维护,Pig是一个基于 Hadoop的大规模数据分析平台. Pig为复杂的海量数据并行计算提供了一个简 易的操作和编程接口,这一点和FaceBook开源的Hive一样简洁,清晰,易上手! Pig包括 两部分 1:用于描述数据流的语言,称为 Pig Latin (拉丁猪,个人翻译) 2:用于运行PigLatin程序的 执行环境 .一个是 本地 的单JVM执行环境

风口浪尖上的猪,很重

上一篇博文大概是一年多前写的了,时间眨眼间就过了,而这一年多对我来说,很难熬! 一年半前,头脑发热,成立 广州多聚信息科技有限 公司,满腔热血,信心满满.然而,风口浪尖上的猪,表面风光,实则顶着巨大无比的压力!团队从两三个人到如今二十多口人,每个月发粮前,都掰着手指头过日子,低下的兄弟姐妹跟着我们吃饭啊!心灵鸡汤,像童话里的故事,总有一个好结局,而现实是很残酷的,公司成立之初,我们好高骛远,一心做一个伟大的企业.然而,这个过程中我们处处碰壁,业务一再调整,心慢慢小了下来,到后来,什么赚钱(合法范

十年磨一剑,霜刃未曾试——杀猪越货利器放送

这是南方七月一个风少雨多,杀猪越货的早晨. 混迹于IT圈多年,自制若干攻击利器,后门木马等,个人一直低调在用,基本上从未示众,借用唐朝贾岛同学的话说就是"十年磨一剑,霜刃未曾试.". 今早,就在今早,公布吧--所谓技术这东西,似乎.好像不能一辈子(尤其是在天朝):何况长江后浪推前浪,前浪必然挂在沙滩上:与其被挂,不如主动让路,做后来者的人梯,让生命成为桥梁(^_*).再次套用贾岛同学的话就是"今日把示君,谁有不平事?". 好了,废话和牢骚一大通,下面进入正题.今天公

BZOJ1975 [SDOI2010] 魔法猪学院

[问题描述] iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很 多的了解:众所周知,世界是由元素构成的:元素与元素之间可以互相转换:能量守恒--. 能量守恒--iPig 今天就在进行一个麻烦的测验.iPig 在之前的学习中已经知道了很多种元素,并学会了可以转化这些元素的魔法,每种魔法需要消耗 iPig 一定的能量.作为 PKU 的顶尖学猪,让 iPig 用最少的能量完成从一种元素转换到另一种元素--等