Daysこの広告は、90日以上更新していないブログに表示しています。プログラミング言語☆総選挙の問題をClojureでclojure先月、CodeIQでプログラミング言語総選挙なるものをやってました。プログラミング言語★総選挙|CodeIQ内容はおおむね、各人が好きな言語へ投票して言語ごとの得票数を競うものでした。予備選挙をやって、上位の8言語だけが本選挙に勝ち上がれるというやや手の込んだ形式です。ユニークなのは、自分のお気に入りの言語へ投票するには与えられた問題をその言語で解かなければいけないという点。選択可能な言語はIdeoneで実行可能であればOKということみたいだったので、Clojureで問題を解いて一票入れてきました。先週になってようやく問題の解説が出たので、ここで自分の解答を公開しておきます。とも基本的には同じ問題が出題されました。大雑把には、矩形領域の中に格子状に並ぶすべてのマスに対して、上下左右に隣接するマス同士で重複のないペアを作ることができるかどうかを問う問題でした。マスには他とペアになれない"穴"が存在することがある設定になっています。以下のような入力の場合("O"が他のマスとペアになれるマス、"X"がペアになれない"穴"を表す)、OOOOOOOOX次のようなペアの作り方があるので、"yes"と回答します(同じ数字のマスが1つのペアを表すとする)。11233244X一方で、OOOOOXやOOOOOOOXOの場合は、どう頑張ってもペアが作れないので"no"と回答します。解法には単純に深さ優先探索を使いました。問題自体はペアの作り方を求めることを要求してませんが、解答はペアの作り方がある場合には最初に求められたペアの作り方を返すように作ってあります。結果としては、Clojureは得票数3で11位、残念ながら予備選挙を通過することができませんでした。いうのは母数が多くないとなかなか勝ち上がるのは難しいですねー。Haskellはそれでも本選挙まで残って、C#と並んで5位だったみたいですけどね。