看了博友的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. 【java】 向上转型的运用

    应用 :求面积 1,抽象类  Geometry . public abstract class Geometry { public abstract double getArea(); } 2,矩形 ...

  2. [官网]微软服务器TLS的支持情况

    https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-#tls-pro ...

  3. 极简版 haproxy的搭建步骤

    背景 发现四层nginx的代理报错. 然后想着换用一下haproxy的配置. 早些时候 看过tidb的一些最佳时间, 这里简单整理一下. 下载 https://src.fedoraproject.or ...

  4. [转帖]使用 mydumper/loader 全量导入数据

    数据迁移 mydumper 是一个更强大的数据迁移工具,具体可以参考 https://github.com/maxbube/mydumper. 我们使用 mydumper 从 MySQL 导出数据,然 ...

  5. 【转帖】Linux性能优化(十四)——CPU Cache

    一.CPU Cache 1.CPU Cache简介 CPU Cache是位于CPU与内存之间的临时存储器,容量比内存小但交换速度却比内存要快得多.Cache的出现主要是为了解决CPU运算速度与内存读写 ...

  6. MYSQL 日志参数与性能的关系

    1. 先看一下mysql技术内幕 innodb存储引擎的一个结果 以及各个参数的含义

  7. fiddler如何抓取https请求

    pc端browse 1.打开下载好的fiddler,点击tools选择options后进入https tab下,勾选Decrypt  HTTPS CONNECTS 和Ignore server cer ...

  8. canvas实现添加水印

    canvas添加水印思路 1.在画布上写上水印的名称(时间加上用户名) 2.canvas转化为base64,作为body的背景色 3.优化倾斜度和透明度 4.如果用户去除body的style水印消失 ...

  9. 【K哥爬虫普法】一个人、一年半、挣了2000万!

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  10. golang uuid库介绍

    简介: 在现代软件开发中,全球唯一标识符(UUID)在许多场景中发挥着重要的作用.UUID是一种128位的唯一标识符,它能够保证在全球范围内不重复.在Go语言中,我们可以使用第三方库github.co ...