【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

欢迎来到《小5讲堂》
大家好,我是全栈小5。
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 背景
  • 流程描述
    • 四张扑克牌
    • 对折撕开
    • 姓名组合
    • 任意牌中间
    • 藏一张牌
    • 区域牌
    • 性别牌
    • 奇迹牌
    • 好运牌
  • 约瑟夫原理
  • 相关文章

背景

2024年春晚上,表演了一个魔术《守岁共此时》,博主也跟着做了一遍,确实都成功了。
对于此魔术的好奇心,博主从代码逻辑的角度思考了下,肯定是可以实现的,毕竟代码只是一个工具,只要实际逻辑合理基本没问题。

流程描述

四张扑克牌

准备任意组合的4张扑克牌
假设博主四张的扑克牌为【黑桃3】、【黑桃6】、【方块7】、【黑桃10】

对折撕开

扑克牌面向下,然后随机打乱(每个人的打乱方式不一样,所以顺序都不一样)
在这里插入图片描述
四张牌向上对折一次,再向下对折一次
再对折撕开,变成8块
假设随机后,扑克牌面向下,从下到上的顺序分别是【黑桃6】、【黑桃3】、【方块7】、【黑桃10】
撕开后顺序=[黑桃6-右、黑桃3-右、方块7-右、黑桃10-右、黑桃6-左、黑桃3-左、方块7-左、黑桃10-左]
在这里插入图片描述

姓名组合

姓名字数,博主的是三个字,所以扑克牌从上面依次放三张牌到底部
完成后的顺序=【黑桃3-左、方块7-左、黑桃10-左、黑桃6-右、黑桃3-右、方块7-右、黑桃10-右、黑桃6-左】
在这里插入图片描述

任意牌中间

拿起最上面三张,插入到任意牌的中间,1、2、3、4、5,1到5之间插入,假设这里插入到第三张牌的后面
完成后的顺序=【黑桃3-左、方块7-左、黑桃10-左、方块7-右、黑桃10-右、黑桃6-左、黑桃6-右、黑桃3-右】
在这里插入图片描述

藏一张牌

拿起最上面一张牌,就是黑桃3-右,放到一遍
完成后的顺序=【黑桃3-左、方块7-左、黑桃10-左、方块7-右、黑桃10-右、黑桃6-左、黑桃6-右】
在这里插入图片描述

区域牌

1)南方人:拿起一张牌
2)北方人:拿起两张牌
3)不知道是南方还是北方人:拿起三张牌
把拿起的牌插入到剩下牌的中间,1到6之间插入
博主是南方人,拿起一张牌,假设插入到的是第一张牌后面(此时你会发现,目标牌就在第一的位置)
完成后的顺序=【黑桃3-左、黑桃6-右、方块7-左、黑桃10-左、方块7-右、黑桃10-右、黑桃6-左】
在这里插入图片描述

性别牌

1)男生:拿起一张
2)女生:拿起两张
拿起的牌,撒到空中去,手上的牌就变少了
博主是男生,去掉黑桃6-左
完成后的顺序=【黑桃3-左、黑桃6-右、方块7-左、黑桃10-左、方块7-右、黑桃10-右】
在这里插入图片描述

奇迹牌

见证奇迹的时刻,对于这七个字,每念到一个字就把最上面的一张牌放到底部,以此类推。
此时男生手上会有6张牌,女生手上会有5张牌
完成后的顺序=【黑桃10-右、黑桃3-左、黑桃6-右、方块7-左、黑桃10-左、方块7-右】

在这里插入图片描述

好运牌

最后一个环节,好运留下来,烦恼丢出去
第一张放到下面,然后最上面的一张牌丢出去
1)第一次
完成后的顺序=【方块7-右、黑桃10-右、黑桃3-左、黑桃6-右、方块7-左】
2)第二次
完成后的顺序=【方块7-左、方块7-右、黑桃10-右、黑桃3-左】
3)第三次
完成后的顺序=【黑桃3-左、方块7-左、方块7-右】
4)第四次
完成后的顺序=【方块7-右、黑桃3-左】
5)第五次
完成后的顺序=【黑桃3-左

此时已经剩下一张牌,把藏起来的牌拿出来,就是黑桃3-右,刚好就是和剩下牌黑桃3-左,组合在一起

约瑟夫原理

上面扑克牌魔术没想到用到了这个原理,不是每个人都能快速理解各种各样的原理,所以这也早就了魔术神奇而又神秘的一面。

约瑟夫原理(也称为约瑟夫问题或约瑟夫环)是一个著名的理论问题,其起源可以追溯到公元1世纪的一个历史事件。据传,著名犹太历史学家Josephus和他的同伴被敌人包围,在面临绝境时,他们决定通过自杀的方式结束生命。为了执行这个决定,他们围成一个圈,然后按照一定的规则来选择自杀的人,直到只剩下最后一个人。Josephus作为一个不愿意自杀的人,快速地计算出了一个位置,使得他成为了最后一个存活的人,从而有机会逃脱。

这个问题可以用数学模型进行抽象和解释。假设有n个人围成一圈,从某个人开始,按顺时针方向逐一编号。接着从编号为1的人开始报数,每数到m就将该人从圈中排除,然后从下一个人重新开始报数,直到圈中只剩下一个人。最后剩下的这个人的位置就是从1开始数的序号。这个问题可以用数学公式或伪代码进行求解。

约瑟夫原理在理论计算机科学、组合数学、离散数学等领域有着广泛的应用。它不仅是一个有趣的问题,还可以用于解决各种实际问题,如任务调度、资源管理、网络通信等。通过研究和应用约瑟夫原理,可以更好地理解和解决一些复杂的计算和决策问题。

相关文章

【C#】使用代码实现刘谦龙年春晚扑克牌魔术(守岁共此时),代码实现篇
【C#】使用代码实现刘谦龙年春晚扑克牌魔术(守岁共此时),流程描述篇
【C#】约瑟夫原理举例2个代码实现
【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479033.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营29期|day55 任务以及具体安排

第九章 动态规划part12 309.最佳买卖股票时机含冷冻期 class Solution {public int maxProfit(int[] prices) {//0代表持股票,1代表保持卖出状态,2代表卖出股票。3代表冷冻int[][] dp new int[prices.length][4];dp[0][0] -prices[0];for(int i 1 ; …

【Java】图解 JVM 垃圾回收(二):垃圾收集器、Full GC

图解 JVM 垃圾回收(二) 1.垃圾收集器1.1 内存分配与回收策略1.2 Serial 收集器1.3 Parallel Scavenge 收集器1.4 ParNew 收集器1.5 CMS 收集器1.6 G1 收集器 2.Full GC 的触发条件 1.垃圾收集器 Java 虚拟机提供了多种垃圾回收器,每种回收器…

运维:自主编码实现运维自动化的转型之旅

引言 随着业务系统和底层中间件服务的复杂度不断增加,传统手工运维方式面临着诸多挑战和限制。人工编写运维脚本显得非常低效,同时手动执行运维操作存在着巨大风险。在此情况下,推动运维自动化成为运维人员必须落地实施的工作。运维同学如果…

机器学习基础(一)理解机器学习的本质

导读:在本文中,将深入探索机器学习的根本原理,包括基本概念、分类及如何通过构建预测模型来应用这些理论。 目录 机器学习 机器学习概念 相关概念 机器学习根本:模型 数据的语言:特征与标签 训练与测试&#xf…

2023年全球前端大技术大会(GMTC北京站2023):核心内容与学习收获(附大会核心PPT下载)

此次峰会是一次内容丰富、有深度和广度的技术盛会。参会者不仅可以了解前端技术的最新发展和未来趋势,还可以与业界专家交流心得,提升自己的技能和能力。同时,此次大会也促进了全球前端社区的交流和合作,推动了前端技术的创新和发…

字节跳动推出颠覆性文生视频模型,可自由控制动作!

在Sora引爆文生视频赛道之前,国内的字节跳动也推出了一款创新性视频模型——Boximator。 与Gen-2、Pink1.0等模型不同的是,Boximator可以通过文本精准控制生成视频中人物或物体的动作。 例如,下雨天,大风把一位女生的雨伞吹走了…

毕业设计:基于知识图谱的《红楼梦》人物关系可视化

文章目录 项目介绍部署步骤项目运行 项目介绍 github地址:https://github.com/chizhu/KGQA_HLM?tabreadme-ov-file 基于知识图谱的《红楼梦》人物关系可视化:应该是重庆邮电大学林智敏同学的毕业设计,在学习知识图谱的过程中参考使用。 文…

Cadence Allegro PCB设计88问解析(三十三) 之 Allegro 中 Quick Reports的使用

一个学习信号完整性仿真的layout工程师 在进行PCB设计时,经常会查看一下整个PCB的基本信息,比如器件个数,网络数量、pin的数量。尤其在投板的时候还要查看下Dangling Lines、Dangling Vias等。还有其他的关于shape、via、走线、钻孔等等相关信…

LabVIEW风力机智能叶片控制系统

​LabVIEW风力机智能叶片控制系统 介绍了一种风力机智能叶片控制系统的开发。通过利用LabVIEW软件与CDS技术,该系统能够实时监测并调整风力机叶片的角度,优化风能转换效率。此项技术不仅提高了风力发电的稳定性和效率,而且为风力机的智能化管…

解决问题的七个步骤,你知道吗?

在日常生活和工作中,我们时常会面临各种问题和挑战。有效地解决问题不仅能帮助我们顺利前行,还能提升我们的个人能力和价值。如何更有效地解决问题? 案例背景: 一家电商公司的项目经理,负责一个即将上线的促销活动。…

SICTF Round#3 Web方向 题解WP

100%_upload 题目描述:小茂夫说:一直上传恶意文件尊嘟要生气了,世事莫固守,转变思路求突破 开题,注意有个文件包含 题目把后缀过滤死了,无法上传php后缀文件。文件内容些许过滤,短…

每日学习总结20240219

每日总结 20240219 1.文件类型.csv CSV文件是一种以逗号分隔值(Comma-Separated Values)为标记的文本文件,它可以用来存储表格数据。每一行表示一条记录,而每一条记录中的字段则使用逗号或其他特定的分隔符进行分隔。 常用场景…