先日、東急ハンズ渋谷店で気になっていたものをいくつか買ってきました。
本当は低温度差スターリングエンジンを探しに行ったのですが、そちらは今は置いてありませんでした。
今回の注目は左上の品。「ガリレオ温度計」です。浮きに温度が書いてあり、浮き沈みで温度を計るようになっています。
実験用とかではなく、完全なインテリア用です。
先日、東急ハンズ渋谷店で気になっていたものをいくつか買ってきました。
本当は低温度差スターリングエンジンを探しに行ったのですが、そちらは今は置いてありませんでした。
今回の注目は左上の品。「ガリレオ温度計」です。浮きに温度が書いてあり、浮き沈みで温度を計るようになっています。
実験用とかではなく、完全なインテリア用です。
(この記事はC++メインの内容です。)
関数型言語のセンスも身につけておかないと、と思ってHaskellの簡単なお勉強をしようと思いました。
圏論のような背景や文法から把握するのもひとつのルートですが、まずは適当な例を見てみようと思ったわけです。
「関数型言語だとこんなことができる!」みたいな驚きがあったほうが楽しいですしね。
まずはHaskellでのクイックソートの実装例を探してみました。クイックソートというのはアルゴリズムの勉強を1からすると必ずと言っていいほど登場するほどのものですし、比較もできて面白そうです。
さて、「Haskell クイックソート」でGoogle検索にかけてみると、「C++だと35行のところがHaskellは5行で書ける」だの、「最も美しいコードのひとつ」だのとなかなか景気の良い記事が出てきます。
ところがもう少し読んでみると、「Haskellの5行クイックソートはクイックソートではない」みたいな議論がされているページがいくつか出てきます。
Togetterにいろいろな主張のまとめがありました。曰く、
「In-placeソートでないからだめ」「というか遅い」「いやHaskellに効率を求めてはいけない」「5行の例はPivotingをしていないのでだめ」「Pivotingはクイックソートの本質ではない」「メモリを抽象化していて扱えていないのでとても遅い」「Haskellでメモリの議論をするべきでないしIn-placeソートでなくてもよい」「Haskellでクイックソートをしっかり書きたいなら手続き型風に書くのが良い」
といった感じで、さっそく頭が痛くなってきました。
まあ今回はHaskellについては一旦置いておいて、その途中で出てきた「C++のクイックソートは35行」の部分についての話です。C++で普通に書いてももっと短くなっていいはずです。
結果から書きますと、普通に書いても9行くらいになりました。
先日のマンデルブロー集合の10の200乗倍で作成したプログラムがあるので、今回はマンデルブロー集合の様々な地点へ飛び込んだ動画を作ってみました。
前回の記事を見ていない方はそちらからどうぞ:
今回訪れる地点は計5箇所です。どの点も拡大していく最中に集合全体と同じ形が現れます。フラクタルらしくて面白いと思います。
具体的には以下の点です。緑は前回の場所。それぞれ個性的な場所だと思います。
この集合はフラクタルなので自己相似の図形ではあるのですが、ただ単純にどこでも同じ形を持っているわけではありません。拡大する場所を変えると景色が一変してしまいます。
肝心の動画はこちら。ニコニコ動画はこちら。