人力資源機(jī)器怎么玩 新手攻略分享
2016-12-08 16:16:34來源:優(yōu)游網(wǎng)發(fā)布:優(yōu)游網(wǎng)
人力資源機(jī)器怎么玩?人力資源機(jī)器新手玩法技巧?接下來小編為大家詳解一下:
程序結(jié)束判定
不知道大家留意沒,這個(gè)游戲的編程是沒有終止命令的,而絕大多數(shù)任務(wù)都是靠循環(huán)的,那到底怎么樣才算程序的結(jié)束呢?通過頭機(jī)關(guān),不難發(fā)現(xiàn),代碼走完了,程序就結(jié)束了,這個(gè)符合直覺對吧。但那些無法跳到底的程序呢,我覺得是靠觸發(fā)inbox來實(shí)現(xiàn)的,當(dāng)使用inbox時(shí),如果輸入隊(duì)列為空,則程序跳出。這里就產(chǎn)生了一個(gè)問題,如果inbox離循環(huán)入口太遠(yuǎn),那輸出最終結(jié)果后,又得多運(yùn)行幾個(gè)動作才能到達(dá)inbox(null),增加總步數(shù),如無必要,此處可優(yōu)化。
程序結(jié)果的審核
一般最常見的錯(cuò)誤是程序中意外的空手操作或類型不匹配,比如空手outbox、空手加減、空格子讀取、字母加減數(shù)字等。其次,是錯(cuò)誤輸出值不符合要求,這里需要展開。
1.你往往會發(fā)現(xiàn)只要輸出一個(gè)錯(cuò)誤結(jié)果,程序就會報(bào)錯(cuò)“程序*輸出某值,而你輸出某值”,所以我們覺得,這個(gè)數(shù)值一定是預(yù)先算過的,就等著看你給錯(cuò)了哪個(gè),這種猜想多數(shù)情況下是成立的。
2.但還有稍不常見的錯(cuò)誤,當(dāng)你執(zhí)行完畢按需輸出后,程序報(bào)錯(cuò)“雖然你正確輸出,但我能給出一個(gè)反例”,這種情況是你不完全理解題干,程序里出現(xiàn)某些特例不能兼顧的地方,或者投機(jī)取巧,僅僅為滿足當(dāng)前輸入序列去產(chǎn)生特定的輸出序列。我估計(jì),系統(tǒng)在測試完當(dāng)前給出的序列后,在后臺對備用的所有序列都做了測試,行不通的就報(bào)錯(cuò)并在下次拋出這個(gè)序列。然而,系統(tǒng)有一個(gè)總步數(shù)評分系統(tǒng),游戲作者主觀上當(dāng)然是希望它的備用序列在同一程序下跑分要一樣,生成序列時(shí)可能用到一些理論或?qū)I(yè)工具進(jìn)行評估,但這或許還會遺留一些差異,或者說BUG,或許可以利用這些差異進(jìn)行優(yōu)化。
3.還有更不常見的錯(cuò)誤,如 loop{ ... ; outbox; .... ; inbox; ... }。“你輸出了所有*的值,但輸出結(jié)果過多”(如1,2,3,4, 1,3,5,7, 1)。前面提到程序結(jié)束是以inbox(null)為標(biāo)志的,所以在inbox前慎用outbox。
跳轉(zhuǎn)出固有思維
jump,或者我更喜歡稱為goto,是程序?qū)崿F(xiàn)條件判斷、循環(huán)、子程序等的關(guān)鍵,高級語言中的goto、if、for、while、case、function等統(tǒng)統(tǒng)通過jump和它兩個(gè)不成器的條件跳轉(zhuǎn)兄弟來完成。匯編語言之所以靈活高效,跟這些“無條件”跳轉(zhuǎn)指令不能說沒有關(guān)系,雖然以高級語言的角度。用goto亂跳意味著以后你的代碼將難以調(diào)試(write-only、通心粉代碼),所以很多高級語言摒棄了類似的命令。高級語言是面向?qū)ο蟮模瓤?,就算面向過程至少也該可以定義幾個(gè)函數(shù)不是嗎?即便沒有函數(shù)也至少有循環(huán)語句不是嗎?但這是匯編,這個(gè)游戲里追求的是極限體積的小任務(wù),還在用高級語言的思維你就玩不轉(zhuǎn)!
開發(fā)地磚
不知道這個(gè)游戲干嘛地上一堆地磚(我開始以為是箱子),除了極個(gè)別關(guān)卡差點(diǎn)不夠用外,我覺得那些地磚根本就是配合便箋用來畫畫的嘛。地磚是用作儲存數(shù)據(jù)的介質(zhì),開發(fā)空地磚是有成本的(讀取數(shù)據(jù)+寫入寄存器),但不開發(fā)的地磚無法運(yùn)算。優(yōu)化的方向是:
1.少開發(fā)空地磚;
2.見縫插磚,因?yàn)闆]辦法直接輸入任意數(shù)值,所以在程序中某些特定中間值產(chǎn)生時(shí),要抓住機(jī)會“順道”寫入到目標(biāo)地磚;
3.如做不到上述2點(diǎn),應(yīng)盡量一次性開發(fā)多個(gè)地磚,讀一次寫多個(gè);
4.合理利用初始值,有初始值使用中無需復(fù)位,可以大膽調(diào)用。
5.同上,0值是可以自己制造(copyfrom+sub,或者bump),不用刻意保留初始0地磚,但初始大數(shù)字地磚務(wù)必保留。
關(guān)于備注
大量的自由跳轉(zhuǎn)語句、無法自主輸入特定數(shù)字、指令單調(diào)、字體太大屏幕放不下,這些原因都會導(dǎo)致尋碼、跟蹤困難。高級關(guān)卡有兩種備注方法:一是把便箋拖到代碼窗,二是單擊地磚編輯,地磚上的內(nèi)容會反映在代碼窗內(nèi)。寫備注的技巧是地磚代碼盡量寫得高瘦些,不然有可能連在一起。備注代碼不要吝嗇,不然回頭找死你。