読者です 読者をやめる 読者になる 読者になる

Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

Zellerの公式

Ruby

[改訂第3版]を購入して以来、かなり久しぶりに『[改訂第7版]LaTeX2ε美文書作成入門』を購入してみました。第3版のときには、第4章「パッケージと自前の命令」のところは斜め読みでしたが、今回は丁寧に読み進めてみました。p75にZellerの公式を使って日付の曜日を求めるマクロが紹介されています。一見単純そうに見える計算で本当に計算できているのかRubyを使って試してみました。

変数名など、できるだけ忠実に書き換えたつもりです。

それにしても、これ(↓)懐かしいです。学生時代、\LaTeXに悪戦苦闘した当時のことを思い出します。

LATEX美文書作成入門―パソコンによる文書レイアウト

LATEX美文書作成入門―パソコンによる文書レイアウト

zeller.rb

実行例

$ ruby zeller.rb
土

[改訂第7版]LaTeX2ε美文書作成入門

[改訂第7版]LaTeX2ε美文書作成入門

授業時間 100%活用 スポーツ脳はこう鍛えろ!

Book

勉強することは大切だと思っていますが、自分がスポーツ選手であるわけでもなく、またスポーツ選手を育てる立場に身を置くわけでもないので、今までスポーツ脳を鍛えようなどとは思ったことはありません。なので、この本を同僚から紹介してもらわなければ、まず自分からこの本を手にとって読むことはなかったと思います。そう考えると、本との出会いというのは不思議なものですね。以前より人からお薦めと紹介してもらった本は必ず読むということを大切にしているのですが、今回もその流儀を守ってよかったと思っています。

本書は、サッカーをやっていなくても、またはサッカーの指導者でなくても、どんなスポーツをやっている人でも、またはスポーツをやっていない人でも、すべての学生、社会人にとって学びがある本ではないでしょうか。あらゆるものごとに対して、これをやることが人生に役に立つかとか立たないを考えるのではなく、どうすれば役立てられるかという視点に立つことこそが重要なことなんだと気づかせてくれたような気がします。

換字暗号

C 情報処理技術者試験

CodeIQに基本情報技術者試験の午後問題が出ていたので解いてみました。基本情報の過去問を解くのは数年ぶりです。

せっかくなので、実際に入力して試してみました。

h27_fe_pm9.c

実行例

$ gcc -fwritable-strings h27_fe_pm9.c && ./a.out
Evapgvnom5(y..)zvfm6jwra1
VCa

疑問点

コンパイルするときに、-fwritable-stringsオプションをつけたのですが、ポインタ配列のそれぞれの要素をenv_str関数に渡すにはどうすればいいのでしょう? そもそも、このケースではポインタ配列は使うべきではないのでしょうか?

レーベンシュタイン距離

Ruby

レーベンシュタイン距離については、単語も中身も知っていたつもりなんですが、「文字列の違いを評価しよう | CodeIQ」に取り組んでみて、実は全く分かってなかったということが分かりました。

問題に取り組む前に、レーベンシュタイン距離(Wikipedia)で紹介されている疑似コードをRubyで書いてみました。やっぱり頭を使って、手を動かして、しっかり理解することが大切だと実感しました。分かったつもりはいけないですね。

levenshtein_distance.rb

実行例

$ ruby levenshtein_distance.rb
kitten
sitting
3

感想

火車

Book Ruby

我が家の本棚にずっと眠っていた本。定価が857円の頃に購入していたようです。ボリュームのある本なので、少し読んでは挫折してというのを繰り返して、ようやく読み終えることができました。分水嶺を越えると一気に読むことができると思うのですが、そこを超えられずにいました。今、思うとなんで一気に読まなかったんだろうと思うほど、満足度が高い本でした。

現代に生きる人にとってクレジットカードは無くてはならない存在になりつつあるのではないでしょうか。ガソリンを入れるとき、ネットショッピングを利用するとき、なんの躊躇いもなく利用しています。特に学校教育で、その危険性について学んだわけでもないのに分別ある使い方ができているのは、ただ単に運が良かっただけなのかもと思うと少し怖い気もしてきます。今から社会に巣立つ若い人には、しっかりと教育することが必要だと強く感じ、以下のようなスクリプトを作ってみました。

dept.rb

実行結果

その1
$ ruby dept.rb
年利(%)は? 10
借入れ金額は? 1000000
月々の返済額は? 20000
返済するのに、5年と8ヶ月かかります。
その2
$ ruby dept.rb
年利(%)は? 10
借入れ金額は? 2000000
月々の返済額は? 20000
返済するのに、18年と10ヶ月かかります。
その3
$ ruby dept.rb
年利(%)は? 10
借入れ金額は? 3000000
月々の返済額は? 20000

年利10%、借入れ金額300万円、月々の返済額が2万円だと無限ループに陥ってしまうということは一生かかっても返済できないということを意味しています。しっかりとした複利の感覚を持たないといけないですね。

火車 (新潮文庫)

火車 (新潮文庫)

爆発的進化論―1%の奇跡がヒトを作った―

Book

今まで自分の興味関心のある分野の本しか読んでこなかったのですが、ふとしたことがきっかけで、それこそ1%の奇跡的な本書との出会いによって、新たなことを学び始めることができました。やっぱり食わず嫌いはいけないですね。わからないことばかりでしたが、楽しく読み進めることができました。今まで、生命の起源について考えたこともなかったですが、考えてみると興味深い世界だと思います。

以下、読みながら調べたことをメモしておきます。

第1章 膜

第2章 口

第3章 骨

第4章 眼

第5章 肺

第6章 脚

第7章 羽

第8章 脳

第9章 性

第10章 脳

爆発的進化論―1%の奇跡がヒトを作った―(新潮新書)

爆発的進化論―1%の奇跡がヒトを作った―(新潮新書)

TSVの指定カラムの数値を手軽に棒グラフにして分かりやすくする

Ruby

最近、コンピュータをワープロとしてしか使ってなかったので、リハビリを兼ねて

Rubyで書き直してみました。

tsv2bargraph.pl.rb

入力データ(2009.tsv): 空白のところはタブです。

2009-01  439 69305
2009-02 336 45463
2009-03 373 45845
2009-04 430 46441
2009-05 306 49709
2009-06 407 66057
2009-07 551 88944
2009-08 402 60289
2009-09 442 52836
2009-10 505 59128
2009-11 557 71414
2009-12 525 81157

実行例

第3カラム(5桁の数値の列)を指定(-k 3)、長さはマックス30文字(-w 30)、使う文字はピリオド(-c .)

$ ./tsv2bargraph.rb -k 3 -c . -w 30 2009.tsv
2009-01 439 69305   .......................
2009-02 336 45463   ...............
2009-03 373 45845   ...............
2009-04 430 46441   ...............
2009-05 306 49709   ................
2009-06 407 66057   ......................
2009-07 551 88944   ..............................
2009-08 402 60289   ....................
2009-09 442 52836   .................
2009-10 505 59128   ...................
2009-11 557 71414   ........................
2009-12 525 81157   ...........................

ちょっと見やすく

$ ./tsv2bargraph.rb -k 3 -c x -w 50 2009.tsv | cut -f1,4
2009-01 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-02 xxxxxxxxxxxxxxxxxxxxxxxxx
2009-03 xxxxxxxxxxxxxxxxxxxxxxxxx
2009-04 xxxxxxxxxxxxxxxxxxxxxxxxxx
2009-05 xxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-06 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-07 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-08 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-09 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx