こころがホッコリー

ただイカしたRubyistになりたい人生だった。

会社の開発合宿で、任意のメソッド呼び出しを監視するgemを作ってきた話

現職の開発部では、半年に一度ぐらいのペースで、開発合宿を開催しています。
その中で、今回は「プロダクションコードを変更せず、任意のメソッド呼び出しを監視できるgem」を作成してきたので、簡単にその紹介をしたいと思います。 (まだ、rubygems.orgには登録していません)

開発合宿の様子について興味がある方は、会社の開発部ブログの方をご覧ください。

texta.pixta.jp

続きを読む

「プログラマ脳を鍛える数学パズル」の問題をRubyで解いてみた #5 (Q:15)

プログラマ脳を鍛える数学パズル」の回答記事、第5回目です。

問題文については、残念ながら転載が禁止されていますので、本連載(?)では自分の回答コードのみを掲載していきます。
気になってしまった方は、本を実際に購入し、解いてみることをオススメします。

Q15「階段で立ち話」の回答コード

もちろん、私が書いたコードなので、模範回答ではありません。
コード中で使っている、measure doについては、過去記事で書いているので、こちらをご参照ください。

「プログラマ脳を鍛える数学パズル」の問題をRubyで解いてみた #4

プログラマ脳を鍛える数学パズル」の回答記事、第4回目です。

問題文については、残念ながら転載が禁止されていますので、本連載(?)では自分の回答コードのみを掲載していきます。
気になってしまった方は、本を実際に購入し、解いてみることをオススメします。

Q4「棒の切り分け」の回答コード

もちろん、私が書いたコードなので、模範回答ではありません。
コード中で使っている、measure doについては、過去記事で書いているので、こちらをご参照ください。

「プログラマ脳を鍛える数学パズル」の問題をRubyで解いてみた #3

プログラマ脳を鍛える数学パズル」の回答記事、第3回目です。

問題文については、残念ながら転載が禁止されていますので、本連載(?)では自分の回答コードのみを掲載していきます。
気になってしまった方は、本を実際に購入し、解いてみることをオススメします。

Q3「カードを裏返せ」の回答コード

もちろん、私が書いたコードなので、模範回答ではありません。
コード中で使っている、measure doについては、過去記事で書いているので、こちらをご参照ください。

2回目が難しかっただけに、3回目は拍子抜けな感じでした。
力任せにぶんぶん振り回せば、答えが出てくる感じです。

Q3は、力任せにプログラムで解くのではなく、数学的に回答を導き出す方法が書籍の解説に載っています。
が、自分が同じことをパッとできるかというと、難しい気がしています......。
今後とも本連載では、多少力任せになっても、プログラムで解くことになりそうです。

「プログラマ脳を鍛える数学パズル」の問題をRubyで解いてみた #2

プログラマ脳を鍛える数学パズル」の回答記事、第2回目です。

問題文については、残念ながら転載が禁止されていますので、本連載(?)では自分の回答コードのみを掲載していきます。
気になってしまった方は、本を実際に購入し、解いてみることをオススメします。
(実務経験数年のエンジニア何人かの勉強会で、みんなで解いていますが、結構難しいです)

Q2「数列の四則演算」の回答コード

もちろん、私が書いたコードなので、模範回答ではありません。
コード中で使っている、measure doについては、過去記事で書いているので、こちらをご参照ください。

2回目から重たい問題でした....。
evalで、組み立てた数式を評価させればいい、
というところまでは割とたどり着くのですが、
その「数式を組み立てる」という部分が大変です。
本回答では、productという、Array同士の組み合わせを生成するメソッドを使ってみました。
また、0除算や、不正な数値(08など)を避けるために、苦しいですが正規表現でevalにかける前にガードしています。
模範回答よりは桁数変更への柔軟性を持たせられたと思いますが......2問目からこの難しさ、先が思いやられます。