人在西郵 | Linux 興趣小組免試題攻關指南

1

切記,這只是“指南”,沒有一勞永逸,沒有舒適區。

[圖片上傳失敗...(image-b1f77c-1509644653387)]](http://upload-images.jianshu.io/upload_images/2558748-9c11c1cfd710240a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

時隔一年,2017,看到西郵 Linux 興趣小組再出新一度的免試題,不免回想起去年大一的自己的經歷,雖然當時很多關卡都是學長所指點,也依舊收獲滿滿。這里貼上去年的免試題之我的攻略,作為給大一同學的小科普:

如果問我為什么要寫攻略的話~

  • 讓大家面對這種套路的免試題不再迷茫。
  • 鼓勵 Linux 興趣小組再創新第一個提出發布免試題的學長最棒

如果問我今年的攻略在哪里的話~

  • 你為什么不自己好好挑戰一下呢?2017 免試題
  • 大一寫攻略的接力棒,我想傳遞給你~

2

以下是我去年的攻略原文,曾發布在博客園。

4.28 的宣講會圓滿結束(就在寫這段話之前不久),對于西郵Linux興趣小組這一次納新,身為局外人表示:還是有歷史,還是會玩,還是厲害哈。
華麗的分割線里面是自己之前的攻關戰略,最后補充了宣講會上學長的解釋,屬于自己的攻關過程之外,但值得記錄。
以下攻關內容敘述角度模擬一個人單獨挑戰時的思考,實則我是在各種指點下與學長共同完成的。。
因此,感謝幫我的學長,還有下方評論區的伙伴@奧爾德賽,對于技術,我們永遠是朋友。

FREE OPEN SHARE

自己的攻關經歷

4月伊始,西郵Linux小組為五月納新進入了前期宣傳階段,免試題一放出,引來各個熱愛技術的同學熱情挑戰。 免試題入門可從西郵Linux小組官網中戳入,或直接點西郵Linux小組2016免試題進入。
本想著從百度進入免試題入口,卻意外發現2013年曾有外校學生寫過13年的免試題攻略,對小組免試題考察風格有了初步的了解。詳見西郵Linux小組2013免試題+繼續之戰

第一關

首頁如圖所示,看見START,就立刻戳了進去。

進去后是一張背景圖片,中間寫著2006的年份(西郵Linux興趣小組2006年建立),點擊后變成2007,再點擊變成2008……到2015年后點擊會重新跳到2006。那線索說不定在這里,如果能點出今年——2016,或許會有所發現。 打開源代碼,在有關2015的源碼下發現

<input type="hidden">

隱藏域,value值為2006,因此點擊2015后會重新回到2006的界面,而2006的界面源碼隱藏域value的值為2007…… 看來要出現2016的字樣,就需要傳遞2016的value值,在任意年份的頁面中將源碼中隱藏域value改成2016后提交看看:

<input type="hidden" name="year" value="2006"></input>

修改后點擊年份,不出所料,成功過關!

P.S:點擊START之前的頁面源碼中也有相同隱藏域且value=2006,點擊START之后跳到2006的界面中,更加證明了第一關需要出現的2016和該<input>
有關。 而在START頁面將value直接修改成2016后點擊START會怎么樣?結果直接到了第二關!

第二關

一段名言、一副梵高作的《星空圖》和背景的彈琴聲是進入第二關首先注意到的三大線索。再沒有其它什么顯示的,那么應該還需要到源碼里面看看。

分析源碼,發現名言、圖片之外,背景音樂所用的<audio>
標簽多了一個,應該不會平白出現的,如圖,沒怎么接觸過音頻文件,不知道是.3gpp格式和.eop格式哪個是多余的。

復制該鏈接,全部下載出來,發現.3gpp就是背景音樂可以直接播放,而.eop沒有相關軟件可以打開。 百度 .eop格式 發現這需要拿鍵盤鋼琴軟件Everyone Piano打開,下載并打開之。 果然,這個源碼中沒用到的.eop文件用Everyone Piano打開后在鍵盤中敲出了線索————一個網址:

www.dreamchasinger.cn/movie/

第三關

跟著琴聲來到第三關,一部還看不懂的微電影和一串01碼,對于01碼,西郵Linux興趣小組2013年免試題第一關不就是這個01碼么?老套路試試。

老套路無果,因為這串01和13年不同的是,中間有空格,莫非是摩爾斯電碼?寫一個小程序把0和1變成點和橫杠再用在線翻譯器翻譯,發現第四關的入口鏈接——182.254.246.154。
如果翻譯成亂碼的話,是好事,只需改一下編碼格式就好。這關打過去時間長了,當時好像用的是base64解碼的。

第四關

怪不得納新群之前有人說K炸,我還水了一句王炸。原來是他早已經打到這一關了,好可怕。

亂提交了一些發現并無用,源碼里也毫無破綻,目瞪口呆之際盯著K玩,發現了一個神奇的現象——除了第三張方片國王是褐色胡子的中年人外,剩余三個國王都是白胡子老頭!難道有貓膩,下載第三個圖片之。下載出來后聽說有一種叫“圖種”的制作技術,可以將rar壓縮文件和一張圖片合并起來顯示為一張圖。那這張圖或許就是用圖種制作器做出來的——把這張圖片名字3.png改為3.rar發現正是一個壓縮文件~

如上圖所示,壓縮文件里面放著1.txt,拉出來名稱改成1.exe后發現……是一個貪吃蛇游戲!過關再說。

一閃一閃的速成貪吃蛇游戲終于熬到了第四關,果然出現了

IMPORTANT MESSAGE:VHUUEFUDIXQHU

WHAT??!返回王炸的網頁,在輸入框輸下VHUUEFUDIXQHU后居然還是沒反應,那你還IMPORTANT! 好吧,肯定有出路的,不過我暫時就卡在了這里……

博客園評論區

評論區伙伴說該輸入FREEOPENSHARE,果然到了第5.1關,也是可以從網址直接跳的。

自己的第一反應還是看源碼,發現這是用HTML5的Canvas畫布編寫,由于自己從HTML+CSS直接跳至PHP服務端開發,之前沒怎么深入了解過JavaScript,有些吃力。

但好歹現在也學C,并且JS也是面向對象的腳本語言,根據變量名還是能讀出一些寓意的,如圖所注釋:

然而這時離宣講會開始只剩一小時了,來不及思考了,要開車。

看完宣講會官方攻略后的補充

官方詳解如下,和自己的這篇博客相比的話各有優點哦:

其中,第五大關解題源碼如下:

#include <iostream>
#include <cstring>
#include <math.h>
#include <cstdio>

using namespace std;

const int N = 25;
int dp[N][N][N][N];
int a[N][N];
int fa[2][N*N] = {};
char ans[2][100];
char str[10000];

int main()
{
    cin>>str;
    int len = strlen(str);

    int row, col;
    row = col = 0;
    int num = 0;
    //將方格數據轉化為矩陣
    for(int i=0; i<len; i++)
    {
        if(str[i] >= '0' && str[i] <= '9')
        {
            num = num * 10 + str[i] - '0';
        }
        else if(i > 0 && str[i-1] >= '0' && str[i-1] <= '9')
        {
            if(str[i] == ']')
            {
                a[row][col] = num;
                num = 0;
                if(str[i+1] != ']')
                {
                    col++;
                    row = 0;
                }
            }
            else if(str[i] == ',')
            {
                a[row][col] = num;
                row++;
                num = 0;
            }
        }
    }

    int n = col;
    //動態規劃
    for(int i=1; i<=row; i++)
        for(int j=1; j<=col; j++)
            for(int k=1; k<=row; k++)
                for(int l=1; l<=col; l++)
                {
                    int mx = 0;
                    if(mx < dp[i-1][j][k-1][l])
                    {
                        mx = dp[i-1][j][k-1][l];
                    }
                    if(mx < dp[i-1][j][k][l-1])
                    {
                        mx = dp[i-1][j][k][l-1];
                    }
                    if(mx < dp[i][j-1][k-1][l])
                    {
                        mx = dp[i][j-1][k-1][l];
                    }
                    if(mx < dp[i][j-1][k][l-1])
                    {
                        mx = dp[i][j-1][k][l-1];
                    }

                    if(i == k && j == l)
                        dp[i][j][k][l] = mx + a[i][j];
                    else
                        dp[i][j][k][l] = mx + a[i][j] + a[k][l];
                }

    cout<<"the ans = "<<dp[row][col][row][col]<<endl;

    //逆推得到路徑
    int cnt = 0;
    int i=row, j=col, k=row, l=col;
    while(1)
    {
        if(i == 1 && j == 1 && k == 1 && l == 1)
            break;
        dp[i][j][k][l] -= a[i][j];
        if(i != k || j != l)
            dp[i][j][k][l] -= a[k][l];

        if(dp[i][j][k][l] == dp[i-1][j][k-1][l])
        {
            ans[0][cnt] = 'U';
            ans[1][cnt] = 'D';
            cnt++;
            i--;k--;
        }
        else if(dp[i][j][k][l] == dp[i-1][j][k][l-1])
        {
            ans[0][cnt] = 'U';
            ans[1][cnt] = 'R';
            cnt++;
            i--;l--;
        }
        else if(dp[i][j][k][l] == dp[i][j-1][k-1][l])
        {
            ans[0][cnt] = 'L';
            ans[1][cnt] = 'D';
            cnt++;
            j--;k--;
        }
        else
        {
            ans[0][cnt] = 'L';
            ans[1][cnt] = 'R';
            cnt++;
            j--;l--;
        }
    }

    //輸出路徑
    cout<<"load_one > ";
    for(int i=0; i<cnt; i++)
        cout<<ans[0][i]<<" > ";
    cout<<"end"<<endl;

    cout<<"load_two > ";
    for(int i=cnt-1; i>=0; i--)
        cout<<ans[1][i]<<" > ";
    cout<<"end"<<endl;

    return 0;
}

3

讀完后,還可以看看前幾個月的百度前端技術學院熱身賽之我的攻略,你就知道為什么我說這是“套路”了~

有趣的百度前端熱身賽@2017

也可以參考純 URL 過關的智力游戲:Nazo_Game 找找靈感

Nazo_Game 官網

4

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,666評論 25 708
  • 1 練瑜伽的時候認識一位姐姐Y,看起來比我大三四歲的樣子。聊到年齡,才知道她比我大了快10歲,已經有兩個孩子。我一...
    郭姑娘說閱讀 183評論 0 1
  • 1、關于身體健康方面: (1)06:30開始完成晨跑10公里并堅持聽《超級個體》(下雨除外,預計用時1小時)。 2...
    清風_bd61閱讀 247評論 0 0