2012-01-01から1年間の記事一覧

今年プレイしたフリーゲーム

感想は書いていなかったけれど、今年は第四回ウディコン参加作品を中心に多数プレイさせてもらっていた。せっかくなのでランキング形式で列挙してみる。ジャンル表記に情報が手に入るサイトをリンクしている。 (探索RPG) らんだむダンジョン (国家運営RPG) …

各種ソート

ソートの動作を良く知らなかったので勉強。bubble-sort以外はM.Hiroi's Home Page / xyzzy Lisp Programmingから。ほぼ写経。bubble-sortは破壊的に動作し、他は新しくリストを作るので非破壊的。そのかわりコンシングが多い。 (defun bubble-sort (lst &opt…

順列の列挙

順列を列挙する関数が野暮用で必要になったが、すぐに書けなかったので書き方を調べた。要素を木構造にして深さ優先探索(DFS)で書けば良いらしい。簡単だね! (defun permutation (args &optional num head res) (labels ((iter (args num head res) (if (an…

レーティングランキングを作る

人の強さを1つの指標で表したい。そういった欲求はドラゴンボールの戦闘能力や、筋肉マンの超人強度にも見て取れる。 ただ、数値が何倍だから何倍強い、といった数値を決めるのは難しい。実際に使われている指標はチェスや将棋のレートのようなものだ。これ…

hsp-mode lapse001リリース!

以前、hsp-modeを配布していた方がいたようだが、既に情報も少なかったので自前で作ってみた。 配布は今まで通りpackage.lで行っている。 とりあえず必要そうな機能は付けてみたので、xyzzyを使っているのにHSPを書く奇特な方や、HSPを書いているけれど、HSE…

関数のインポートって

正確には関数を示すシンボルのインポートだけれど、これを行うと、インポート先で関数を再定義すると、エクスポート元の関数まで上書きされてしまう。 実際、こういう動作をしたい場合もあるかも知れないが、普通は行わない。また、インポートした後で定義が…

やったー、肉抜きできたよー。

元マクロ:普通のタイマー - 象徴ヶ淵 (defmacro counter-default (slots resets &optional (defaults nil sv)) (let ((f (lambda (l l2 &optional l3) `(if (null ,(car l)) (if (or ,@(cdr l)) (setq ,(car l) ,(car l2)) ,(if l3 `(setq ,(car l) ,(car l…

データ解析作業のためのlisp

データ解析の一般的な流れは知らないが、xyzzyのlisp-interaction-modeで次のように作業している。 データを読み込む データを操作して特徴量などを計算し、変数に記録する 計算した結果を比較したりプロットしたりする 時間のかかる計算でも、結果を保存し…

max min にkeyがない件

sortとかfindにはkeyが付き物なのに、なんでmax minは数値にしか対応していないのか。大体全然汎用性がないじゃん、と思った。このくらい無いわけがないが、探すのも面倒なので書いた。 (defun most (sequence predicate &key (key 'identity)) (let ((res (…

コンプガチャと銀のエンゼル

複数種類のカードを集める(コンプガチャ)のと、同じカードを複数集める(銀のエンゼル)のはどっちが大変なの? ということを確めてみる。 どちらも公平に、1種類あたり100枚に1枚の確率で引けるとしよう。必要な枚数(種類)を変えて、それぞれ何枚引けば揃えら…

フック関数

Lua

基本的な構造を作ってから、後で動作を変えたいという場合がある。そういうときには、フック関数が便利である。Luaにはデバッグ用のフックがあるのでややこしいが、一般に(なのか知らないが)関数を呼び出したときに、ついでに実行する関数である。 フック…

タブ幅より長い項目を詰めたい

何かデータを出力するとき、見やすいように整形して出力するのは割と面倒である。 タブはその手間を軽減してくれるが、タブより長い項目があると表示が崩れて読みにくい。 そこで、たまに長いデータが入るような表を簡単に見やすくするために、タブ幅より長…

たらい回し関数の速度比較

aviutl拡張編集がLuaを使っているから、というだけで何となくLuaに手を出してみた。意外と簡単だし、実行速度も速いと感じたので、xyzzy lispと比較してみる。 せっかくなので、c++とも比較してみたいと思い、ベンチマーク用に適当なたらい回し関数を利用す…

区間木が衝突判定に使えそうか知りたかった。

アクションにしろシューティングにしろ、衝突判定のコストを押さえることは重要である。 格子分割、四分木のような手法があるが、他に使えそうなものはないか。 と思い、 区間木を調べてみた。 wikiを良く読むと、計算量は、検索には1件あたりO(log n)かかる…

ピカチュウのセリフをマルコフ連鎖で生成する

ピカチュウのセリフがどういった構造かよく知らないが、想像の範囲でそれらしいものを生成してくれるジェネレータを作ってみた。生成には教科書的な単純なマルコフ連鎖を使っている。現在の状態から、既知の確率で次の状態に遷移する。それだけだと文の切れ…

Spelunkyを300回クリアした記念

100回、200回に続き300回である。死亡率はさらに半分弱に。3回連続でクリアできるようになったり、大分慣れてきたように感じる。スピードランもタイムを縮めることができた。 慌てなければ勝率4割くらいになったと思うが、それだけではマンネリなので、大グ…