Search This Blog

Sunday, March 27, 2016

萬丈高樓由地起

話說 Facebook 度出現咗一條小學生嘅題目:

   AB
-  CD
-----
   EF
+  GH
-----
  PPP


有人寫 Code 去計答案出嚟。趁假期得閒,貪得意玩埋一份。屋企唔想開 Visual Studio, 就走咗去 https://dotnetfiddle.net/.

因為多過一個答案,Brute force 難免,問題只係點樣解決得靚啲。觀察所得,係 AB-CD=EF 同 EF+GH=PPP 嘅解法一樣,Divide and Conquer, 即係解到 EF+GH=PPP, 就基本上解咗題。所以得出第一個版本係咁:


好快就可以意識到,只係 j 嘅計法唔同,加上
x.Add(n / 10);
x.Add(n % 10);
呢兩句太過累贅,於是就變成咁:


之後就見到擺入 HashSet 嗰嘅數字,只係作為 Validation 嘅準備,可以 Refactor 成一個 IsValid 嘅 Delegate; 然後再將 AddDigits() 簡化為 CountDigits():


睇住個 Calc(), 覺得 value 不大,因為只係一個 Loop 入面有個 if, 於是就直接將佢 Inline 入個 Main() 度; CountDigits() 用 LINQ 一句 KO 埋:


最後,想用最少嘅 Code 做嘢; 掉走埋 CountDigits(); 改返 ab, cd, ef, gh, ppp 做 variable 名; 執走第一個 if; fix 埋 p = 1 呢個已知數:


再貪玩少少,用 LINQ 代替兩個 Loop:


或者好多人會覺得寫一大段 Code 去解決一條小學生嘅題目係無聊,唔夠 Cost Effective. 但係每個 Software Engineer, 都要有解決問題嘅熱誠。呢個 Exercise, 由一開始 Divide and Conquer 嘅想法,Refactor 成一條 LINQ 攪掂,係完全意想不到。可能做唔到傳說中嘅 Python 咁5行攪掂 (到呢一刻都未搵到個傳說响邊),但其實 C# 一啲都唔失禮。Ceremony vs Essence 嚟講,C# 都算係咁 (斜視 Java 中)。

大慨,呢個世界上有多過一個方法去解決問題,而大家都想搵最好嘅方法,最好可以係最快、最少 Code, 最 readable, 最 reusable, 最 maintainable 等等,無絕對標準的 (最快都重要分寫得快同行得快),响各方面達致平衡,就係 Software Engineering 引人入勝嘅地方。

既然平時返工要趕 Project 無時間要左抄右抄,放假有時間偶爾寫吓完全屬於自己認為最好嘅 Code, 何樂而不為?

P.S. 有無人識將呢句 Fluent style 嘅 LINQ 變成 Query style: new int[]{ef, gh, ab, cd}.SelectMany(o => new int[]{ o / 10, o % 10}).Distinct().Where(o => o != 1)

Friday, March 25, 2016

雜記 8

好精彩嘅一個星期,發生咗好多事,協作為幾份 Proposal, 跟住一份獨力製作嘅 Proposal, 返嚟咁耐第一次獨挑大樑,慶幸嘅係壓力大,但成功感亦大,之後就係上個客度 Present, 應該有六七成把握。

星期三又做過一個差啲死嘅 Demo, 開會前30分鐘被告知 Server 死咗,好彩得電腦之神嘅眷顧,响做 Demo 前五分鐘就好似完全無咗件事咁。跟手就由機場去石門見另一個客,本來以為打甩咗一件麻煩事,點知又有另一件麻煩事上身,500部 Server, 究竟可以點 Mon?

今日本來又想做 YouTube Live Broadcast, 但試完啲嘢之後,發覺唔 Work, 只好放棄。跟住部機又鬼死咁慢,啲 Demo 做得子唔順,令到成個 Workshop 唔係咁靚。

今晚見完客開完會,諗住去响附近食少少嘢,見到杜丹樓,二話不說就衝咗入去。點知俾我撞到舊同事,傾咗一陣近況,雖然唔係入室弟子,但知道對方安好,係一件好事,好懷念當年一齊做事嘅日子。

呢兩晚都上咗15樓拗水吹,咁啱徒弟仔都响度,對於兩個知識控嚟講,一傾就傾到無雷公咁遠,真係好正! 不過就好似阻咗徒弟仔做嘢添...

今晚返到屋企,香港對卡塔爾場波已經過咗30分鐘,已經入咗一球。最後雖然係二比一輸咗,但已經踢得好好喇!

同徒弟仔吹水嘅時候,佢題到重播嘅《鹿鼎記》,話入面啲廣東話好唔同喎,於是求其搵咗一集嚟睇。其實又唔係太唔同,係多咗啲四字詞,亦文縐縐咗啲,但當年嘅人,呢個 tone 係好普通。今時今日,都應該唔會有人咁講嘢。啊唔係,有一個,場波輸咗嗰陣,鍾志光講咗句「江東子弟多才俊,捲土重來未可知。」大慨就係呢種感覺。

因為呢幾日都太夜瞓嘅關係,成個四日無做 Gym 喇! 而呢一刻係零晨四點,唔知聽日做唔做到呢?

十萬個冷笑話,終於俾我洗咗,但時間都好似唔係好夠洗。

呢個復活節,要玩 Node.js!

下個禮拜,進入新嘅工作模式。

Sunday, March 13, 2016

炫舞場

話說有一日,見到有一場街舞表演 Show, 於是就問徒弟仔有無興趣去睇吓。場 Show 揀位嗰陣,都幾爆吓,得返啲邊邊位咁濟,好彩有一行後少少嘅坐得返中間少少,於是就買咗飛。

地點係葵青劇院,係徒弟仔地頭,於是星期五放工之後,就搭車過去。响附近嘅商場食咗少少嘢,飲咗杯冰涼嘅西瓜汁,就入去劇場。


其實與其話係街舞表演,不如就係一場以跳舞為主題嘅話劇。除咗街舞,重有 Beatbox, 現代舞、芭雷舞、大媽舞,再將夢想、親情、友情、香港情懷共冶一爐,感覺唔錯。

呢一場之後有個分享會,對表演藝術識條春嘅我竟然問到問題,重係第一個問添! 因為本來以為只係得剛強嘅街舞,但係又有其他柔性嘅舞蹈出現,就不禁想知點樣排入去。不過因為第一次參予呢啲分享會,問得唔係太清唽,呢場重要係錄影㗎! 今次真係失禮晒...

分享會之後,先留意到原來會場外有花籃同劇照。


跟住就見到啲人排住隊同各位演員影相。


走出表演場館,本來各自返歸,跟住徒弟仔話可以食燒夜,又有少少餓,於是又返返去商場食嘢。無意中見到類似裝腸粉嘅碟,其他地方又可以唔太吸引,於是就坐低咗,叫咗碟腸粉,徒弟仔就嗌咗個燒賣,點知... 啊姐聽錯咗,將腸粉同燒賣撈賣一齊... 呢次都真係分甘同味。

食飽飽,返去地鐵站,因為月台唔一樣,真係要分道揚鑣,跟住又好傻仔咁用手機影對方。然後,就無然後了,我部機突然無電... 呢次應該係第二次,希望捱到出 Z6.

人工智能

AlphaGO 同圍棋高手對決,當你知道箇中原理,你可能會崩潰。

動漫迷一定記得响《全職獵人》入面,會長同蟻王對決嘅一幕。會長千手觀音嘅招式,縱使有無限嘅可能性,但因為每一個人都有自己嘅 Preference, 而將可能性大大降低。而蟻王最後就睇穿咗會長嘅 Pattern, 會長意識到不敵蟻王,最後就只可以出大招攬炒。

AI 嘅其中一個範疇就係搵出最 Optimal 嘅 Solution, 而搵嘢嚟講, 相信無人會反對 Google 係首屈一指。AlphaGO 其實就係去搵 Pattern, 再搵出最有機會取勝嘅棋法。聽說圍棋講求棋手個性、棋型、平衡呢啲,電腦唔會玩呢套囉! 只要 AlphaGO 搵出對方嘅 Pattern, 再勁嘅高手,到最後就只會輸。

唔好為人類輸咗而失落,因為人追求各方面嘅完美,電腦追求解決問題。即係你叫電腦去解決一個道德問題,例如:
有一群小朋友在外面玩,而那個地方有兩條鐵軌,一條還在使用,一條已經停用。只有一個小朋友選擇在停用的鐵軌上玩,其他的小朋友全都在仍在使用的鐵軌上玩﹔很不巧的,火車來了(而且理所當然的往上面有很多小孩的,仍在使用的鐵軌上行駛),而你正站在鐵軌的切換器旁,因此你能讓火車轉往停用的鐵軌,這樣的話你就可以救了大多數的小朋友,但是那名在停用鐵軌上的小朋友將被犧牲,你會怎麼辦?
電腦無辦法去自我衡量各種價值嘅比重,我哋只可以輸入自己嘅價值觀去得出計算結果。就算叫電腦由人類歷史中搵出 Pattern, 咁樣,輸入唔同嘅歷史時段或者事件,都會左右得出嘅計算結果,或者佢只可能得出大部份人會認同嘅結果,佢可能搵唔到路軌問題一個皆大歡喜嘅結局。

其實 AI 唔需要所有嘢都係最 Top, 佢只要比平常人做出更好嘅決策就得,而現實生活中,好多做投資嘅基金同銀行,都係用電腦計完一大餐之後就做買賣。落一個買盤或者賣盤或者無乜嘢,但試想像,如果人類嘅所有決策,到最後都係依電腦計算出嚟嘅結果去做,咁究竟係電腦幫緊人,定係人類變成電腦嘅奴隸? 當人類意識到嘅時候,就接受唔到被電腦「統治」,跟住就想反抗,咁科幻小說入面人機大戰嘅情節,就變得好 Make Sense 了。

Friday, March 11, 2016

希望

我唔係教徒,但响一間天主教嘅中學,因為係天主教學校,所以有宗教堂。記得有一日,神父話天主有信、望、愛三德,當中嘅望係希望,人無咗希望就乜都無。

因為呢排多學生輕生,不少人寫文叫人唔好死,見到有一句係咁嘅「做人是一定要捱一些屎,但屎,一定會過。」令我諗起一個長壽嘅真實故事。

話說有個地方,啲人好長命,有記者採訪其中一個老人家,問佢咁長命開唔開心。個答案係唔開心,仲叫個記者可唔可以幫手了解佢嘅生命。點解呢? 因為鄉下地方太窮,可以食嘅就只有粟米,而老人家,食咗百幾年,換著係你,咁長命,你會開心嗎?

食粟米都想死,何況係捱屎? 要捱幾耐呢? 假如有一日你覺得自己一世都要捱屎,你係咪又會繼續捱落去?

學生見到今日嘅社會,覺得一世都要捱屎,睇唔到前景,失去咗希望,就正如神父所講「人無咗希望就乜都無」。

社交媒體發達,大家鐘意就發文、轉發、Like and Share. Facebook 出咗反應彈之後,嗰位得六百八十九票嘅特首可以爆嬲嘅,究竟香港人捱咗幾多屎? 又要捱多幾耐?

做啲可以改變社會嘅事,做啲令社會有希望嘅事,人類社會係為下一代而建設,唔做幫兇去建立一個摧毁下一代嘅社會,一個要成日捱屎嘅社會。

Popular Posts