程序员懂算法玩“淮安掼蛋”是否更有优势?



清明节放假在家休息,突然想写点什么。一直困扰我的迷,今天有了小小的触动。我感觉很开心!

迷是这样的。一直以来,我很早起床,很晚睡觉,但进步并不是很大。有事甚至对自己产生怀疑,以为自己大脑退化,有点老年痴呆了。

昨天晚上,和 keiven 发现h5上赶集的缩略图变成默认的了,点进去发现是有图片的。今天处理这个问题的时候就很纠结。我的思路是这样的。我是先找到这个默认缩略图的 url,然后在保存赶集的二手车时,确认一下抓取的缩略图是不是那个 URL 呢?还是直接不管缩略图的事儿,只要详情页有图片,就把第一张作为缩略图呢?其实这样已经可以解决问题了。但我又想到,这样会不会引起别的地方的逻辑错误呢?如果我们没有对图片做大小一致处理,在我们的网站上显示的大小不一怎么办呢?另外,我做到这个程度就可以了嘛?万一 keiven 问我,赶集的处理了,其他网站的二手车会不会出现这个问题呢?想到这里,我又需要知道怎么有统一的方案。好头大!

其实统一的解决方案已经被我想到了,只是我自己都没意识到!就是不管是哪个网站爬取的二手车,只要有图片,把第一张作为它的缩略图就行了啊。
就是因为这种想法,当时觉得好难啊,压力好大啊!

晚上玩瘾上来了。好久没 淮安掼蛋 了。碰巧老马的女朋友来了,凑够四个人,可以玩一玩。就开始玩了。但一开始玩的不爽,因为心里老想着这个事儿。keivin让我做完的时候告诉他,我还没告诉他。但我没有找到解决方案,我怎么好意思告诉他做完了呢?做事最忌讳三心二意,这牌也玩不好了。

过了一会儿,觉得不踏实,还是跟keivin 说我做完了吧?(我这是什么心理?搞不清楚,有懂的人请告诉我一下。)然后打开skype,在我们数据组里发了一条消息,“keivin, 赶集的缩略图已经处理了。”我都没敢说所有网站都处理了,也没敢说怎么解决的!心虚啊。果然不出所料,我晚上10点零4发的消息,22:14就收到 keivin 的信息,“你再检查一下,下午我又发现类似错误”。23:09,“@文涛 ,还有问题。”。傻眼了吧!我是在12:40发现这两条消息的。因为打完掼蛋,我还是不踏实,又去 skype 看了一下。果不其然,露馅儿了。赶紧解决吧!这时我发现,就按之前的想法,在保存之前,不管有没有爬取到缩略图,用爬取的多个图片的第一张作为缩略图,不就解决了嘛?快速!简单!而且适用所有网站!问题在十分钟之内解决!下午绞尽脑汁,花了3个小时没解决!

我真的是很感慨啊!这几天,曾国藩的“成大事不纠结”的思想一直在我脑海晃动,今晚猛地明白过来了。原来不纠结事情就变得这么容易!

这还是表面的原因,我需要趁这个机会,好好反思总结一下!

我习惯于对事情纠结的原因是什么?第一想到的就是完美主义。为什么我形成完美主义的思想?因为我从小养成了在乎长辈们看法的习惯,也许就是从来不夸奖人的父亲!我为了讨好父亲,努力学习,总是表现成一个好孩子。后来变成在学校里做好学生,现在变成总想在同事、在领导、在朋友面前,保持完美形象!起始我早就不完美了啊!但别人早就知道我不完美了,自己却无法接受,经常进入自己的幻想世界,好在那里让自己相信,我就是完美的。还是老妈说得对,赵老师又进入他自己的世界了。

事实是自己停滞不前,但不肯接受,不愿面对。直到时间让我意识到,再不改变,我的人生就完了。开始认为自己笨,那我通过时间来补不足啊,但长期的积累,并没有太大进步。因为我在这个过程中,焦虑,迷茫,心很难进入学习的领域,即使花再多的时间也是白费!于是又痛苦,又纠结。甚至想自暴自弃!

成为别人眼中的那个好人那么重要吗?得到的只不过是别人的一句夸奖,从这个角度讲,我的思维还真是小孩子。我已经是一个社会人了,社会人关注的不应该是这些!而是我想在这个社会中扮演什么角色?而不是我认识的那些占社会人比例可以忽略不计的几个人。

好多年过去了,我问才明白这些,这是多么痛的领悟啊!小伙伴们,当你觉得事事难做的时候,我可以很放心的告诉你,一定是自己想多了,开始纠结。一定要改,不能纠结!这种说法很说教,没有提供解决方案。是的!在我看来,真的没有解决方法,只能靠领悟、靠经历,至于这些东西让你意识到你需要成长的时候,你才会经过一段挣扎期,得到些东西!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
淮安是一种流行的扑克牌游戏,可以用C++语言编写。以下是一个简单的示例,仅供参考: ```c++ #include <iostream> #include <vector> #include <algorithm> #include <ctime> using namespace std; // 定义牌的种类和值 const vector<string> card_types {"♠", "♥", "♦", "♣"}; const vector<string> card_values {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"}; // 定义牌的结构体 struct Card { string type; string value; int point; Card(string t, string v, int p) : type(t), value(v), point(p) {} }; // 定义家结构体 struct Player { string name; vector<Card> cards; int score; Player(string n) : name(n), score(0) {} }; // 创建一副牌 vector<Card> create_deck() { vector<Card> deck; for (auto t : card_types) { for (int i = 0; i < card_values.size(); i++) { int point = i < 9 ? i + 2 : 10; deck.push_back(Card(t, card_values[i], point)); } } return deck; } // 洗牌 void shuffle_deck(vector<Card>& deck) { srand(time(NULL)); // 以时间为种子生成随机数 random_shuffle(deck.begin(), deck.end()); } // 发牌 void deal_cards(vector<Card>& deck, vector<Player>& players) { for (int i = 0; i < players.size(); i++) { for (int j = 0; j < 13; j++) { players[i].cards.push_back(deck.back()); deck.pop_back(); } } } // 排序函数 bool cmp(Card c1, Card c2) { if (c1.type != c2.type) { return c1.type < c2.type; } else { return c1.point < c2.point; } } // 家出牌 Card play_card(Player& player, Card& card) { auto it = find(player.cards.begin(), player.cards.end(), card); if (it != player.cards.end()) { player.cards.erase(it); return card; } else { cout << "你没有这张牌!" << endl; return Card("", "", 0); } } // 计算得分 int calculate_score(vector<Card> cards) { int score = 0; for (auto c : cards) { if (c.value == "10" || c.value == "K" || c.value == "A") { score += 10; } else if (c.value == "5") { score += 5; } } return score; } // 判断是否为炸弹 bool is_bomb(vector<Card> cards) { if (cards.size() != 4) { return false; } for (int i = 1; i < cards.size(); i++) { if (cards[i].value != cards[0].value) { return false; } } return true; } // 判断胜负 bool is_win(vector<Card> cards1, vector<Card> cards2) { int score1 = calculate_score(cards1); int score2 = calculate_score(cards2); if (is_bomb(cards1)) { score1 *= 2; } if (is_bomb(cards2)) { score2 *= 2; } return score1 > score2; } int main() { vector<Player> players; players.push_back(Player("家1")); players.push_back(Player("家2")); vector<Card> deck = create_deck(); shuffle_deck(deck); deal_cards(deck, players); sort(players[0].cards.begin(), players[0].cards.end(), cmp); sort(players[1].cards.begin(), players[1].cards.end(), cmp); while (players[0].cards.size() > 0 && players[1].cards.size() > 0) { // 家1出牌 cout << players[0].name << "的手牌:"; for (auto c : players[0].cards) { cout << c.type << c.value << " "; } cout << endl; string type, value; cout << "请" << players[0].name << "出牌(输入牌的花色和点数):"; cin >> type >> value; Card card(type, value, 0); Card played_card = play_card(players[0], card); if (played_card.value != "") { // 家2出牌 cout << players[1].name << "的手牌:"; for (auto c : players[1].cards) { cout << c.type << c.value << " "; } cout << endl; int index = rand() % players[1].cards.size(); played_card = play_card(players[1], players[1].cards[index]); if (played_card.value != "") { if (is_win({card}, {played_card})) { cout << players[0].name << "赢了这一轮!" << endl; players[0].score++; } else { cout << players[1].name << "赢了这一轮!" << endl; players[1].score++; } } } } if (players[0].score > players[1].score) { cout << players[0].name << "赢了游戏!" << endl; } else if (players[0].score < players[1].score) { cout << players[1].name << "赢了游戏!" << endl; } else { cout << "平局!" << endl; } return 0; } ``` 这个示例程序只是一个简单的框架,还有很多地方需要完善。例如: - 家出牌的逻辑需要加灵活,可以考虑加入提示、判断牌是否符合规则等功能。 - 计分规则可以根据实际情况进行修改,比如加入对炸弹的特殊处理。 - 程序没有图形界面,需要在命令行中输入数据,可以考虑使用QT等GUI库进行开发。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值