Erlang 先生に家計簿の穴埋めを手伝ってもらった
Erlang 先生に、自分が定食とカレーとうどんをどれだけ食べていたか教えてもらった話。
問題
家計簿 7 日分をつけ忘れてしまった。
- つけ忘れた分は学校の食堂での昼食代。全部で 2,290 円。
- 1 日につき以下のいずれかを 1 つ食べた。
- 定食:370 円
- カレー:350 円
- 肉うどん:300 円
以上の条件から、各メニューを何回食べたかを求める。
コード
以下を lunch.erl というファイルに書く。
Gist: ochaochaocha3/lunch.erl
結果
Erlang シェルで以下の結果が得られた。
$ erl Erlang/OTP 17 [erts-6.3.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Eshell V6.3.1 (abort with ^G) 1> c(lunch). {ok,lunch} 2> lunch:calc(). [[{{set,370},2},{{curry,350},1},{{udon,300},4}]]
というわけで、定食を 2 回、カレーを 1 回、うどんを 4 回食べていたことが分かった。
感想
Wikipedia「ファイル:Nikuudon.jpg」より。Hykw-a4 さん撮影。
肉うどん率高いな!
…というのはどうでもよく、Erlang(に限らずおそらく関数型言語全般)では数学の答えのように簡潔に書けるのがいいな、と思った。
なぜ Erlang に手を出したか
本屋さんで『すごい E 本』を見つけて思わず買ってしまったのがきっかけでした。
- 作者: Fred Hebert,山口能迪
- 出版社/メーカー: オーム社
- 発売日: 2014/07/04
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (7件) を見る
- 作者: Fred Hebert
- 出版社/メーカー: オーム社
- 発売日: 2014/08/11
- メディア: Kindle版
- この商品を含むブログを見る
「Erlang だとサーバーを書きやすい」という噂を見たのもひとつ。私は最近、RGRB(クリエイターズネットワークで使われている IRC ボット)やボーンズ&カーズ(BCDice;どどんとふで使われているダイスボット)といった、IRC ボットのコードを書いているので、こちらの方面に活かすことを目指したい。