那些年,程序员用过的行酒令
在外界的印象中,程序員應該是背著雙肩包,穿著格子襯衫,而且有和大熊貓一樣的黑眼圈。但程序員也曾經熱血、慷慨激昂、就著酒吐槽這個世界,本文記錄一些適合程序員的行酒令,權當拋磚引玉,歡迎大家補充。
翻撲克牌
簡單粗暴,上一輪喝酒的玩家(成為last one吧,下同)翻一張牌,然后從自己開始數點數,數到誰就誰喝。毫無技術可言,完全靠運氣,只不過人數不同,每個人的概率可能不一樣罷了。
?
成語接龍
這個也很簡單的,大家都會,誰接不上來或者在一局中重復了之前說過的成語,那么就得喝酒一杯了。這個似乎靠的是語文的積累,似乎跟程序員沒有什么關系,好吧,沒有問題那就制造問題。比如說,不能重復在一局中說過的成語,怎么檢查嗎,是判斷單鏈表是否有環嗎?好像也不是,畢竟一個成語可以有多個后繼的成語(出度)。
?
三七二十一
這個看起來簡單,實踐起來還是有點麻煩。就是last one隨便說一個比較小的整數,這個數不能是3或者7的倍數。之后按順序,每個人說出大于且最接近上一個整數的數字,同時也不能是3或者7的倍數。如果說出的數字不是符合條件,那么就罰酒了,如果既是3的倍數也是7的倍數,那么就double! 寫一個公式是不是表達得清楚一點
An+1 = min(Number for Number > An and (Number % 3 !=0 and Number % 7 !=0))
不過呢,這個需要高度的注意力(監督其他玩家)和運算能力,對已經處于微醺的玩家來說太不友好
?
夾逼定理
這個玩法跟數學中的夾逼定理沒有關系,玩法是這樣的,last one出一個數字,在0到100之間(0<N<100),然后接下來每一個人猜一個數字,該數字必須在上一個玩家收縮后的區間之內,如果猜中初始值,那么直接罰酒。否則,莊家判斷該數據與初始值的大小關系,進一步收縮。如果收縮后的范圍剛好“夾住“初始值,那么莊家罰酒。所以這個逼 是 “SB”得意思。
用python代碼描述這個過程,大致是這樣的;
1 def main(): 2 lower, upper = 0, 100 # range is (lower, upper), exclusive 3 INIT = random.randint(lower+1, upper-1) 4 print "INIT value is", INIT 5 while(True): 6 print "current_range: (%s, %s)" % (lower, upper) 7 if lower + 1 == INIT and upper - 1 == INIT: 8 print ("master lose") 9 break 10 num = int(raw_input("current guess: ")) 11 if (num == INIT) or not(lower < num < upper): 12 print ("current lose") 13 break 14 if num > INIT: 15 upper = num 16 else: 17 lower = num 18 19 if __name__ == '__main__': 20 main()在《數學之美番外篇:快排為什么那樣快》一文中,作者用更樸素的思想解釋了為什么用二分法能夠最快的收斂。那么為了夾住“莊家”,大家也會盡量用二分,但有趣的是,莊家可能直接出個50(N的二分之一)!那么猥瑣流可能害怕中了莊家的圈套,就猜一個1或者99。這個玩法還是很有趣的,第一,對微醺者比較公平;第二,節奏不會很快;第三,謀略與運氣共存。
?
卡牌
最后一個,是筆者看《程序員喝酒解釋專業術語》這篇文章想到了,感覺很有意思,于是在原文的描述上做了適當修改,使得可玩性 可操作性更強.
目前想到的卡牌包括:p2p?tcp?服務器 事務 ?互斥鎖。首先,每一個玩家對應一個點數,保證玩家的概率是一樣的。每一輪開始,擲骰子,對應的玩家摸卡,不同的卡,后續的操作可能不一樣。如果需要概率,則一律扔骰子判斷。下面列出卡牌對應的后續操作:
- udp,再扔一次骰子,選出另外一名玩家碰杯
- tcp,再扔一次骰子,選出另外一名玩家,前者一杯,后者一杯,前者再來一杯(三次握手)
- 服務器,再扔一次骰子,選出防火墻,其余所有玩家(都叫客戶端)按50%的概率決定是否連接。防火墻按50%的概率判斷是否幫服務器抵擋,如果抵擋,防火墻與客戶端碰杯,否則,服務器與客戶端碰杯
- 事務,再扔一次骰子,從1,2,3這三個數字中中隨機選出一個(NUM)。然后選出NUM個玩家,每個玩家都有50%的概率失敗,如果失敗,則立即rollback。如果NUM個玩家都成功,則commit,NUM+1(包括最開始摸到事務卡的玩家)碰杯
- 互斥鎖,再扔一次骰子,選出另外一名玩家。兩名玩家各扔一次骰子,點數大的取勝搶到資源(一杯酒)
謹以此文懷念曾經一起大塊吃肉、大口喝酒的朋友與時光。
?
總結
以上是生活随笔為你收集整理的那些年,程序员用过的行酒令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JMeter 学习问题汇总
- 下一篇: 接口测试小工具