第三章 約瑟夫環(huán)
一大清早,天剛蒙蒙亮。
楊成洗漱完畢,匆忙吃了一點早餐,便來到了網(wǎng)吧。
他心中隱隱地對下一個關(guān)卡有了些期待。
作為一名準程序員,新鮮事物對于他總是很有吸引力的。
反倒是那些室友,楊成感覺更像是20世紀的人。
居然還玩橫板格斗單機游戲...
能不能稍微有點追求啊!
楊成很快戴上頭盔,進入了角色。
“叮!”
熟悉的系統(tǒng)音響起來。
“親愛的挑戰(zhàn)者,準備前往下一個關(guān)卡了嘛?”
“OK,一切就緒”。
楊成打出個勝利的手勢。
“祝你好運!”
系統(tǒng)發(fā)出貼心的祝福,然后楊成的意識進入到了另外一個空間。
喬塔帕特小鎮(zhèn)的夜晚并不寧靜,此時月黑風高。
一群全副武裝的士兵闖入了這里,他們戴著狼皮頭盔,身穿堅韌的鎧甲,手里拿著盾牌與標槍,身上還配著鋒利的短劍。
這一切表面了他們的身份——殘暴無比的羅馬人。
“抓住每一個猶太人,記住,要活的!”
“我要親自把匕首捅進這群吸血鬼的心臟!”
為首的羅馬將領(lǐng)發(fā)布了不容置疑的命令,士兵們則開始了四處追捕。
而小鎮(zhèn)的另一邊出口,一群身穿黑色斗篷的人趁著茫茫夜色,行色匆匆地逃竄著。
“不能再這樣下去了”。
有人說道。
“羅馬人很快會追上來,我們逃不掉的”。
“我可不想死在那些劊子手的屠刀下!”
“還不如自我了結(jié)掉!”
有人哀嚎道。
這時,一個好事者跳了出來。
“我有個提議,咋們41個人排成一個圓圈,由第1個人開始報數(shù),每報數(shù)到第3人這個人就必須自殺,然后再由下一個重新報數(shù),直到所有人都自殺身亡為止”。
“大家贊同嗎?”
大部分人舉起了手臂,只有兩個人除外。
一個自然是楊成,他是來完成任務的,可不是來和這些SB糾纏不清的。
還有一個人,人們都稱呼他為約瑟夫。
這廝據(jù)說是個歷史學家或者說是數(shù)學家。
不過這顯然無關(guān)緊要,反正大伙都得玩完兒。
約瑟夫眨巴著眼睛,眼中閃爍不定,不知道在想些什么。
其他人不認得楊成,卻認得約瑟夫。
“約瑟夫,你想做膽小鬼嗎?”
“沒門!”
有人開始憤憤不平了。
“不不不”。
約瑟夫搖搖頭。
“各位請先入場,我隨后就來”。
楊成自然也是很識時務地點了點頭,表示自己愿意順從大家的意志。
約瑟夫瞟了楊成一眼,眼中多了一絲玩味,楊成則是低垂著頭,一言不發(fā)。
事實上,他正在從全息菜單中調(diào)取代碼編輯器面板,來一次死亡邊緣的編程。
其他的猶太人走到一處空地上,開始組成一道死亡的環(huán)形隊列。
楊成依然面不改色,他正在一個接一個字符地編寫代碼。
“總?cè)藬?shù)41,報數(shù)間隔3,余留人數(shù)1”。
楊成開始了初始化配置。
對于約瑟夫環(huán)問題,可以用循環(huán)列表來求解。
只要剩余人數(shù)大于1個,那么就執(zhí)行兩個操作,一是報數(shù),二是殺人。
值得注意的是,循環(huán)列表有鏈表和數(shù)組兩種實現(xiàn)方式,它們的效率是不一樣的。
一般來說,用循環(huán)鏈表來解決Josephus問題效率會更高。
然而,時間不等人。
站在圈中的人開始不耐煩了。
“我說,那邊那兩個,還不過來是什么意思?!”
“不會要咋們親自動手吧!”
“好的,讓諸位久等了”。
約瑟夫瞇著眼睛,走向人們。
他很快站定了位置,一臉的輕松自如。
楊成在虛擬編輯器上折騰了半天,最后一運行,好不容易求出了結(jié)果。
這結(jié)果告訴他,第三十一個位置才是最安全的,或者說是最后被干掉的。
他放眼一掃,發(fā)現(xiàn)第三十一位竟然被約瑟夫占據(jù)了。
“這狡猾的老家伙!”
楊成不禁唾罵一聲。
原來這約瑟夫早就算出了最安全的位置,而自己還在這兒傻乎乎地敲代碼。
這其實也只能怪楊成自己,他用循環(huán)列表求解約瑟夫環(huán),要模擬整個游戲的過程。
不但程序?qū)懫饋砗苈闊?,而且?zhí)行的效率還很低。
如果只是要求出最后的勝利者序號,實施一點數(shù)學策略就可以做到。
我應該找一個公式來算的!
不過來不及了,再這么下去楊成就會被暴怒而絕望的猶太人撕成碎片了。
于是他加快了思維速度。
事實上呢,因為他初始化配置非常得當。
只需要稍稍地改變一下程序代碼,把余留人數(shù)從1改成2,不就OK了嘛?
程序再次運行,他很快得到了自己應該站的位置——16。
楊成站好了地方,這場死亡游戲便拉開了序幕。
“1”,第一個人吹響了死亡的號角。
“2”,第二個人暫避了風險,不過殊途同歸。
“3”,報到這個數(shù)字的人,面色慘白,然后,他絕望地掏出一支匕首,狠狠地劃向自己的肌膚。
“噗通!”
鮮血染紅了草地,死神繼續(xù)揮舞著殺戮的鐮刀。
“1...”
“2...”
剛才還站立著的人,此時已經(jīng)倒了個七七八八。
而約瑟夫和楊成就好比暴風雨中的兩艘巨艦一般,繼續(xù)乘風破浪,毫無顧忌。
有些人看出了點端倪,但在絕望中都只是徒勞的。
就算是沒自殺,那些粗魯野蠻的羅馬人會留活口嗎?
“噗通!”
倒數(shù)第三位的人倒在了血泊之中。
約瑟夫緊盯著眼前這個年輕人,他根本不像是猶太人,更像來自東方的旅人。
“我說,你怎么不報數(shù)了?”
約瑟夫目光中流露出一絲狡黠。
“約瑟夫先生,你很聰明”。
對于這種智者,楊成毫不吝惜贊美之詞。
“哦?你的意思我不明白”。
約瑟夫還在裝糊涂。
“我的目的和你是一樣的!”
楊成平視約瑟夫,后者微微一愣。
“那就是活下去!”
說完,楊成轉(zhuǎn)過身子,走進了叢林深處。
“有趣的小子”。
約瑟夫丟下這句話,也是一轉(zhuǎn)身,逃了個無影無蹤。
這時,東方的地平線上第一縷曙光開始出現(xiàn),地面上橫七豎八的尸體也消失不見了。
“叮!”
愉悅的系統(tǒng)聲音響起來。
“恭喜玩家您完成了約瑟夫環(huán)的任務”。
“先前積分15分”。
“循環(huán)列表求解約瑟夫環(huán)獎勵2分”。
“當前積分17分,擊敗了全球11%的玩家”。
“才2分,太少了吧”。
楊成玩了幾把游戲,也算是開闊了一些眼界。
“您現(xiàn)在準備開始下一個挑戰(zhàn)嘛?”
楊成伸了伸懶腰。
“馬上開始吧,大爺現(xiàn)在精力充沛,打幾個怪升升級沒有半點問題”。