開學第六週,計概的助教開始殺人了。
為什麼我會這麼說呢?因為現在凌晨3點半,我居然還坐在這邊想Coding想不出來轉而發廢文。
上次的Assignment題目是:
輸入偶數時要印出空心的正方形,輸入奇數時要印出菱形,輸入小於3就重來、等於-1就跳離迴圈。
Compile&Run之後的大概長這樣: 我覺得還算OK,上上次的Exercise就有畫過一半的三角形了,所以這些都還可以聯想。基本的重複迴圈跟輸入的break也有談到,所以我覺得這個Assignment的難度不高。
但是過了一個禮拜之後,題目大概換個助教出了吧,難度上升大概不只一個檔次,這次要輸出的是這個東西:
四則運算,但是多了次方跟「自定義符號」要做運算。
$的定義是「$的前方之運算結果倒印回去,然後與後面的數字做加法運算」。
這邊出現兩個很大的癥結點:
1. 倒印的做法雖然在上次Exercise有出到,但是助教並沒有明講該怎麼倒印,一切都交給我們自己去想,提示隱晦的連我都快聽不懂。而那次作業一半的人缺交。
2. Stack&Pop我們還沒教完,並沒有辦法實質運用在上頭。
如果是只有兩個數字要做運算,那非常簡單,但是今天是要寫出六種符號運算的「計算機」,最簡單的爆破法其實就是連續for迴圈在while裡頭去運算。不過就我跟我強者室友研究了兩個多小時,即使我們已經盡量精簡,程式長度仍然突破了120行以上。
助教在下課前也說了一句話:「這次作業如果你們有聽課的應該都會寫,然後不會的人最好提早做,這個你們很可能來不及寫完。」
雖然開學已經六週了,但我認為要應用Stack的想法去做還是有很大的困難,而我試著去做了看看,現在差最後一步。我的infix是陣列形式,在輸入1個字元時可以非常順利地運作,但是在輸入2個字元,例如15的時候,他只會運算到最後的5,而1直接被忽略掉。
現在我所想到的方法是字串處理或是用double拉出來做,然而兩者在我目前的Stack裡頭我都有點難以下手,有試著硬是從char型態轉到double,但是輸出的結果反而更糟了。
我對中序轉後序的Stack&Pop應該理解只有八成,但是其他人可能連一開始的Stack都寫不出來,另外的方法for迴圈的爆破也是非常雜亂跟難以定義。我的室友跟我都會寫程式,但是這次全部都求外援了,因為這次的難度真的頗高。
我在開學時基本上都可以在課堂上半小時寫完Exercise,回去也能花個一小時把Assignment寫完,有被助教注意到,然後他請我去多幫忙其他同學。而其中一個助教很喜歡出難題,總是要我想一些很狂的題目,類似輸出e或是Omega之類的,但我倒現在還是不太會做,這次的Assignment是他出的,原本有一個更難的被大助教擋掉了。
目測作業的難度也快跟上我的能力,我大概也要自顧不暇了,其他同學大概更慘了吧,但我沒有時間能教好他們。下一次的Exercise也是他出的樣子,但我不敢再想了。
於是,我準備迎來從開學以來第一次因為Coding而熬夜的第一個曙光,然後明天早8。
幹。