ここに書かれた内容は、出題者名「Ozy」の問題に限った内容です。
CodeIQ公式のルールではありませんのでご注意ください。
コードゴルフ問題について
CodeIQ自体が一般的なプログラマ向けのサービスであるということを考慮して、表向きは普通の問題として出題し、こっそりと「コードゴルフ」のタグをつけておきます。出題者名が「Ozy」で、タグに「コードゴルフ」が付いている場合、CodeIQの自動採点システムによる正解・不正解の判定に加え、コードサイズの測定を行います。現状の自動採点システムではソースファイルを直接アップロードすることができず、フォームに直接書いたり貼り付けたりしたものがテキストファイルに変換されます。
このテキストファイルのサイズを記録し、(自動採点システムにより正解と判定された解答のみ)コードサイズの小さい順で順位づけを行います。
正解者の一覧は本ブログとCodeIQ MAGAZINEで公開され、挑戦者のニックネーム・使用したプログラミング言語・コードサイズが表示されます。また、正解者一覧はコードサイズの順位表を元に、コードサイズの小さい方から順に表示されます。
ショートコーダーバッジ
出題者名が「Ozy」で、「コードゴルフ」タグの付いた問題では、正解者に付与されるバッジに加えて「ショートコーダーバッジ」が付与されます。ショートコーダーバッジは正解者の中で、特に短いコードを書いた挑戦者にのみ付与されます。
バッジ付与の条件
まず、言語毎の最短コードサイズから言語の順位表を作成します。
例えば、過去の問題での順位表(http://d.hatena.ne.jp/Ozy/20151107#p1)を元にすると、
| 順位 | 言語 | コードサイズ |
|---|---|---|
| 1 | Perl | 133 |
| 2 | Ruby | 136 |
| 3 | JavaScript (spidermonkey) | 178 |
| 4 | Python | 182 |
| 5 | C | 194 |
| 6 | Scala | 198 |
| 7 | Haskell | 201 |
| 8 | Python 3 | 202 |
| 9 | C++11 | 214 |
| 10 | Nimrod | 219 |
| 11 | AWK (gawk) | 247 |
| 12 | AWK (mawk) | 247 |
| 13 | C++ | 281 |
| 14 | PHP | 286 |
| 15 | D (dmd) | 289 |
| 16 | Pike | 300 |
| 17 | C99 strict | 301 |
| 18 | C# | 320 |
| 19 | Fortran | 323 |
| 20 | VB.NET | 340 |
| 21 | Go | 344 |
| 22 | Node.js | 346 |
| 23 | R | 352 |
| 24 | Java8 | 362 |
| 25 | Nemerle | 368 |
| 26 | Pascal (fpc) | 393 |
| 27 | Java7 | 421 |
| 28 | Lua | 460 |
| 29 | Brainf**k | 1794 |
のようになります。このうち上位20位までの言語(上記の表ではVB.NETまで)では、各言語の最短記録保持者に「ショートコーダー『神』バッジ」・2位以下で上位30%以内の記録保持者には「ショートコーダー『おとな』バッジ」を付与します。21位以下の言語では、最短記録もしくは上位30%以内の記録保持者に「ショートコーダー『おとな』バッジ」を付与します。ただし、『神』・『おとな』両方の条件を満たしている場合は『神』バッジのみ付与されます。
その他
CodeIQの運営方針やシステムの変化と挑戦者の皆さまのご要望を考慮しながらルールの改良を繰り返していく予定です。
ご意見等ございましたら、コメント欄やOzyのtwitterアカウントにメッセージください。