はてなの京都オフィスで行われているScala Hackathonに参加しています.
昨日はFizzBuzzを作るところまではできたので,今日はコンソール上で動作するライフゲームを作りました.
特徴
セルが広がると,フィールドの広さが動的に変化します.従って,実行前にフィールドの広さを指定したり,セルが画面外に出たときにどうするか,などと気にする必要がありません.
セルが生存している付近のみ表示することができます.このことによって,フィールドが無限に広がって,表示ができなくなる,という事故を防ぎます.
この例では,フィールドの(3,3)から(7,7)までの領域が表示されています.
実行方法
% fsc LifeGame.scala % scala LifeGame glider
これでグライダーが出ます.
起動時にオプションを渡すと,少しいろいろできます.
- blinker
- ブリンカーを出す
- glider
- グライダーを出す
- glidergun
- グライダーガンを出す
- use_cut_field
- セルが生存している付近のみ切り出して表示する
感想
ライフゲームという実用的なアプリケーションを構成することができました.
新たな言語なので,書き方や言語仕様などで混乱することが予想されていましたが,普通のオブジェクト指向だと思って書くと,普通に書くことができました.
また,オブジェクト指向でありながら,mapやcountといった,関数的な操作を織り交ぜて書くことができるので,複雑なデータ処理も自然に記述することができました.
今回は期限内に動かすことを第一に作ったので,あまり言語を深く学ぶことはできませんでしたが,Scalaはおもしろそうなので,今後も引き続き勉強していきたいと思います.
Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
- 作者: Martin Odersky,Lex Spoon、Bill Venners,羽生田栄一,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2009/08/21
- メディア: 単行本
- 購入: 17人 クリック: 546回
- この商品を含むブログ (118件) を見る