看了博友的C# 实现刘谦春晚魔术很好,改成了delphi版的。

  1 program Project1;
2
3 {$APPTYPE CONSOLE}
4 {$R *.res}
5
6 uses
7 System.SysUtils,
8 System.Classes;
9
10 var
11 list, removeElement: TStringList;
12 i, NameCount, insertIndex, directCount, sexCount: Integer;
13 tmp, element, hiddenEle1, hiddenEle2: String;
14
15 procedure Fun1(NameCount: Integer);
16 begin
17 if NameCount < list.Count then
18 begin
19 for i := 0 to NameCount - 1 do
20 begin
21 element := list[0]; // 获取第0个元素
22 list.Delete(0); // 移除第0个元素
23 list.Add(element); // 将第0个元素添加到最后
24 end;
25
26 end;
27 end;
28
29 procedure Fun2(forCount: Integer);
30 begin
31 // 被删除掉的三张牌
32 removeElement := TStringList.Create;
33 for i := 0 to forCount - 1 do
34 begin
35 removeElement.Add(list[0]);
36 list.Delete(0);
37 end;
38 Writeln(Format('被删除掉的%D张牌:%s', [forCount, removeElement.CommaText]));
39 Writeln('删除之后:' + list.CommaText);
40
41 // 把拿到的三张牌插到中间
42 Randomize;
43 insertIndex := Random(list.Count - 1) + 1; // 生成一个介于第一个和倒数第二个位置之间的随机插入位置
44 Writeln('插入位置:' + insertIndex.ToString);
45 for i := removeElement.Count - 1 downto 0 do
46 begin
47 list.Insert(insertIndex, removeElement[i]);
48 end;
49
50 end;
51
52 procedure Fun3();
53 begin
54 // 藏起来第一张牌
55 hiddenEle1 := list.Strings[0];
56 list.Delete(0);
57 end;
58
59 procedure Fun4(Count: Integer);
60 begin
61 for i := 0 to Count - 1 do
62 begin
63 list.Delete(0);
64 end
65 end;
66
67 procedure Fun5();
68 begin
69 for i := 0 to 6 do
70 begin
71 element := list[0];
72 list.Delete(0);
73 list.Add(element);
74 end;
75 end;
76
77 function Fun6(sexCount: Integer): string;
78 var
79 forCount: Integer;
80 begin
81 forCount := 0;
82 if sexCount = 1 then
83 forCount := 5 // 男生要5次
84 else
85 forCount := 4;
86 for i := 0 to forCount - 1 do
87 begin
88 // 把第一张牌放到数组最后面 (好运留下来)
89 element := list[0];
90 list.Delete(0);
91 list.Add(element);
92
93 // 烦恼丢出去
94 list.Delete(0);
95 end;
96 result := list[0];
97 end;
98
99 begin
100 try
101 try
102 list := TStringList.Create;
103 list.CommaText := 'A,B,C,D,A,B,C,D';
104 Writeln('初始牌组:' + list.CommaText);
105 Writeln('请输入你的名字有几个字:');
106 ReadLn(tmp);
107 NameCount := tmp.ToInteger;
108
109 Fun1(NameCount);
110 Writeln('变化之后:' + list.CommaText);
111
112 Fun2(3);
113 Writeln('插入三张牌后:' + list.CommaText);
114 Fun3();
115 Writeln('藏起来第一张牌后:' + list.CommaText);
116
117 Writeln('北方-1 南方-2 不南不北-3,请输入对应数字:');
118 ReadLn(tmp);
119 directCount := tmp.ToInteger;
120 Fun2(directCount);
121 Writeln('南北方人后:' + list.CommaText);
122
123 Writeln('男-1 女-2,请输入对应数字:');
124 ReadLn(tmp);
125 sexCount := tmp.ToInteger;
126 Fun4(sexCount);
127 Writeln('男女生后:' + list.CommaText);
128
129 Fun5();
130
131 Writeln('见证奇迹后:' + list.CommaText);
132
133 Writeln('开始好运留下了 烦恼丢出去');
134 hiddenEle2 := Fun6(sexCount);
135 Writeln(Format('牌1:%s 牌2:%s', [hiddenEle1, hiddenEle2]));
136
137 ReadLn;
138 except
139 on E: Exception do
140 Writeln(E.ClassName, ': ', E.Message);
141 end;
142
143 finally
144 removeElement.Free;
145 list.Free;
146
147 end;
148
149 end.

Delphi 实现刘谦春晚魔术的更多相关文章

  1. 亲临现场不是梦,2017央视春晚推出VR直播

    自里约奥运会首次试水VR直播 后,用户开始关注这种观影方式,一瞬间VR直播开始流行.就在月初,江苏卫视宣布2017年跨年晚会将进行VR全景直播.当然,央视是绝对不会错过这中潮流方式. 据悉,央视201 ...

  2. 爱奇艺直播 - 春晚直播业务API架构

    小结: 1.服务熔断策略 在网关服务中经常会对后端不同api接口做服务聚合,比如A服务 -> B服务 -> C服务 ,如果C服务出现问题,那么在调用C服务之前需要做熔断.而在设计熔断器的时 ...

  3. 中软国际首届嘉年华晚会 创新网络年会PK“春晚”

    随着新年脚步的来临,各大公司的年会陆续出炉,但是中软国际的首届嘉年华晚会,以创新网络年会和全国八地同步进行的模式,演绎不一样的互联网年会,简直可以PK“春晚”.IT届中最漂亮的美女热舞,程序员中最会唱 ...

  4. 英语口语练习系列-C34-儿童-谈论物品和人-武陵春

    词汇-儿童 child a child favorite game toy regulation breadwinner dominant selfish ancestor custom belief ...

  5. 晋城6397.7539(薇)xiaojie:晋城哪里有xiaomei

    晋城哪里有小姐服务大保健[微信:6397.7539倩儿小妹[晋城叫小姐服务√o服务微信:6397.7539倩儿小妹[晋城叫小姐服务][十微信:6397.7539倩儿小妹][晋城叫小姐包夜服务][十微信 ...

  6. AutoESL与Xilinx那些人和事

    大年三十,看到Xilinx收购AutoESL的新闻, 顿时觉得今年特别喜庆,于是,连春晚也懒得骂了. 本想立即写一篇博文八卦一番, 怎奈亲朋好友饭局不断,一直拖到今天才动笔. 与一年前Xilinx宣布 ...

  7. 论文keywords和规则匹配的baseline

    详细的思路可以参照小论文树立0317 关键词分为以下几类: t/****一些通用的过滤词,这些通用的过滤词可以使用和节目一起出现的词语,结合tf-idf看出来么?*****/    public st ...

  8. mysql benchmark基准测试

    git项目地址: https://github.com/akopytov/sysbench 利用sysbench很容易对mysql做性能基准测试(当然这个工具很强大,除了测试主流数据库性能,还能测试其 ...

  9. 用自己赚的钱第一次坐飞机 那feel倍儿爽

    马年春晚上,歌手大张伟的神曲<倍儿爽>如今已传遍大街小巷.其实,不管人家到底有没有炒作,能让我们这些观众感觉到放松.乐呵,那就是一个成功的春晚节目.而今年,我也如同这歌中唱的一样,活得倍儿 ...

  10. 所有古诗词的api

    服务商:api.getlove.cn 分类:诗词 更新时间:2016-03 如果接口不满足您的要求,您可以联系qq:2265658022购买完整的数据库 免费apikey:56eab527a0facb ...

随机推荐

  1. [转帖]设置CMD默认代码页为65001或936

    https://www.cnblogs.com/songzhenhua/p/9312769.html 之前不知道怎么改的,CMD的代码页被默认设置成了65001   但我右击CMD标题,选择'默认值' ...

  2. [转帖]TiDB Control 使用说明

    https://docs.pingcap.com/zh/tidb/stable/tidb-control TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试 ...

  3. [转帖]通过架设Cockpit服务 使用Web浏览器监测管理多个Linux服务器

    Cockpit是一个易于使用,轻量级和简单但功能强大的工具,通过单个Web浏览器监视和管理多个远程Linux服务器. 如果你管理着一台 Linux 服务器,那么你可能正在寻找一个可靠的管理工具.为了这 ...

  4. [转帖]Intel、海光、鲲鹏920、飞腾2500 CPU性能对比

    https://plantegg.github.io/2021/06/18/%E5%87%A0%E6%AC%BECPU%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94/ Int ...

  5. ELK搭建简单说明

    ELK搭建简单说明 简单说明 周天陪孩子学习,自己简单研究了下如何处理 不是很系统,仅是能够展示部分文件的日志. 需要有很多坑需要进行填充. 搭建模式 自己采取rpm包方式进行搭建 183 机器上面安 ...

  6. Bitmap、RoaringBitmap原理分析

    作者:京东科技 曹留界 在人群本地化实践中我们介绍了人群ID中所有的pin的偏移量可以通过Bitmap存储,而Bitmap所占用的空间大小只与偏移量的最大值有关系.假如现在要向Bitmap内存入两个p ...

  7. empty来显示暂无数据简直太好用,阻止用户复制文本user-select

    element-ui表格某一列无数据显示-- 很多时候,表格的某一列可能是没有数据的. 空着了不好看,ui小姐姐会说显示 -- 这个时候,小伙伴是怎么做的呢? 使用循环来判断是否为空,然后赋值为-- ...

  8. 对象中是否有某一个属性是否存在有三种方法 in hasOwnProperty Object.hasOwn

    如何看某个对象中没有某一个属性 如果我们要检测对象是否拥有某一属性,可以用in操作符 var obj= { name: '类老师', age: 18, school: '家具' }; console. ...

  9. springboot集成swagger之knife4j实战(升级版)

    官方文档链接:https://doc.xiaominfo.com/ 一.Knifej和swagger-bootstrap-ui对比 Knife4j在更名之前,原来的名称是叫swagger-bootst ...

  10. 1.2 w字+!Java IO 基础知识系统总结 | JavaGuide

    首发于:JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识.) 原文地址:https://javaguide.cn/java/io/io-basis.h ...