roombaの日記

読書・非線形科学・プログラミング・アート・etc...

2015年8月に読んだ本まとめ

はじめに

しばらくブログから遠ざかってしまいました。もう9月も終わりに近づいていますが、8月に読んだ18冊を記しておきます。

roomba.hatenablog.com


今月は「理系っぽい本」「小説(海外)」「小説(国内)」「その他(エッセイ・新書等)」の4つに分類しました。小説多めです。

各本について、タイトル・リンク・読書メーターに書いた感想(一部追加・修正あり・非ですます調)の順に記します。↓↓↓

続きを読む

某エンブレムをフラクタル化して無限にズームし、面積も求める

はじめに

東京オリンピックのエンブレムについて一悶着あったようですね。詳しいことは知りませんが、エンブレムの面積を計算している方がいて人生楽しそうだなと感じました。

togetter.com

この姿勢を見習い、本記事ではエンブレムをフラクタルっぽくしてみることにします。さらに、フラクタル図形は無限に細かい形状といえるので、HTML5Canvasを用いて無限にズームし続けるアニメーションを製作します。そして最後に、こうしてできたフラクタル図形の面積を計算して締め括ることとします。

参考:フラクタル図形とは、図形の部分と全体が自己相似になっているようなマトリョーシカ的図形のことです↓
フラクタル - Wikipedia

続きを読む

2015年7月に読んだ本まとめ

はじめに

毎月恒例の記事です。7月は12冊(kindle版含む)読んだみたいです。roomba.hatenablog.com


今月は少なめなので、「小説・音楽・その他」の3つに分類しました。各本について、タイトル・リンク・読書メーターに書いた感想(一部追加・修正あり・非ですます調)の順に記します。↓↓↓

続きを読む

モールス符号の「地図」

謎の遺跡

ある遺跡を考えます。唯一の入口からその遺跡の中に入ると2つの扉があり、扉にはそれぞれ「・」「ー」という2種類の文字が書いてあります。
f:id:roomba:20150728201135j:plain
試しに「・」と書かれた扉を開き、隣の部屋に移動すると、またもや「・」「ー」と書かれた2つの扉があります。先ほどの部屋と違うのは、扉と扉の間に「E」と書かれていることです。
f:id:roomba:20150728201136j:plain
今度は「ー」と書かれた扉を開き、隣の部屋に移動すると、やっぱり「・」「ー」と書かれた2つの扉があって、その間には「A」という文字が書かれていました。

……この遺跡を探検すると、どのような間取りになっているのでしょうか?

遺跡の「地図」

ある人がこの遺跡を調査した結果、以下の地図のように部屋がつながっていることが判明しました。一番上が入口の中の部屋で、下に行くほど遺跡の奥に対応します。
f:id:roomba:20150728201132j:plain

この地図を使えば、好きな部屋に迷わず行くことが可能になります。
たとえば、「A」と書かれた部屋に行きたければ、最初に「・」の扉を開き、次に「ー」の扉を開けばよいことになります。この経路を地図上に描くと、以下のようになります。
f:id:roomba:20150728201133j:plain

他にも、「B」と書かれた部屋に行きたければ、最初に「ー」の扉を開き、それから「・」→「・」→「・」と扉を開いていけばよいことになりますね(下図)。
f:id:roomba:20150728201134j:plain

それ以外のどのアルファベットの場合にも、適切な道筋を辿ることによってそのアルファベットが書かれた部屋に行くことが可能です。

地図上の道筋リストとモールス符号

ここで、「Aと書かれた部屋に行く道筋」「Bと書かれた部屋に行く道筋」……「Zと書かれた部屋に行く道筋」をリストアップしてみます。前章の例では、「・」→「ー」と扉を開けばAの部屋に辿り着くので

A: ・ー

となり、「ー」→「・」→「・」→「・」と扉を開けばBの部屋に辿り着くので

B: ー・・・

のようになります。同様に全てのアルファベットについてリストアップすると、以下の表のようになります。先ほどの「地図」と比べてみて下さい。

文字道筋文字道筋
A・-N-・
B-・・・O---
C-・-・P・--・
D-・・Q--・-
ER・-・
F・・-・S・・・
G--・T
H・・・・U・・-
I・・V・・・-
J・---W・--
K-・-X-・・-
L・-・・Y-・--
M--Z--・・

勘のいい方は気が付いたかもしれませんが、これはモールス符号の対応表に他なりません。…というか、タイトルに思いっきり「モールス符号」と書いちゃっているので、何を勿体ぶってるんだという感じですね。

「地図」を用いたモールス信号の解読

前章で述べた「道筋リスト」がモールス符号の対応表であるという事実から、冒頭の遺跡の正体はモールス信号の解読装置であったと言うことができます。なぜなら、例えば「-・-・」というモールス信号が与えられたとすれば、「-・-・」の順に扉を開いて行った先に解読後のアルファベット「C」を見つけることができるからです。

遺跡が「・」と「ー」によるモールス信号の解読装置であることが分かったところで、先ほどの「地図」を見直してみましょう。
f:id:roomba:20150728201132j:plain


この地図は、一般的なモールス符号表よりもモールス信号の解読に適しています。なぜなら、地図の一番上からスタートし、「・」や「ー」といった信号を受け取るたびに枝分かれ先へ進んでいけば、行き着いた先のアルファベットを見るだけで解読できるからです。同じ解読作業を以下の表(再掲)で行おうとすると、暗記でもしていない限り大変だと思います。

文字道筋文字道筋
A・-N-・
B-・・・O---
C-・-・P・--・
D-・・Q--・-
ER・-・
F・・-・S・・・
G--・T
H・・・・U・・-
I・・V・・・-
J・---W・--
K-・-X-・・-
L・-・・Y-・--
M--Z--・・

逆に、「アルファベット→モールス信号」の変換を行うには、アルファベット順に並んでいる表の方が良いでしょう。一長一短ですね。

なぜこのように符号化されているのか?

再び「地図」を見てみます。

f:id:roomba:20150728201132j:plain

これを見ると、なぜA〜Zがこんなにバラバラに配置されているのだろう?という疑問が生じます。上からABCと並べればよさそうなのに、2段目にEとT、3段目にはI、A、N、Mといった配置になっています。

その答えは、Wikipediaの以下の記述にあります。

策定については、標準的な英文におけるアルファベットの出現頻度に応じて符号化されており、よく出現する文字ほど短い符号で表示される。例を挙げると、Eは(・)、Tは(-)とそれぞれ1符号と最短である。逆に使用頻度が少ないと思われるQは(--・-)、Jは(・---)と長い符号が制定されている。

モールス符号 - Wikipedia


なるほど、使用頻度の高い文字が短い符号で表せるようになっていたわけですね。納得納得。

おわりに

本記事のようにモールス符号木構造?で表した図はいくらでもあるだろうと思っていたのですが、適当にググっても見当たらなくてケシカランと思い、記事にしてみました。

なお、冒頭の遺跡と扉のメタファーは以下の本を真似しました(この本にモールス符号に関する記述があるわけではありません)。まだ読み始めたところですが、物語を通してオートマトン形式言語を学べる良書の予感がします。

球充填のボロノイ・セルを視覚的に理解する

はじめに

ケプラー予想に関する本を先日読みました。ケプラー予想とは、ザックリと言えば「球を最も効率よく詰め込む方法は、果物屋がオレンジを積む方法*1と同じ」という予想です。ちょっとオレンジを積んでみれば誰でも思い付くような配置なので、予想自体は誰もが当然と思うような内容なのですが、その証明には400年もの歳月が必要だったそうな。

ケプラー予想: 四百年の難問が解けるまで (新潮文庫―Science&History Collection)

ケプラー予想: 四百年の難問が解けるまで (新潮文庫―Science&History Collection)

この本にはケプラー予想に対する様々なアプローチが紹介されており、その中に「ボロノイ・セル」なるものに関する以下のような記述があります。

球による最密充填のボロノイ・セルは菱形十二面体になる

そんなことを言われても……という感じですよね。それをイメージ出来るようにしようというのが本記事の内容です。
画像を眺めるだけでもなんとなく分かると思うので、ぜひ読み進めてください。

*1:高校化学で学ぶ「面心立方格子構造」「六方最密充填」

続きを読む

英単語の日本語訳をプログラム内やターミナル内で取得する

はじめに

自分用の英語学習アプリケーションをつくってみたいな、と考えることがあります。そのためには任意の英単語の日本語訳を取得できることが必要なので、今回はそれを実現してみることにしてみました。

Glosbeというオンライン辞書APIを利用し、プログラム内で英単語の日本語訳を取得・表示できるようにします。また、その応用として「ターミナルで瞬時に英単語を翻訳するコマンド」をつくってみることにします。

本記事でできるようになること

  • プログラム内で、任意の英単語の日本語訳を取得できるようになる
  • ターミナル(端末)を開いているとき、"dict hoge"と入力するだけで"hoge"の日本語訳を表示させることができるようになる(下図)

f:id:roomba:20150708181437p:plain

続きを読む

「読書メーター」に無い機能を実現し、データを分析してみる(Python)

はじめに

最近読書にはまっていて、過去記事が「2015年X月に読んだ本まとめ*1」ばかりになっています。が、今回は読んだ本のまとめではなく、読書に関するデータの分析を記事にしてみることにしました。

*1:roomba.hatenablog.com

続きを読む