CodeIQの問題に挑戦しよう!

結城浩

あなたも、楽しいアルゴリズムの問題に挑戦しませんか?

結城浩は、 CodeIQ というサイトでITエンジニアへ問題を出していました(2013年〜2015年)。

易しすぎず、難しすぎず、コンピュータやプログラミング言語に依存しない問題です。

このページはその時代の記録のために残してあります。

目次


(読み物)『数学ガール』とプログラミングの関係

以下のリンクはCodeIQ MAGAZINEに掲載された「『数学ガール』に登場する三つのスローガンを通して、プログラミングにも使える考え方の一端」を解説した読み物です。


(読み物)結城浩の問題はなぜおもしろいのか?

以下のリンクはCodeIQ MAGAZINEに掲載された「結城浩の問題のおもしろさ」を解説した読み物です。 よろしければお読みください。


問題19. Mayoi(マヨイドーロ) - 713人が挑戦しました!

マヨイドーロ問題

挑戦期間:2015年12月3日〜12月17日(自動採点)

CodeIQ MAGAZINEの解説記事(出題PDF、解説PDFはこちらから)

挑戦者のコードまとめ

正解に達した挑戦者には「結城浩のマヨイドーロバッジ」をサイト上で付与!

正解した方の中から抽選で10名様に、 『数学ガールの秘密ノート/ベクトルの真実』《サイン本》をプレゼント!


問題18. Salvageon(サルベジオン) - 196人が挑戦しました!

サルベジオン社で宇宙船のデータを救え!

挑戦期間:2014年11月27日〜12月15日 (挑戦終了。挑戦者へのフィードバックは12月16日に完了)

挑戦者のコードまとめ

依頼者「難破した無人宇宙船からデータをサルベージしていただきたい」
あなた「データはどんな順序で並んでいるのですか」
依頼者「ドキュメントが残っていないのでわかりません」
あなた「そんなあ!」

最高評価の挑戦者には「結城浩のサルベジオンバッジ」をサイト上で付与!

さらに……最高評価の挑戦者から抽選で10名様に、 『数学文章作法 推敲編』を無料プレゼント!


問題17. Ticketgobble(チケットゴブル) - 334人が挑戦しました!

チケットゴブル社の旅行プランを作れ!

挑戦期間:2014年5月1日〜5月19日 (挑戦終了。挑戦者へのフィードバックは5月20日に完了)

挑戦者のコードまとめ

依頼者「航空チケットをまとめて《プラン》をご提案いただきたい」
あなた「たとえば《ヨーロッパ十日間の旅プラン》のように?」
依頼者「いえ、できるだけ多くの航空チケットをさばくプランです!」
あなた「意味がわかりません!」

最高評価の挑戦者には「結城浩のチケットゴブルバッジ」をサイト上で付与!

さらに……最高評価の挑戦者から抽選で10名様に、 『プログラマの数学』を無料プレゼント!


問題16. Spacetalky(スペーストーキー)- 452人が挑戦しました!

スペーストーキー社の危機を救え!

挑戦期間:2014年4月15日〜4月28日 (挑戦終了。挑戦者へのフィードバックは4月28日に完了)

挑戦者のコードまとめ

あなた「では、中継基地で使っているソースコードを調べさせてください」
依頼者「申し上げにくいのですが、ソースコードもドキュメントも存在しません」
あなた「それでは、私に何をどうせよと!」

最高評価の挑戦者には「結城浩のスペーストーキーバッジ」をサイト上で付与! さらに……最高評価の挑戦者から抽選で10名様に、 『数学ガールの秘密ノート/丸い三角関数』を無料プレゼント!


問題15. Cryptan(クリプタン) - 92人が挑戦しました!

クリプタン帝国の暗号文を解読しよう!

挑戦期間:2014年3月7日〜3月31日 (挑戦終了。挑戦者へのフィードバックは4月6日に完了)

依頼者「ともかく、あなたのお仕事は暗号解読です」
あなた「この《暗号プログラムの構成図》はずいぶんあっさりした……」
依頼者「あなたは優秀なプログラマ。不明点は推測できると期待しています」
あなた「ど、努力します!」

最高評価の挑戦者には「結城浩のクリプタンバッジ」をサイト上で付与! さらに……最高評価の挑戦者から抽選で10名様に、 『数学ガールの誕生』を無料プレゼント!


問題14. Gemstring(ジェムストリング)- 233人が挑戦しました!

王女様の宝石パターンを見つけよう!

挑戦期間:2014年1月21日〜2月12日 (挑戦終了。挑戦者へのフィードバックは2月14日に予定)

挑戦者のコードまとめ

依頼者「王女様の帯は毎日ちがう宝石パターンで飾られます」
あなた「さぞ美しいでしょうな」
依頼者「ところが王女様はご立腹なのです」
あなた「は?」
依頼者「王女様の求める宝石パターンが何日目に現れるか、誰もわからないからです!」

最高評価の挑戦者には「結城浩のジェムストリングバッジ」をサイト上で付与! さらに……最高評価の挑戦者から抽選で10名様に、 『数学ガールの秘密ノート/整数で遊ぼう』を無料プレゼント!


問題13. Numdot(ナムドット) - 256人が挑戦しました!

古代文献を復元しよう!

挑戦期間:2013年9月12日〜9月24日(予定) (挑戦終了。挑戦者へのフィードバックは9月25日に完了)

依頼者「発掘の際に古代文献の一部が破損してしまいました」
あなた「それはもったいないですね」
依頼者「そこであなたへ依頼ですが」
あなた「は?」
依頼者「あなたに破損部分を補完してほしいのです!」

最高評価の挑戦者には「結城浩のナムドットバッジ」をサイト上で付与! さらに……最高評価の挑戦者から抽選で1名様に、 【Amazon.co.jp限定特典小冊子付き】数学ガールセットを無料プレゼント!


問題12. Crossing(クロッシング) - 432人が挑戦しました!

交差点をすばやく数えよう!

挑戦期間:2013年8月19日〜9月2日 (挑戦終了。挑戦者へのフィードバックは9月3日に完了)

あなた「結局、交差点の数を数えればいいのですね」
依頼者「その通りです」
あなた「おそらく、すぐに開発できますよ」
依頼者「開発はゆっくりでもいいですが」
あなた「は?」
依頼者「実行は高速でなければいけません!」

最高評価の挑戦者には「結城浩のクロッシングバッジ」をサイト上で付与! さらに……最高評価の挑戦者から抽選で10名様に、 『数学ガールの秘密ノート/式とグラフ』を無料プレゼント!


問題11. Deepest(ディーペスト) - 154人が挑戦しました!

星間飛行ルートを作ろう!

挑戦期間:2013年7月22日〜8月5日 (挑戦終了。挑戦者へのフィードバックは8月6日に完了)

あなた「星間飛行ルートを作るお仕事ですね」
依頼者「その通りです。start星からdeepest星までのルートです」
あなた「あとは情報一式をいただければ」
依頼者「すみませんが、情報一式はお渡しできません」
あなた「は?」

最高評価の挑戦者には「結城浩のディーペストバッジ」をサイト上で付与! さらに……最高評価の挑戦者から抽選で10名様に、 結城浩原作の『数学ガール/フェルマーの最終定理』コミックス最新刊 を無料プレゼント!


問題10. Shufflers(シャフラーズ) - 138人が挑戦しました!

シャッフルされた断片情報からデータを復元しよう!

挑戦期間:2013年5月20日〜6月3日 (挑戦終了。挑戦者へのフィードバックは6月7日に完了)

あなた「壊れたユーザ一覧ファイルを復元するお仕事ですね!」
依頼者「その通りです。途中までは復元できているのですが……」
あなた「そうですか、助かります」
依頼者「ただ、一部がシャッフルされていますのでご注意ください」
あなた「シャッフルされてる?」

最高評価の挑戦者には「結城浩のシャフラーズバッジ」をサイト上で付与!


問題9. Toggle(トグル) - 199人が挑戦しました!

トグルスイッチを切り換えよう!

挑戦期間:2013年5月6日〜5月27日 (挑戦終了。挑戦者へのフィードバックは5月27日に完了)

あなた「トグルスイッチをパチパチ切り換えるお仕事と聞きました」
管理者「その通りです」
あなた「わかりました! がんばりますよ!」
管理者「ちょっとした規則があるのでご注意ください」
あなた「ちょっとした規則とは?」

最高評価の挑戦者には「結城浩のトグルバッジ」をサイト上で付与! さらに……最高評価の挑戦者から抽選で10名様に、 結城浩の『数学文章作法 基礎編』 を無料プレゼント!


問題8. PigData(ピッグデータ) - 53人が挑戦しました!

“ピッグデータ”に負けないで!

挑戦期間:2013年4月24日〜5月20日 (挑戦終了。挑戦者へのフィードバックは5月24日に完了)

顧客「ピッグデータについて困っているんです」
あなた「ビッグデータならおまかせください」
顧客「いや、ビッグデータじゃなくて、《ピッグデータ》です」
あなた「はあ?」
顧客「大量のデータで困ってるんです」
あなた「は、はあ……」


問題7. Ringo(リンゴ) - 169人が挑戦しました!

リンゴ列をもっと短く!

挑戦期間:2013年4月1日〜4月22日 (挑戦終了。挑戦者へのフィードバックは4月27日に完了)

あなた「じゃ、がんばってプログラムを書きますよ」
大臣「いや、プログラムはもう変更できません」
あなた「といいますと?」
大臣「もうシステムは完成しているんです」
あなた「はあ……」
大臣「あなたが変えられるのは《文字リンゴ対応表》だけなのです」
あなた「え?」

最高評価の挑戦者には「結城浩のリンゴバッジ」をサイト上で付与!


問題6. Triany(トリアニー) - 65人が挑戦しました!

記憶装置トリアニーの謎を解け!

挑戦期間:2013年3月11日〜4月1日 (挑戦終了。挑戦者へのフィードバックは4月13日に完了)

博士「やったぞ。新しい記憶装置の完成だ!」
助手「新しい記憶装置ですって?」
博士「もう低レベルインタフェースは定めた。これを使えばさまざまなデータ構造が作れるぞ」
助手「すごいですね!」
博士「作るのはキミだよ」
助手「え?」

※挑戦者への注意: これは「ウチに来ない?」問題です。 (詳しい説明)


問題5. Curry(カレー) - 154人が挑戦しました!

最高のカレーを作れ! (挑戦終了。挑戦者へのフィードバックは3月15日に完了)

挑戦期間:2013年2月18日〜3月11日(挑戦人数は154人でした)

「カレールー」ならぬ「カレールール」に合った《スパイス》を慎重に選んで最高のカレーを作ってください!

弟子「師匠!秘伝のカレーをお教えください!」
師匠「秘伝のカレーはな、自分で見い出すものじゃ…」
弟子「せ、せめてヒントだけでも…」
師匠「カレーの《スパイス》には相性の良い《ブレンド》というものがある」
弟子「《スパイス》をうまく選ぶんですね!」
師匠「そうじゃ…そうすればポイントが高くなる」
弟子「ポイント?」

最高評価の挑戦者には「結城浩のカレーバッジ」をサイト上で付与!


問題4. Choco(チョコ) - 168人が挑戦しました!

チョコの量を減らせ! (挑戦終了。挑戦者へのフィードバックは2月20日に完了)

挑戦期間:2013年2月1日〜2月14日(バレンタインデーまで。挑戦人数は168人でした)

与えられた個数の立方体を組み上げて、 できるだけ表面積の小さな直方体を作りましょう。 コンピュータを使わなければおそらく解けない問題です。 でも、アルゴリズムをよく吟味しないとたいへんなことに。 コンピュータと協力して表面積最小の直方体を見つけてください。

最高評価の挑戦者には「結城浩のチョコバッジ」をサイト上で付与!


問題3. Scissors(ハサミ) - 128人が挑戦しました!

ハサミを使うタイミング (挑戦終了。解説は下記のWebサイトをご覧ください)

2013年1月22日〜1月30日(1月23日で受付人数128名に達したため終了、1月25日にフィードバック完了)

長方形の紙をハサミで切ります。 指定した回数だけハサミを使うことになる長方形を探してください。

この問題は、 技術評論社のWebサイトのコラボ企画になっていて、 解答ならびに解説は公開される予定です。 以下のサイトをチェックしてください。

エンジニアのスキルを試すコードパズル ─この問題,あなたは解けますか?


問題2. Nick(ニックネーム) - 129人が挑戦しました!

グループを作ろう! (挑戦終了。解説は書籍化をお待ちください)

2013年1月16日〜1月30日(1月18日で受付人数128名に達したため終了、1月19日にフィードバック完了)

「このニックネームとあのニックネームは実は同じ名前である」というデータがたくさん与えられます。 そのデータをもとにして「同じニックネーム」をすべて集めてください。


問題1. Bits(ビッツ) - 129人が挑戦しました!

《あるルール》を、見つけ出せ! (挑戦終了。解説は書籍化をお待ちください)

2013年1月7日〜1月29日(1月8日で受付人数128名に達したため終了、1月11日にフィードバック完了)

《あるルール》に基づいて'0'と'1'の羅列が書かれているテキストが与えられます。 そのうちの一部分が'?'で隠されていますので、 《あるルール》を見つけ出して全体を完成させてください。


結城からのお願い

  • 挑戦者受付が終了するまでは、ネタバレになるようなツイートやブログ記事などはご遠慮ください。
  • 結城が出題した問題に限り、挑戦者受付が終了した後ならば、ツイートやブログ記事などご自由にどうぞ。
  • その際にはこの「CodeIQの問題に挑戦しよう!」のページにリンクしてくださるとうれしいです。
  • 優秀解答者/面白解答者は結城が出版する(かもしれない)本でニックネームと解答内容と評価のポイントを掲載させていただくことがあります。
  • 2013-04-02 追記: 結城が提示した長い問題文を全文転載するのはご遠慮いただけるとありがたいです。要点をまとめたり一部を引用するなどしてください。

書籍紹介

書籍『数学文章作法 基礎編』

本書『数学文章作法(さくほう) 基礎編』では、 「正確で読みやすい文章を書く心がけ」 をお話しします。 数式まじりの説明文が題材の中心ですが、 説明文を書く人ならどなたにも役立つ内容です。

  • はじめに
  • 第1章 読者
  • 第2章 基本
  • 第3章 順序と階層
  • 第4章 数式と命題
  • 第5章 例
  • 第6章 問いと答え
  • 第7章 目次と索引
  • 第8章 たったひとつの伝えたいこと
  • 参考文献
  • 索引

アマゾンで購入する

書籍『プログラマの数学』

『プログラマの数学』は、プログラミングに助けとなる「数学的な考え方」を学ぶ本です。

わかりやすい説明、たくさんの図、楽しいクイズやパズルを通して、

プログラミングに役立つ「数学的な考え方」を学びましょう。

  • 第1章 ゼロの物語 ―― 「ない」ものが「ある」ことの意味
  • 第2章 論理 ―― trueとfalseの2分割
  • 第3章 剰余 ―― 周期性とグループ分け
  • 第4章 数学的帰納法 ―― 無数のドミノを倒すには
  • 第5章 順列・組み合わせ ―― 数えないための法則
  • 第6章 再帰 ―― 自分で自分を定義する
  • 第7章 指数的な爆発 ―― 困難な問題との戦い
  • 第8章 計算不可能な問題 ―― 数えられない数、プログラムできないプログラム
  • 第9章 プログラマの数学とは ―― まとめにかえて
  • 付録:機械学習への第一歩
  • 付録:読書案内

アマゾンで購入する