2009年10月25日日曜日

カオス #25 パイこね変換

今日はパイこね変換です,変な意味はありません.

パイこね変換は以下のような2変数写像です.

φ(x, y)
=(2x, 1/2y) (0≦x≦1/2)
=(2x-1, 1/2(y+1)) (1/2<x≦1)

パイを作る時の材料をこねる操作と同じなので,こんな名前が付いています.
実際に「こね」てみましょう.

Fig.1が生贄サンプル画像です.ファックス!!ファックス!!


Fig.1

ではφ(x, y)を一回適用してみましょう.


Fig.2

伸ばして重ねます.これを繰り返し適用すると,以下の様になっていきます.


Fig.3


Fig.4


Fig.5


Fig.6

もはや原型を留めていません.ついでに計算精度の限界も来ています.

この写像の特徴は,初期値鋭敏性(初期値が極僅か違うだけでも,写像を繰り返し適用すると,その差は広がり全く違う道程となる)を持つという点です.

2009年10月20日火曜日

第20回 全国高等専門学校プログラミングコンテスト After

10/17~18にかけて第20回 全国高等専門学校プログラミングコンテストが行われました.

今回,競技部門は問題なく進行されました.また,環境に関しても,無線LANが飛んでいたので控室でストリーミング放送を見ることが出来,非常に過ごしやすかったです.プロコン関係者の方々お疲れ様でした.

さて,結果の方はというと,敗者復活戦で1位を取り復帰はしたものの,準決勝では揮わず敗退.大阪府立に実力を見せつけられました(準決勝において,マップAで34ステップを出したものの,大阪はたったの22ステップでした).

そんなわけで,Itmediaの記事です.
高専プロコンリポート:「最強最速」を見せつけた浪速の高専生 - ITmedia エンタープライズ

ちなみに,主な手法はSA(焼きなまし法)を用いたものでした.ある程度の長さのステップの系列を用意し,系列中のステップを変更させながら焼きなます,といった方法です.個人的には幅優先探索を主体とした場合,ノード数が爆発的に増えるため活用は不可,と考えていました.ところが大阪府立は上手いこと(マップのサイズ毎に)評価関数を作ったのでしょうか,短い時間でステップ数の短い解を叩き出していました.すごいです.

このような大会は非常に刺激があり,今後の開発もモチベーションアップにも繋がりました.睡眠不足にはなりましたが,非常に実のある2日間であったと思います.

2009年10月13日火曜日

ノイマン伝説

・6歳で8桁の割り算は当たり前,8歳で微積分マスターも
・ノイマンの正式名称は悪魔の頭脳
・推定IQは300,仮に東大の医学部を目指せば1週間で入れるレベル
・趣味はスカートのぞき
・同僚が一晩徹夜して解いた難問を数分で解いたため,同僚は青ざめた
・ノイマン先生の車が近付くだけで,学生たちは逃げだした,心臓発作を起こす学生も
・ENIACとの計算勝負に勝ち「俺の次に頭のいい奴が出来た.」
・水爆の効率概算は天井を向いて暗算
・ハンガリー人と思われがちだが,実は火星人
・口癖は「なかよしイケメン」
・1日4時間の睡眠時間以外は常に思考
・世界史,ゲーテの小説は一字一句間違えず暗唱できた
・割り算で答えられる問題を無限級数の和で解答するというファンサービス
・紙とペンだけでセルオートマトンの分野を開拓
・ノイマンは実はまだ数学分かってないもんな.本気で覚えたらスゲエ事になるぞ
・原子力委員会の会合には救急車で出席
・葬式にて知人曰く「ノイマンは人間ではなかった.長い間人間と一緒にいたので,真似がうまくなっただけだ.」

2009年10月11日日曜日

第20回 全国高等専門学校プログラミングコンテスト Before

今年もやってまいりました,全国高等専門学校プログラミングコンテスト.
前回は不本意な終わり方をしましたが.今年は記念すべき20回目,主管校の木更津高専その他頑張っておられると思います.

さて,競技の内容は,パズルゲームです.下記公式サイトに詳細があるのでどうぞ.

http://www.procon.gr.jp/modules/procon20/item.php?itemid=18

前回に比べて圧倒的に難しいです.人力で解くことも勿論できますが,ステップ数を短くするとなると,コンピュータに頼らざるをえませんし,最適解となると時間がかなり掛かります.そして,時間が掛かっていては他のチームに負けてしまいます.また,運の要素が無い(互いに干渉しあう要素が無い)ので,実力勝負になると思われます.

高専プロコン2009競技練習場にて,練習ができます.コルンさん(久留米高専OB)に感謝.人力モードもありますので皆さん解いてみてはいかが?

2009年10月6日火曜日

カオス #24 Clifford Attractor

数学的美.

Clifford Attractor

Clifford Attractorは以下の式で表されます.

xn+1 = sin(ayn) + c cos(axn)
yn+1 = sin(bxn) + d cos(byn)
パラメータ:a, b, c, d

初期値(x0, y0)を決め,上式を反復,プロットしていきます.

以下,一例(容量がMB単位ですので注意).


Fig.1 a=-1.4, b=1.6, c=1.0, d=0.7


Fig.2 a=-1.4, b=1.6, c=1.0, d=0.7
オーロラを思い出します.


Fig.3 a=1.6, b=-0.6, c=-1.2, d=1.6
ネオンサインを思い出します.上手くトリミングすればカッチョイイ壁紙になります.


Fig.4 a=1.7, b=1.7, c=-1.2, d=1.2
円形の内部に広がる柔らかい空間.

Fig.2~4の画素値は,(xn+1, yn+1)の色は(xn-c, yn-c)(cは適当な非負整数)の値から算出しています.これにより上のような綺麗な画像を作ることが出来ます.

今回もサイズが大きく,計算に時間がかかりました.サイズは縮小していないので2048x2048のままですが,1枚当たりの製作時間が5時間位になってしまいました.困ったものです.

2009年10月3日土曜日

GOMOKU NARABE

○×ゲーム作成後,それを基盤として作りました.

GOMOKU NARABE



Fig.1
タイトル画面.稚拙ながらも狙って作っている事が窺えます.


Fig.2
ゲーム画面.プレイイヤーはマリオとルイージを交互に配置していきます.


Fig.3
プレイヤー2(ルイージ)が勝ちました.

これを製作した後3人で合作を作り,更にその数か月後,「TETRIS for GBA」を作りました.

2009年10月2日金曜日

○×ゲーム

約3年前,事実上初めて製作したゲームです.
「TETRIS for GBA」と同じくGBAのソフトであり,言語はC,開発環境はDevKit Advanceです.

○×ゲーム

そのまんま○×ゲームです.


Fig.1
タイトル画面.「ゲーム」の文字は手書きっぽくしたようです.


Fig.2
ゲーム画面.非常にシンプルな構成です.プレイヤー1,2は交互に○×を書いていき,縦横斜めの何れか3つ揃えば勝ちです.


Fig.3
一応5本先取という形です.

スプライトの使い方等をまだ知らない状態で作ったので,1ドット単位で描画を行っています.

2009年10月1日木曜日

BLOCK GAME

約2年前,諸事情によりiαppliを作成しました.
iαppliもフリーで作成することができます.言語はJavaです.

BLOCK GAME

コンセプトは,「携帯ゲーム機の色,デザインの模倣」,「無意味に使えるカーソル」といったものだったと思います.


Fig.1
タイトル画面.手抜き感が漂います.(何故か存在する)カーソル(十字キーで移動)で「PLEASE CLICK」をクリックする事により,ゲーム選択画面に移れます.


Fig.2
ゲーム選択画面.これまた手抜きです.


Fig.3
TYPE A.いわゆるスネイク.


Fig.4
TYPE B.障害物(規則的に横並びになっているブロック列.左右どちらかに動きます)にぶつからないように,一番下にあるブロックを移動させます.


Fig.5
TYPE C.変な四角いもの(図では左下)を左右に操作し,他の変な四角いものにぶつからないようにします.


Fig.6
LIFE GAME.ライフゲームです.

時期はTETRIS for GBAの後であり,「極端なシンプルさ」を狙ったものですが,開発期間が1週間程度だった為か,文字や画像,そしてそれらの配置やデザインが非常に稚拙であると感じました.