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

news2025/1/18 9:50:34

欢迎来到《小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.coloradmin.cn/o/1458461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】初步认识结构体

1.结构体诞生的由来 C语言已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学生,描述⼀本书,这时单一的内置类型是不行的。描述⼀个学生需要名…

从数据库中读取文件导出为Excel

使用的库(org.apache.poi) 在poi包中有Apache提供的各种分类文件,如下 结构功能HSSF读写Microsoft Excel XLS文件XSSF读写Microsoft Excel OOXML XLSX文件HWPF读写Microsoft Word DOC文件HSLF读写Microsoft PowerPoint文件 下面以XSSF为例&…

优思学院|精益思想如何识别价值流?【案例分析】

精益思想是一种为了提高效率、减少浪费的管理哲学,精益思想强调在整个生产过程中识别并消除一切不创造价值的步骤。 价值流分析是精益思想中的一个核心概念,通过深入分析特定产品从原材料到最终交付给顾客的全过程,来识别并削减浪费&#xf…

回避型人格适合什么职业?如何改善回避型人格?

回避型人格最突出的特点,就是对外界的排斥极度敏感,他们非常害怕别人的不认可,也特别害惧失败,因此不敢与人交往,同时也害怕新事物。因为受到这一性格的影响,他们极度缺乏社交能力,也一直在否定自身能力。 …

算法沉淀——递归(leetcode真题剖析)

算法沉淀——递归 01.汉诺塔问题02.合并两个有序链表03.反转链表04.两两交换链表中的节点05.Pow(x, n) 递归是一种通过调用自身的方式来解决问题的算法。在递归算法中,问题被分解为更小的相似子问题,然后通过对这些子问题的解进行组合来解决原始问题。递…

Stable Diffusion WebUI 界面介绍

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要对 Stable Diffusion WebUI 的界面进行简单的介绍,让你对该 WebUI 有个大致的了解,为后面的深入学习打下一个基础。主要内容包…

2.19学习总结

1.中位数 2.统计和 3.铺设道路 4.岛屿个数 5.冶炼金属 6.飞机降落 7.接龙数列 中位数https://www.luogu.com.cn/problem/P1168 题目描述 给定一个长度为 �N 的非负整数序列 �A,对于前奇数项求中位数。 输入格式 第一行一个正整数 &#xfff…

C++学习Day07之虚函数和纯虚函数

目录 前言一、程序及输出1.1 虚函数1.2 纯虚函数1.2.1 定义、示例1.2.2 引入原因1.2.3 抽象类 二、分析与总结 前言 在 C 中,虚函数和纯虚函数是实现多态性的重要概念。虚函数是在基类中声明为虚函数的函数,在派生类中可以被重写,实现动态联…

java原生态提取图片内的文本信息操作Demo

java原生态提取图片内的文本信息操作Demo!现在市面上很多客户都有从图片中提取文本信息的业务需求,那么,java的操作案例代码就来了,但是有一个坏消息告诉大家,市面上开源的 插件包,目前我测试的提取效果,是…

前端首屏、白屏与卡顿性能优化?你想要的都在这里!

您好, 如果喜欢我的文章或者想上岸大厂,可以关注公众号「量子前端」,将不定期关注推送前端好文、分享就业资料秘籍,也希望有机会一对一帮助你实现梦想 首屏秒开 首屏秒开主要可以分为 4 个方法——懒加载,缓存&#…

钠离子电池技术

一、什么是钠离子电池 1、发展背景 在现有电池技术中,锂离子电池(LIB)具有无与伦比的能量密度和多功能性。自其首次商业化以来,便携式设备一直在推动其高速增长。近年,电动汽车和固定式储能应用开始兴起。由于锂离子…

ChatGPT-01 用ChatGPT指令,自学任何领域的系统知识

1. 指令位置 Github仓库:Mr Ranedeer AI Tutor 但是需要开通chatgtp plus版本,并且打开代码解释器 2 使用 学习内容 开始学习 GPT甚至可以给你思考题,给出的答案还能进行评价 配置 通过配置表修改 深度 学习风格 沟通风格 语气风格 …

第一件事 什么是 Java 虚拟机 (JVM)

1、什么是虚拟机? - 这个其实是一个挺逗的事情,说白了,就是基于某个硬件架构,在这个硬件部署了一个操作系统,再构架一层虚拟的操作系统,这个新构架的操作系统就是虚拟机。 不知道的兄弟姐妹们,…

格式化硬盘的方法有哪些?

格式化硬盘意味着彻底删除磁盘数据、设置文件系统并准备硬盘上选定的分区,以供操作系统使用。格式化方法分为两种,高级和低级,其中高级格式化涉及将文件系统写入分区,以便通过软件从分区中读取和写入数据来组织和理解数据&#xf…

通俗易懂地理解稀疏性

今天我想与大家探讨的是一个数学和工程学中的重要概念——稀疏性。这个概念可能听起来很抽象,但它实际上贯穿于我们生活中的许多方面。那么,稀疏性到底是什么呢?简单来说,在数学和信号处理领域,一个信号被称为稀疏&…

网络原理HTTP/HTTPS(2)

文章目录 HTTP响应状态码200 OK3xx 表示重定向4xx5xx状态码小结 HTTPSHTTPS的加密对称加密非对称加密 HTTP响应状态码 状态码表⽰访问⼀个⻚⾯的结果.(是访问成功,还是失败,还是其他的⼀些情况…).以下为常见的状态码. 200 OK 这是⼀个最常⻅的状态码,表⽰访问成功 2xx都表示…

redis 异步队列

//produceMessage.ts 模拟生产者 import Redis from ioredis; const redis new Redis(); // 生产者:将消息推送到队列 async function produceMessage(queueName:string, message:string) {try {await redis.rpush(queueName, message);console.log(Produced messa…

D258——可单电源或双电源 工作,应用范围包括变频放大器、DC增益部件和所有常规运算放大电路。

D258是由两个独立的高增益运算放大器组成。可以是单电源工作,也可以是双电源工作,电源的电流消耗与电源电压大小无关。应用范围包括变频放大器、DC增益部件和所有常规运算放大电路。 主要特点: ● 可单电源或双电源 工作 ● 在一个封装内的两个经内部补…

【LeetCode每日一题】单调栈 581. 最短无序连续子数组

581. 最短无序连续子数组 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入&am…

JS逆向进阶篇【去哪儿旅行登录】【中篇-滑动轨迹破解补浏览器环境破参数】

目录: 每篇前言:0、整体分析1、逆向轨迹snapshot(1)分析:(2)Python轨迹生成:(3)AES加密:(4)轨迹加密:&#xf…