六角形版ライフゲームを作ってみた

f:id:hunayasu:20140420225039p:plain

ライフゲーム

ライフゲーム(Conway's Game of Life)はイギリスの数学者ジョン・ホートン・コンウェイ (John Horton Conway) が考案した生命の誕生、進化、淘汰などのプロセスを簡易的なモデルで再現したシミュレーションゲームです。(Wikipedia)
一般的に、ライフゲームは碁盤のようなフィールド上でセルをグリグリ動かして遊ぶのですが、あまり六角形上のマス目の上で動かすのは見たことがないので作ることにしました。
調べてみると、以下のような論文が見つかったので、これに従ってルールを決定。
http://ci.nii.ac.jp/naid/110006438064/
生存は1セルの周りに2~4、誕生は1セルの周りに2~3、死亡は1セルの周りに0~1,5~6です。

実際に動かす

jQuery 1.11.0、d3.js 3.4.6を使用

にわか的考察

セル・オートマトンの知識はまったくないので悪しからず。
たくさんのセルがある状態で動作させると、格子状の(一般的な)ライフゲームと比べて、 大きな六角形ブロックの集合に収束することが多いと思います。 この六角形の辺をなしているセルはルールにより絶対に内部のセルの影響を受けないので こうなるようです。

f:id:hunayasu:20140420231841p:plain

ブリンカ?くるくるまわって可愛い

f:id:hunayasu:20140420232408p:plain

最小の固定物体

f:id:hunayasu:20140420232538p:plain

グライダーは残念ながら見つけられませんでした。
見つけたら教えてください。

まとめ

実際に遊んでみて、四角形版のライフゲームのほうが複雑で興味深い動きをするなぁというのが 第一印象です。なぜかはよくわからないです。
ルールを変えてみたり、更に多角形版を作ってみたりすると面白いと思います。

Pythonで同人巡回サービスを作ってみた

僕がプログラミングを初めて、早一年と一ヶ月が経ちました。
How To Become A Hackerに影響されて HTMLって何?というレベルからC, JavaScript, PHP, Lisp, Pythonと味見をしていき今に至ります。

そろそろアウトプットしなければと思い、作りました。 その名も

同人宇宙」!!

はい。すいません。ただのしょうもないエロサイトです。
これは、ネットに転がっている同人誌へのリンクとそのサムネイルを自動で収集して 管理するサービスです。宇宙中の同人誌の情報を収集するという意味でこう名づけました。 三秒くらいで思いつきました。

構成

スクレイピングにはBeautifulSoup、WebフレームワークにはBottleを使用しています。
Pythonを触るのが初めてだったので、一番簡単そうなBottleを使ったのですが、 正直これは失敗でした。
Bottleは

@bottle.route('/')
@bottle.view('index')
def index():
    return dict(hoge='fuga')

みたいな感じで簡単にルーティングできるのでこれでいいや、と 決めてしまったのですが、Bottleにはモデル層がほとんどないので全部自分で 実装することになってしまいました。

スクレイピング用のロボットも最初はScrapyというPython製のスクレイピングフレームワークを使ってサクサク作ろうと思ったのですが、 なぜか50%ぐらいの確率でしかスクレイピングしてくれなくてやめました。(完全に自分のせい)
サムネイルの作成には、PILを使用しています。
Pythonは探せば、だいたい目的に合う素晴らしいライブラリが見つかるので本当に助かります。

同人サイトの登録はこんな感じでJSONで簡単に登録できるようにしました。

{
    "name": "同人ほげほげ",
    "url": "http://dojin-hoge.com",
    "dojin_wrapper": "div.dojin",
    "dojin_title": "div.title",
    "dojin_url": "dojin.url",
    "dojin_img": 'img'
}

サーバー環境はGMOVPSサービスのCentOSです。GMOはあんまり評判が良くないようですが、 今のところ不満はありません。
WSGIサーバーにはgunicorn、フロントにはnginxを使用しています。特にチューニングとかは していないのですが、非常に高速で驚きです。
製作期間は約二週間で、週末に一気に作りました。

まとめ

作ってみて思ったのはやはりエロ+プログラミングは楽しい!ということです。
男なら誰でも好きなものを作るんですから当たり前ですね。
でも、次はもう少しまじめなものを作ろうかなと思います。
最後に、

違法アップロードはダメ絶対!!!