ソフトウェア開発を行う、クロノス・クラウン合同会社(本社・横浜市)の代表社員 柳井政和は、2015年9月15日  に、プログラマー向けコードパズル サイト「コードダンジョン」を正式公開しました。

□コードダンジョン
http://puzzleandgame.com/ja/code_dungeon/


■ 内容

「コードダンジョン」に掲載されている問題は、コードゴルフの一種です。

コードゴルフは、ゴルフが短い打数を競うように、短いコードで目的の処理を書く遊びです。ショートコーディングとも呼ばれます。

「コードダンジョン」では、そのコードゴルフに加え、ダンジョンのレベルが上がると禁止文字が増え、普通にプログラムが書けなくなっていきます。

たとえば「+ - * / %」といった演算子、「if switch for while」といった予約語、「Math eval」といったオブジェクトや組み込み関数が禁止されます。

そういった条件の中でアルゴリズムを工夫し、目的の処理を実現していきます。

現在、サイトでは19の問題が公開されており、JavaScriptでチャレンジできます。



■ 問題と解答例

● 「FizzBuzzのダンジョン」問題

1から順に整数を数えていき、3で割り切れる時は「Fizz」、5で割り切れる時は「Buzz」、3と5の両方で割り切れる時は「FizzBuzz」と出力する。

変数iが整数の時、「[i, "fizz", "buzz", "fizzbuzz"][????]」の「????」部分を埋めて、上記の出力が得られるコードを作成せよ。

◆ レベル1

「文字数」100文字以内
「禁止文字列」
なし

解答例→ (i%3?0:1)+(i%5?0:2)

◆ レベル2

「文字数」30文字以内
「禁止文字列」
? : & | , $ eval function Function if switch for while return

解答例→ !(i%3)+!(i%5)*2

◆ レベル3

「文字数」40文字以内
「禁止文字列」
? : & | , $ eval function Function if switch for while return
! ^ ~ < > = Math

解答例→ "322"[i%3]-"02222"[i%5]

◆ レベル4

「文字数」70文字以内
「禁止文字列」
? : & | , $ eval function Function if switch for while return
! ^ ~ < > = Math
%

解答例→ "3001021001201000"[i-parseInt(i/15)*15]


■ 「コードダンジョン」まとめ

「コードダンジョン」は、禁止文字付きコードゴルフです。普段は書かないようなアルゴリズム作成に挑み、プログラマーの脳を刺激するコードパズルです。

クロノス・クラウンでは、今後も、楽しさと実用を兼ね備えたコンテンツや技術を提供していきます。

□コードダンジョン
http://puzzleandgame.com/ja/code_dungeon/