2017-03-25

Google Code Jam

Google Code Jam 是世界上最大的程式設計競賽之一, 2003 年開始舉辦, 每年 4 月開始. Google Code Jam 也是為數不多可使用 C# 的程式競賽.

今年 2017-03-07 19:00(UTC) 開始報名, 只要擁有 GMail 帳號就可參加. 晉級方式如下圖所示.



首先是資格賽. 三或四道題, 時間二十七小時, 只要能達到合格分數晉級人數不限.

Round 1 有三場, 兩個小時三十分鐘, 每場的前一千名才能晉級, 基本上能晉級選手都能在時間內完成所有題目, 所以就是最快完成題目的前一千名. 應該是配合全球一起比賽的時間, 三場時間正好分別是台灣的早上, 下午, 深夜. 最近規則做了修改, 只要選手通過其中一場比賽, 其它場 Roind1 就不能參加, 應該是先前有高手三場都參加, 佔了其他選手晉級的名額.

比賽題目以 2015 年資格賽為例. 在 Google Code Jam 官方網站, 點選 PAST CONTESTS.



找到 2015 的題目, 點選 Qualification Round 的 Problem



正式比賽看到的畫面就是這樣. 左邊顯示這個 Round 有 A B C D 四道題, 底下有四道題的配分及目前提交和成績. 中間就是題目說明.



比賽方式是寫完程式後下載輸入資料, 經由所寫的程式跑出輸出檔案, 再把輸出檔案上傳驗證. 資格賽檔案上傳會立刻判斷答案是否正確, 答案錯誤只會告訴你答案有問題, 至於是題目理解錯誤, 或解題邏輯有問題, 還是程式 Bugs 只能自己想辦法.

輸入檔案有兩個, 一個小資料一個大資料, 檔案下載後會開始計時, 一分鐘未上傳答案算一次失敗. 小資料應該是驗證解題邏輯, 大資料是驗證程式有沒有優化過, 有時程式可以通過小資料測試, 可是遇到大資料程式會在規定時間跑不完.

同一道題大小資料有時分數差很多, 這可能表示這道題目不難理解, 解題方式也不難, 困難的地方是優化的技巧.


沒有留言: