首页 > 编程语言 >C# 实现刘谦春晚魔术

C# 实现刘谦春晚魔术

时间:2024-02-16 15:33:51浏览次数:29  
标签:Console string C# 刘谦 list int static WriteLine 春晚

    internal class Program
    {
        static List<string> list=new List<string>() { "A","B","C","D","A","B","C","D" };
        static string hiddenEle1 = string.Empty;//第一次藏起来的牌
        static void Main(string[] args)
        {
            Console.WriteLine($"初始牌组:{string.Join(',',list)}");
            //第一趴 名字有几个字
            Console.WriteLine("请输入你的名字有几个字");
            var nameCount = Convert.ToInt32(Console.ReadLine());
            Fun1(nameCount);
            Console.WriteLine($"变化之后:{string.Join(',', list)}");
            //第二趴 拿掉三张牌
            Fun2(3);
            Console.WriteLine($"插入三张牌后:{string.Join(',', list)}");
            //第三趴 把最上面一张牌藏起来
            Fun3();
            Console.WriteLine($"藏起来第一张牌后:{string.Join(',', list)}");
            //第四趴南方人北方人
            Console.WriteLine("北方-1 南方-2 不南不北-3,请输入对应数字");
            var directCount=Convert.ToInt32(Console.ReadLine());
            Fun2(directCount);
            Console.WriteLine($"南北方人后:{string.Join(',', list)}");
            //第五趴 男女生
            Console.WriteLine("男-1 女-2,请输入对应数字");
            var sexCount = Convert.ToInt32(Console.ReadLine());
            Fun4(sexCount);
            Console.WriteLine($"男女生后:{string.Join(',', list)}");
            //第六趴 见证奇迹的时刻
            Fun5();
            Console.WriteLine($"见证奇迹后:{string.Join(',', list)}");
            //第七趴 好运留下来烦恼丢出去
            Console.WriteLine("开始好运留下了 烦恼丢出去");
            var hiddenEle2 = Fun6(sexCount);

            Console.WriteLine($"牌1:{hiddenEle1} 牌2:{hiddenEle2}");
        }
        private static void Fun1(int nameCount)
        {
            if (nameCount >= list.Count)
            {
                // 如果 nameCount 大于或等于列表长度,则不需要进行操作
                return;
            }

            for (int i = 0; i < nameCount; i++)
            {
                string element = list[0];  // 获取第0个元素
                list.RemoveAt(0);          // 移除第0个元素
                list.Add(element);         // 将第0个元素添加到最后
            }
        }
        private static void Fun2(int forCount)
        {
            //被删除掉的三张牌
            var removeElement = new List<string>();
            for (int i = 0; i < forCount; i++)
            {
                removeElement.Add(list[0]);
                list.RemoveAt(0);
            }

            //把拿到的三张牌插到中间
            var random = new Random();
            int insertIndex = random.Next(1, list.Count - 1); // 生成一个介于第一个和倒数第二个位置之间的随机插入位置

            for (int i = removeElement.Count - 1; i >= 0; i--)
            {
                list.Insert(insertIndex, removeElement[i]);
            }
        }
        private static void Fun3()
        {
            //把第一张牌藏起来
            hiddenEle1 = list[0];
            list.RemoveAt(0);
        }

        private static void Fun4(int count)
        {
            for (int i = 0; i < count; i++)
            {
                list.RemoveAt(0);
            }
        }

        private static void Fun5()
        {
            for (int i = 0; i < 7; i++)
            {
                string element = list[0];
                list.RemoveAt(0);
                list.Add(element);
            }
        }

        private static string Fun6(int sexCount)
        {
            int forCount = 0;
            if (sexCount == 1) forCount = 5;//男生要5次
            else forCount = 4;
            for (int i = 0; i < forCount; i++)
            {
                // 把第一张牌放到数组最后面 (好运留下来)
                string element = list[0];
                list.RemoveAt(0);
                list.Add(element);

                //烦恼丢出去
                list.RemoveAt(0);
            }
            return list[0];
        }
    }

标签:Console,string,C#,刘谦,list,int,static,WriteLine,春晚
From: https://www.cnblogs.com/cyfj/p/18017196

相关文章

  • VP-CF1879 总结
    VP-CF1879总结Url:https://codeforces.com/contest/1879Score:A+B+C+DD做出来了,使用了一个复杂的方法。拆位肯定没错,但是有异或前缀和的方法,可以大大简化码量。E做出来了,贪心搞出来性质,即按深度染色。但是没读题,没看到\(k\)要最小。那就分三类讨论:k=1,k=2,k=3k=1或k=3......
  • SciTech-Printing-精密成像+印刷-静电成像(激光打印/成像)的原理介绍
    静电成像的原理介绍(2014-01-0917:32:11)标签:静电成像静电成像原理文化 分类:印艺技术静电成像是利用光导材料的“光敏变电阻”特性:在黑暗中为绝缘体、在光照条件时电阻值下降(阻值可变化1000倍以上)的特性来成像。常用有OPC(有机化合物)光导材料/A-Si陶瓷/Se(硒)半导体......
  • ThreadLocal使用
     Thread:Thread类中有两个变量threadLocals和inheritableThreadLocals,两者都是ThreadLocal.ThreadLocalMap类型,默认情况下为null,对应源码为1ThreadLocal.ThreadLocalMapthreadLocals=null;23ThreadLocal.ThreadLocalMapinheritableThreadLocals=null;ritabl......
  • ThreadPoolTaskExecutor以及通过注解实现异步任务
    ThreadPoolTaskExecutor是Spring框架的线程池,实现方式如下:1//声明一个name为asyncTaskExecutor的线程池bean到容器中2@Bean("asyncTaskExecutor")3publicExecutorgetAsyncExecutor(){4ThreadPoolTaskExecutorthreadPoolExecutor=newThreadPoolTaskExecuto......
  • String的不可变,StringBuilder.append方法和String.concat
    String.concat对String字符串进行拼接的方法,我们通常用的“+”拼接字符串,效率相比concat更低,其内部实现方式类似于newStringBuilder().append,每次拼接都会创建一个StringBuilder对象。concat方法的核心逻辑:创建长度为str.length+str2.length的char数组,通过Arrays.copyOf创建,该......
  • 异步调用中链路信息TRACE丢失问题
    1、问题描述链路框架底层为jaegertracing,行内的北斗链路是对这个jaegertracing进行了一层包装框架中使用自定义注解@RvcAsync来执行异步任务,RvcAsync注解核心逻辑为使用CompletableFuture.runAsync()方法执行多线程任务,传入的第二个参数asyncTaskExecutor为自定义线程池。1Co......
  • 通过ApplicationContext.getBean()获取bean实例
    spring获取bean容器管理的实例常用方式有两种。    1.  使用注解注入,@Autowired和@Resource@Autowired推荐使用构造函数的方式注入,可被@RequiredArgsConstructor代替@Resource在接口的实现类有多个的时候使用,指定name=实现类名来注入指定的实现类,但@Autowired+@Qualififier......
  • 通过注解实现本地缓存caffeine的学习
    注解源码如下1@Target(ElementType.METHOD)2@Retention(RetensionPolicy.RUNTIME)3@Documented4public@interfaceRvcCache{5Strngkey();6Stringid()defaultStringUtils.EMPTY;7}1@Component2@Aspect3@RequiredArgsConstructor4......
  • jackson序列化问题
    在对对象进行jackson序列化的时候,有时候会出现序列化后的变量名称大小写错误的情况。测试的实体类TestEntity2如下:public class TestEntity2 {    private String aBcd;    private String qWER;    private String qWERty;    private String qWERty......
  • CF1931G. One-Dimensional Puzzle
    CF1931G思路观察可得,要拼出合法序列只有12交替同时34插入12和21之间;当1和2的相差超过1时,多出来拼图的无法拼接成合法序列,所以答案是0;当1和2都为0时,只有3或者只有4的情况答案是1,其他情况答案是0;当1比2多一个时:只能是前后都是1,比如12121,观察得,3只能插在1的后面,4只能插在1......