首页 > 其他分享 >刘谦魔术

刘谦魔术

时间:2024-02-25 19:23:43浏览次数:17  
标签:tmp arr cout int 刘谦 begin 魔术 vector

#include <iostream>
#include <vector>
#include <random>
using namespace std;
random_device rd;
mt19937_64 gen(rd());

void print(vector<int>& arr)
{
    for (auto& x : arr)
        cout << x << " ";
    cout << "\n";
}

void cyclic_shift(vector<int>& arr, int n)
{
    n = n % (int)arr.size();
    vector<int> tmp(arr.begin(), arr.begin() + n);
    arr.erase(arr.begin(), arr.begin() + n);
    arr.insert(arr.end(), tmp.begin(), tmp.end());
}

void insert_in(vector<int>& arr, int n = 3)
{
    vector<int> tmp(arr.begin(), arr.begin() + n);
    arr.erase(arr.begin(), arr.begin() + n);
    int pos = uniform_int_distribution<>(1, arr.size() - 1)(gen);
    arr.insert(arr.begin() + pos, tmp.begin(), tmp.end());
}

void lucky(vector<int>& arr, int n = 4)
{
    while (n--)
    {
        arr.push_back(*arr.begin());
        arr.erase(arr.begin());
        arr.erase(arr.begin());
    }
}

int main()
{
    int a, b, c, d;
    vector<int> arr;
    cin >> a >> b >> c >> d;
    int N = 10;
    cout << "\n\n\n\n";
    while (N--)
    {
        for (int i = 0; i < 2; i++)
        {
            arr.push_back(a);
            arr.push_back(b);
            arr.push_back(c);
            arr.push_back(d);
        }
        print(arr);
        int name_len = uniform_int_distribution<>(1, 100)(gen);
        cyclic_shift(arr, name_len);       // 名字,循环移位
        cout << "名字长度 = " << name_len << ",循环移位\n";
        print(arr);
        insert_in(arr);             // 顶部三张插入
        cout << "顶部三张插入中间\n";
        print(arr);

        int result_1 = arr[0];
        arr.erase(arr.begin());     // 第一张藏起来
        cout << "第一张取出,藏起来\n";
        print(arr);

        int n1 = uniform_int_distribution<>(1, 3)(gen);    // 南方北方,插入
        insert_in(arr, n1);
        cout << "南方北方,插入前"<< n1 << "\n";
        print(arr);

        int n2 = uniform_int_distribution<>(1, 2)(gen);;    // 男生女生 扔掉
        arr.erase(arr.begin(), arr.begin() + n2);
        if (n2 == 1) cout << "男生扔掉顶部1张\n";
        else cout << "女生扔掉顶部2张\n";
        print(arr);

        cyclic_shift(arr, 7);       // 见证奇迹的时刻,七个字循环移位
        cout << "见证奇迹的时刻,七个字循环移位\n";
        print(arr);

        lucky(arr, 4);     // 好运留下,烦恼丢出 做4次
        cout << "好运留下,烦恼丢出 做4次\n";
        print(arr);

        if (n2 == 1)
        {
            cout << "男生好运留下,烦恼丢出,再做1次,男生结果\n";
            lucky(arr, 1);
            cout << "最后剩下: "; print(arr);
            cout << "藏起来:  " << result_1 << endl;
        }
        else
        {
            cout << "女生结果:\n";
            cout << "最后剩下: "; print(arr);
            cout << "藏起来:  " << result_1 << endl;
        }
        arr.clear();
        cout << "\n\n\n\n\n";
    }
}

标签:tmp,arr,cout,int,刘谦,begin,魔术,vector
From: https://www.cnblogs.com/fswly/p/18032762

相关文章

  • C# 实现刘谦春晚魔术
    试试看internalclassProgram{ staticList<string>list=newList<string>(){"A","B","C","D","A","B","C","D"}; staticstringhiddenEle1=string.Empty;//第一次藏起来的牌......
  • Delphi 实现刘谦春晚魔术
    试试看programProject1;{$APPTYPECONSOLE}{$R*.res}usesSystem.SysUtils,System.Classes;varlist,removeElement:TStringList;i,NameCount,insertIndex,directCount,sexCount:Integer;tmp,element,hiddenEle1,hiddenEle2:String;procedur......
  • Delphi 实现刘谦春晚魔术
    看了博友的C#实现刘谦春晚魔术很好,改成了delphi版的。 1programProject1;23{$APPTYPECONSOLE}4{$R*.res}56uses7System.SysUtils,8System.Classes;910var11list,removeElement:TStringList;12i,NameCount,insertI......
  • C# 实现刘谦春晚魔术
    internalclassProgram{staticList<string>list=newList<string>(){"A","B","C","D","A","B","C","D"};staticstringhiddenEle1=string......
  • 2024春晚刘谦魔术揭秘
    2024春晚刘谦魔术揭秘!魔术步骤任意4张扑克牌,叠在一起对半撕开,再叠在一起名字有几个字,就把几张扑克,依次放到最下面再将最上面3张,插到剩下扑克牌的中间任意位置拿出最上面一张扑克牌藏起来任意拿出一张、两张或三张扑克牌,再插到剩下扑克牌的中间任意位置如果是男生拿一张,如......
  • 用代码解决刘谦春晚魔术
    相信很多人都看过文字解释了,来一段代码看看importrandomdefstep_move_one(length,array):whilelength>0:length-=1array=array[1:]+array[:1]returnarraydefstep_firstN_to_middle(firstN,array):iffirstN<0orfirstN>......
  • 关于刘谦2024春晚的数学游戏原理
    自己想出来的!首先牌的顺序肯定是形如\(ABCDABCD\)。将牌的顺序考虑成一个字符环。按照名字长度对该字符环进行左移,本质上没有打乱这个环的顺序。因此在置换后,牌的顺序还是会形如\(ABCDABCD\)。将前三张随机放到牌堆中间,我们发现此时牌堆顶和牌堆底的两张牌是一样的。因此......
  • python 魔术方法
    __init__、__new__、__del__构造方法__new__触发时机:实例化对象时自动触发(在__init__之前触发)参数:至少一个cls接收当前类,其他参数根据初始化方法参数决定返回值:必须返回一个对象实例,没有返回值,则实例化对象的结果为None作用:实例化对象注意:实例化对象是Object类底层实现,其......
  • 主剧情之一-“魔术师的纸飞机”
    (Sherry和Firepaw在楼道里行走着.)Firepaw:...其实我很好奇啊主人,你到底推理完之后在想些什么呢?Sherry:你不用关心这个.[系统提示:与蜕变状态的Firepaw交流有助于提高觉醒后的熟悉度,避免怀疑产生.]Sherry:...我看你这个系统就是Firepaw的助攻吧喂!Firepaw:......
  • 数据魔术师:如何在ClkLog中恢复丢失数据并实现数据更新
    在数字化的世界里,数据就是企业的血液,是推动业务发展的关键动力。想象一下,你正在运行你的业务,依赖==ClkLog==为你提供的数据,突然,由于网络波动或其他原因,定时脚本未能执行,页面上的数据缺失了。或者你刚刚优化了你的算法,但你需要重新计算以前的数据以便与新的算法保持一致。这种情况......