ISBN 9784798142456

プログラマ脳を鍛える数学パズル : シンプルで高速なコードが書けるようになる70問

プログラマ脳を鍛える数学パズル : シンプルで高速なコードが書けるようになる70問
著者
増井敏克
出版社
翔泳社
刊行
2015-10

概要

数学パズル70問を解くことでアルゴリズム的思考を身につける

想定読者

プログラミング基礎を習得済みで、アルゴリズムやコード品質を実践的に鍛えたい中級者手前のエンジニア

こんな人には向いていない

  • アルゴリズムやデータ構造を体系的に学びたい人。理論的な説明より問題演習が中心のため、体系的な入門書を先に読むことを推奨する
  • 競技プログラミングの上位難度に取り組んでいる経験者。収録問題の難易度は基礎〜中程度であり、発展的な最適化手法には踏み込まない
  • 特定言語の文法を学びたい人。解法コードはRuby・JavaScriptで示されており、言語習得を主目的とする書籍ではない

読了後にできるようになること

  • 全探索・再帰・メモ化などの基礎アルゴリズムパターンを問題解決を通じて体感できる
  • 問題の制約をコードに落とし込むことでループ処理を削減し、実行速度を改善する思考法
  • 組み合わせ・数列・グラフ探索など多様な数学的題材を通じてアルゴリズムの適用範囲を把握できる
  • 自分の解法と著者の解法を対比することで、シンプルなコードに向けた設計判断を学べる
  • 回文・素数・グレイコード・迷路探索といった古典的パズルを実装し、コード読解力を養える

本書のキー概念(章解説)

  • 第 1 章 数・数列に関する問題 — 回文・四則演算・フィボナッチ数列など数論の基礎。アルゴリズム入門に最適な章
  • 第 2 章 論理・集合・場合の数に関する問題 — 排他的論理和・魔方陣・組み合わせ計算を扱う。ビット演算の直感的理解に役立つ
  • 第 3 章 グラフ・木に関する問題 — しりとり経路・友達ネットワーク・迷路探索など実務で頻出のグラフ探索を扱う章
  • 第 4 章 整数・素数に関する問題 — 素数マトリックス・グレイコードなどを通じて数学的美しさとアルゴリズムの接点を体験できる

ハイライト

  • パズルを解くうちにアルゴリズムが身につき、シンプルで高速なコードが書けるようになります。楽しみながらスキルアップもできて一石二鳥。(本書の学習効果を端的に示す記述。演習を通じた自然なアルゴリズム習得を訴求する核心部分)
  • 急速な技術の進歩、システム開発競争の激化…。プログラマを取り巻く環境はやさしいものではありません。でも、思い出してみてください。自分の書いたソースコードでプログラムが動くのを初めて見たとき。(プログラミングの本質的な楽しさを問い直す導入。読み手の動機づけを刺激する部分として選定)

外部からの言及

  • 本書の問題をPythonやPHPで解く記事が複数投稿されており、言語を問わず解法を実装する教材として活用されている。特に回文・両替・数列の四則演算といった基礎問題が繰り返し取り上げられており、アルゴリズム入門段階の演習素材として継続的に参照されている(qiita)
  • 著者自身が本書に収録できなかった問題を別記事で公開しており、数学的難易度や対象読者とのマッチングを意識した選書基準が示されている。続編(プログラマを育てる脳トレパズル)との位置づけの違いも明確にされている(qiita)

編集メモ

Qiita確認記事数は少数(主要記事4件程度、合計likes約73)、楽天ランキング情報なし。アルゴリズム入門書カテゴリの補完的な選択肢として位置づける

読む前に押さえておきたいこと

  • 変数・条件分岐・ループ・関数などのプログラミング基礎を一通り習得していること
  • 配列や文字列操作を自力でコードに書けるレベルの経験
  • 高校数学程度の整数・組み合わせ・グラフの概念への親しみ(厳密な証明は不要)

学習のコツ

  • まず自力で実装を試みてから著者の解答と比較する読み方が効果的。解けなくても答えを見た後に自分でゼロから書き直す一手間が定着を早める
  • 使い慣れた言語で全問を解き直すと、本書がRuby・JavaScript前提でも効果は失われない。自分の言語で解いた後に著者コードと設計思想を比較するのが活用の要
  • グラフ・迷路系の問題(Q19・Q64など)は、後半のアルゴリズム練習に向けて先に読んでおくと前半問題の文脈理解が深まる
  • 続編『もっとプログラマ脳を鍛える数学パズル』と合わせて読む際は、本書を先に全問消化してから移行すると難易度の段差を感じにくい
出版社による内容紹介

パズルを解くコードを、あなたは書けるか? アルゴリズムがみるみるわかる!プログラミングってやっぱり面白い! 急速な技術の進歩、システム開発競争の激化…。プログラマを取り巻く環境はやさしいものではありません。でも、思い出してみてください。自分の書いたソースコードでプログラムが動くのを初めて見たとき。思い描いた通りのプログラムができたとき。プログラミングの楽しさを感じたことでしょう。何もないところからソースコードだけで新たな価値を生むプログラマは、非常に魅力的な職業です。 本書で登場する数学パズルは、そのようなワクワクにあふれています。「両替したときの硬貨の組み合わせはいくつ?」のような問題から、「国名でしりとりしたときに、一番長く続く順番は?」「運命の出会いは何通り?」というものまで、70の問題を解くコードを、3人のキャラクターたちと一緒に考えていきます。 パズルを解くうちにアルゴリズムが身につき、シンプルで高速なコードが書けるようになります。楽しみながらスキルアップもできて一石二鳥。さっそく挑戦してみましょう! 【本書に収録されている問題(抜粋)】 Q01 10進数で回文 Q03 カードを裏返せ Q08 優秀な掃除ロボット Q19 つりあわない男女 Q21 排他的論理和で作る三角形 Q33 百人一首の達人 Q45 素数のマトリックス Q48 グレイコードのループ Q53 いたずらされたお菓子 Q64 迷路で待ち合わせ 【本書に収録されている問題(抜粋)】 Q01 10進数で回文 Q02 数列の四則演算 Q03 カードを裏返せ Q08 優秀な掃除ロボット Q09 つりあわない男女 Q11 フィボナッチ数列 Q14 W杯出場国しりとり Q19 友達の友達は友達? Q20 受難のファサードの魔方陣 Q21 排他的論理和で作る三角形 Q33 百人一首の達人 Q35 運命の出会いは何通り? Q37 サイコロの反転 Q45 素数のマトリックス Q48 グレイコードのループ Q51 パーフェクトシャッフル Q53 いたずらされたお菓子 Q55 横着なそろばん Q58 最速の連絡網 Q64 迷路で待ち合わせ

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。