[討論] 解題目看漫畫 (?)

看板Ajax作者 (function{}())時間9年前 (2014/12/05 16:15), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
可能有人看標題就猜到我要說甚麼了 沒錯我昨天在西洽看到的 XDDD https://paiza.jp/poh/enkoi 讓我驚訝的是他居然吃 Node.js! 有沒有人想嘗試搞爆他們伺服器的 (X 這實在太有趣了,所以來試著挑戰看看 順帶一提 C/C++ 的 Time Limit 是 3 秒 可是用 Node.js 寫有整整 16 秒可以用喔 XD 其實三題都很簡單 我就當作 Functional Programming 練習 先附上我的解答,內含一大堆 bad practice 傷眼注意 http://pastebin.com/E2A1un5V 一些感想: - stdin 讀進來加到字串有可能會炸記憶體,這跟 V8 限制有關 正確的做法是用 buffer 不過這裡應該是不用擔心那麼多 (而且程式複雜度會成指數上升) XD - stream interface 在 v0.10 有改變,我這邊還是用舊的寫法 - split 這邊可以簡化成 .split('\n') 就好 不過因為我在 windows 上測試所以要濾掉 \r - 第二題有一點 tricky, 因為一行只有三個數字 reduce 呼叫時若沒有傳入第二個參數,那第一次呼叫 callback callback 的第一第二個參數會是 array[0], array[1] 所以這裡 callback 只會被呼叫兩次 => 所以這邊判斷 index != 1 的時候 p, c 分別是前兩個數字 將 p, c 相減,若為負則設為 0, 傳到下一次呼叫中 index == 1 時將 previousValue (p) 乘以 currentValue (c) - 將字串強制轉數字有很多種方法 保險一點用 parseInt, parseFloat... 等等 或是炫泡解法 ~~str, -(-str)... 等等 這東西應該是討論到爛掉了,不過要慎用 XD 之所以用 p - -c 不用 p + ~~c 是因為這樣可以省一個字元 (? - .map, .reduce 這些寫起來效能一定比不上迴圈 To iterate is human, to recursive, divine! - 最後一題寫不好還是會 TLE 阿...XD 我一開始想不出不設區域變數的方法 把所有資料都傳進 reduce 又太慢 (真的會 TLE) 後來想出用 .bind 改變 this: http://pastebin.com/0p3fYXq3 這樣真的沒區域變數,可是比較慢 XDD --

01/21 15:40,
反正操妳妹應該只是基本作 她開心就好
01/21 15:40

01/21 15:40,
01/21 15:40

01/21 15:44,
我沒有罵髒話
01/21 15:44
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.181.25 ※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1417767318.A.FF3.html

12/05 19:21, , 1F
其實強制轉數字可以 (+str) 就行了
12/05 19:21, 1F

12/05 19:48, , 2F
另外建議不要+=string,而是 arrayOfString.join('')
12/05 19:48, 2F

12/05 19:48, , 3F
這樣會快很多
12/05 19:48, 3F

12/05 21:21, , 4F
樓上的知識過期了 現在的js引擎大多做過字串加法優化
12/05 21:21, 4F

12/05 21:22, , 5F
至少在v8引擎直接用字串加法比較快
12/05 21:22, 5F

12/05 21:28, , 6F
好吧,真的過期很久了
12/05 21:28, 6F

12/05 21:43, , 7F
http://pastebin.com/HSyjuQK1 不用函數稍微快一點
12/05 21:43, 7F
文章代碼(AID): #1KWMcM_p (Ajax)