CodeIQ

男性と女性の殺人被害者数の関係は?

新しいブログサイトに解説記事を載せました。

【解説】「ヒストグラムと散布図を描いてみよう」

今回の問題はRの初心者向けで、まずデータ読み込み、ヒストグラムと散布図を生成する問題でした。問題は以下の通りです。 世界193カ国の殺人被害者のデータを読み込んで2種のヒストグラムと2種の散布図をPDFファイルに出力してください。読み込む入力ファ…

10「ローマ数字変換器を作ってみよう」の問題と解説

今回はローマ数字を(通常の)アラビア数字に変換するプログラムです。 99名もの方が挑戦してくれました。本当にありがとうございます。問題文 ローマ数字変換器を作ってみよう!ローマ数字をアラビア(通常の)数字に変換するプログラムをPythonで作ってみ…

09再帰の海に棲むドラゴンを描いてみよう【問題と解説】

CodeIQの再帰の海に棲むドラゴンを描いてみように挑戦ありがとうございます。 今回は再帰関数に潜む美しい数学的図形を堪能してもらいたいと思って、出題しました。問題文 再帰の海に棲むドラゴンを描いてみよう今回の問題は再帰関数を使ってC曲線とドラゴン…

06「アッカーマンの呪い」の使用言語ランキング

CodeIQの出題「アッカーマンの呪い」の挑戦者の使用言語ランキングを発表します。Ruby(18)がトップです。 意外なのが、Haskell(13)がJavaと共に3位でした。 再帰関数の問題はHaskellが得意なのでしょうか。 意外に伸び悩んだのがPython(6)とPerl(2)…

08解説:SQLでエレガントにベクトル内積計算

CodeIQの設問「SQLでエレガントにベクトル内積計算」の解説を行います。 問題文 問1下記のような要素4の縦ベクトルが2つあります。 U V [1 [1 3 2 5 3 7] 4] 例えば、ベクトルUはリレーショナルデータベースの表として以下のように表現されます。 Uも同様…

「アッカーマンの呪い」のスタックオーバーフローの対処方法

数多くの方々の「アッカーマンの呪い」への挑戦ありがとうございます。 プログラムは再帰関数で解くのが答えとなっていますが、A(4,1), A(4,2)の計算あたりで、計算爆発が起こり、スタックオーバーフローのエラーが発生し、計算終了となってしまいます。 挑…

07解説:SQLで行列積の計算???

CodeIQの設問「SQLで行列積の計算???」の解説をします。問題文 下記のような4×3の疎行列Aがあります。多くの要素が0となっている行列を疎行列(sparse matrix)といいます。 0 1 -3 2 0 0 0 0 0 -1 0 4 この行列Aは列と行の情報で取り出すと、以下のように表現…

設問6の解説:アッカーマンの呪い

CodeIQに投稿した問題6「アッカーマンの呪い」の解答を解説します。問題 昔、アッカーマンという人(残念ながらミカサという妙齢の女性ではありません)がいました。 その人の手帳には以下のような式が書かれていました。 A(m, n) = m = 0 ならば n + 1 n = …

設問5:PythonでXML解析をしてみよう

CodeIQの設問5について解答します。 問題 日本人の同姓同名データのファイルをXMLパーサのElementTreeを使ってパースしてみよう。 更に、姓と名の漢字の組み合わせを集計してみます。課題person_name.xmlファイルを読み込み、PythonのXMLパーサモジュールEle…

設問4:コマンドを定期的に自動実行させよう!

CodeIQに投稿した設問4の解答を説明します。問題 cron でユーザーのディスク使用量管理管理しているサーバーの全ユーザーのディスク使用状況を知りたいと思い、毎日定時にディスク使用量をログを取ることにしました。UNIX のcron 機能 を使って、定期的に各…

設問3:UNIXのパイプ機能を使って1行コマンド処理をしてみよう!

CodeIQに投稿した設問3の解答を説明します。問題 データをゲノムデータベースサイトGenBankからダウンロードし、解凍します。使用するのはnames.dmpのみです。 ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gznames.dmpは、生物種のデータです。 タブも…

設問2:英語の男女人名の違いを調べてみよう!

CodeIQに出題した設問2の解説。 Pythonの自然言語処理パッケージNLTKをインストールすること。以下のURLを参照して下さい。 http://www.nltk.org/NLTKにはフリーの英語人名データが収録されています。 下記のようにパッケージを読み込んでプログラミングし…

設問1:トークンの出現頻度を集計してみよう!

CodeIQで作成した設問1 Pythonの自然言語処理パッケージNLTKをインストールすること。以下のURLを参照して下さい。 http://www.nltk.org/NLTKにはフリーの電子書籍を有する「グーテンベルク電子出版アーカイブ」プロジェクト のデータが含まれています。nltk…