首页 > 其他分享 >用代码解决刘谦春晚魔术

用代码解决刘谦春晚魔术

时间:2024-02-10 17:22:35浏览次数:27  
标签:firstN remained random 刘谦 魔术 step 春晚 print array

相信很多人都看过文字解释了,来一段代码看看

import random

def step_move_one(length, array):
    while length > 0:
        length -= 1
        array = array[1:] + array[:1]
    return array

def step_firstN_to_middle(firstN, array):
    if firstN < 0 or firstN > len(array):
        return "Error: firstN is out of array"
    firstN_items = array[:firstN] # delete the former N
    remained_array = array[firstN:]
    if len(remained_array) > 0:
        random_position = random.randint(1, len(remained_array) - 1)
    else:
        random_position = 0
    array = remained_array[:random_position] + firstN_items + remained_array[random_position:]
    return array

def trying():
    array = ["A", "B", "C", "D"]
    random.shuffle(array)
    print(f"1.打乱:{array}")
    array += array
    print(f"2.复制列表拼在一起:{array}")
    array = step_move_one(random.randint(2, 99), array)
    print(f"3.根据名字依次移动N项到末尾:{array}")
    array = step_firstN_to_middle(3, array)
    print(f"4.取前三张插入到中间任意位置:{array}")
    star = array[0]
    array = array[1:]
    print(f"5.取值:{star},剩余的列表:{array}")
    array = step_firstN_to_middle(random.randint(1, 3), array)
    print(f"6.取前N张卡片插入到中间随机位置:{array}")
    array = array[random.randint(1, 2):] # male:1 and female:2
    print(f"7.丢掉前N张卡片后:{array}")
    array = step_move_one(7, array)
    print(f"8.依次移动首张牌到末尾,重复7次:{array}")
    while len(array) > 1:
        array = array[1:] + array[:1]; print(f"9.好运留下来:{array}")
        array.pop(0); print(f"9.烦恼丢出去:{array}")
    print(f"10.结束辣: 之前存的牌:{star}, 现在的牌:{array[0]}")

trying()

image

标签:firstN,remained,random,刘谦,魔术,step,春晚,print,array
From: https://www.cnblogs.com/wanyy-home/p/18012935

相关文章

  • 关于刘谦2024春晚的数学游戏原理
    自己想出来的!首先牌的顺序肯定是形如\(ABCDABCD\)。将牌的顺序考虑成一个字符环。按照名字长度对该字符环进行左移,本质上没有打乱这个环的顺序。因此在置换后,牌的顺序还是会形如\(ABCDABCD\)。将前三张随机放到牌堆中间,我们发现此时牌堆顶和牌堆底的两张牌是一样的。因此......
  • 亿级流量高并发春晚互动前端技术揭秘
    前言2022年1月,京东成为央视总台2022年春节联欢晚会独家互动合作伙伴,双方在红包互动、电商等方面展开全方位深度合作。在除夕当天产生691亿次互动,送出15亿元红包好物。如何在这种大规模、高并发的场景下,确保系统的稳定性和性能,为用户提供稳定流畅的互动体验,成为了我们亟待解决的......
  • python 魔术方法
    __init__、__new__、__del__构造方法__new__触发时机:实例化对象时自动触发(在__init__之前触发)参数:至少一个cls接收当前类,其他参数根据初始化方法参数决定返回值:必须返回一个对象实例,没有返回值,则实例化对象的结果为None作用:实例化对象注意:实例化对象是Object类底层实现,其......
  • 主剧情之一-“魔术师的纸飞机”
    (Sherry和Firepaw在楼道里行走着.)Firepaw:...其实我很好奇啊主人,你到底推理完之后在想些什么呢?Sherry:你不用关心这个.[系统提示:与蜕变状态的Firepaw交流有助于提高觉醒后的熟悉度,避免怀疑产生.]Sherry:...我看你这个系统就是Firepaw的助攻吧喂!Firepaw:......
  • 数据魔术师:如何在ClkLog中恢复丢失数据并实现数据更新
    在数字化的世界里,数据就是企业的血液,是推动业务发展的关键动力。想象一下,你正在运行你的业务,依赖==ClkLog==为你提供的数据,突然,由于网络波动或其他原因,定时脚本未能执行,页面上的数据缺失了。或者你刚刚优化了你的算法,但你需要重新计算以前的数据以便与新的算法保持一致。这种情况......
  • 新火种AI|“赌城”上演“科技春晚”,AI硬件将在2024年大爆发
    作者:一号如果说2023年是生成式AI元年,那么2024年将会是AI硬件的元年。众所周知,拉斯维加斯是一座纸醉金迷的“赌城”,去年落成的巨型网红球也赚足了眼球。但现在,一场“科技春晚”正在这座城市上演。当地时间2024年1月9日至12日,2024年国际消费电子展(CES2024)在美国拉斯维加斯举办。作为......
  • Python常用的魔术方法
    什么是魔术方法?在Python中,所有以双下划线__包起来的方法,统称为MagicMethod(魔术方法),它是一种的特殊方法,普通方法需要调用,而魔术方法不需要调用就可以自动执行。魔术方法在类或对象的某些事件出发后会自动执行,让类具有神奇的“魔力”。如果希望根据自己的程序定制自己特殊功能的类,那......
  • php 16个魔术方法
    16个方法的简单介绍__construct(),类的构造函数__destruct(),类的析构函数__call(),在对象中调用一个不可访问方法时调用__callStatic(),用静态方式中调用一个不可访问方法时调用__get(),获得一个类的成员变量时调用__set(),设置一个类的成员变量时调用__isset(),当对不可访......
  • php魔术方法
    PHP中把以两个下划线__开头的方法称为魔术方法(Magicmethods),这些方法在PHP中充当了举足轻重的作用。魔术方法包括:__construct(),类的构造函数__destruct(),类的析构函数__call(),在对象中调用一个不可访问方法时调用__callStatic(),用静态方式中调用一个不可访问方法时调用__get(),......
  • 组合,反射,魔术方法
    组合,反射,魔术方法组合反射魔术方法组合什么是组合? 组合就是,一个对象拥有一个属性,该属性的值是另外一个对象."""什么场景下使用继承?什么场景下使用组合?"""继承一般情况用在:什么是什么的情况is组合一般用在:什么有什么的情况hasclassFoo:def__init__(sel......