programming

common lispのプログラムにemacsでアタッチ

cursesっていうターミナル表示の制御ライブラリ*1を使ってテトリスを作ってみてるのだけど、途中でエラーが起こったときにデバッグ表示が乱れる。特にマルチスレッドだと目も当てられない。そこでemacsでアタッチしてデバッグすると便利。ちなみに↓がテトリ…

mpcを使ってみた

mpc*1はcommon lisp用のパーサコンビネータライブラリ。 Common Lisp で Lispインタプリタを作ってみた – さくらんぼの技術備忘録などを見て気になったので使ってみた。 使用例 以下はマニュアルにあるメールアドレス @ をパースする例。 まずパッケージを定…

auto-save-buffers.el に1行パッチを当てた

その昔、「紙」というwindows用のフリーソフトがあった。今で言うevernoteみたいなスクラップ機能が充実したテキストエディタで、軽快な動作、また多数のファイルを高速に「めくる」機能が特徴的だった。 #いや、今も紙copiと名前を変えて残ってるんだけど、…

sbcl で asteroidsを動かしてみるメモ on mac

asteroidsというlispbuilder-sdlを使ったゲームがある。手元でうまく動いていなかったのだが今日試したら動いたのでメモ程度に。環境 sbcl 1.2.5 quicklispはインストール済 macportsで libsdl_*-framework をインストール済 ライブラリの場所の指定 ~/.sbcl…

windowsでsbcl + lispbuilder-sdl

メモ。環境はwindows 7 64bit。 前半は思い出しながら書いているので間違いもあるかもしれない。quicklisp ができたおかげで昔に比べて結構楽になっているようだ。 sbclをインストールする http://www.sbcl.org/platform-table.html から windows x86 用をダ…

hashlife その2

前回のつづき。 今回は解説もしてみた。 使い方 環境はsbclで、quicklispがインストール済、かつlisp-builder-sdlが動く状態になっていること(これがちょっと面倒なんだけど…)。 $ ./hashlife.lisp と打つとpuffer trainが動き出すはず。 キー操作は ↑↓←→: …

hashlife

解説と続きを書いた→ http://d.hatena.ne.jp/Nos/20140928/1411884782 前回lispbuilderでライフゲームを作った。ただあれはあまり大きなサイズのものは動かせない。 大きいサイズのパターンを扱う手段としてはhashlifeという超高速のアルゴリズムがあって、…

lispbuilder-sdl on mac

どうせなのでもっとアクションゲーム的なのを作ったりできないかなーと思ってlispbuilder-sdlを入れてみた。前何回か入れようとして挫折しているが、今回はとりあえず例を実行出来るところまでは行った。環境: 処理系はsbcl 1.2.2 quicklispは入れてある パ…

Land of Lispを読んだ

長い事積んでたけど最近の週末を使ってようやく読み終えられた。日本語訳の方。 下の変なPV(プログラミングの本のPV!)通りぶっ飛んでて有名なlispの本。 公式ページも漫画になっていて、雰囲気がわかる。 http://landoflisp.com/ いろんなゲームを作って行…

似たような文字列を含んだデータをまとめる

説明しにくいんだけど、日付とデータが一行に入ってるデータファイルがあるとき、データの方だけ合計を取って、日付の共通部分は残しておきたい、みたいなことを考えた。つまり、 #date time count time 2013/03/12 08:23:34 12 0.21 2013/03/15 08:40:20 13…

boost::spirit でpython(のサブセット)

前エントリーで書いたboost::spirit を使って、 pythonのサブセットを作った。 もう少し言うと、python風の数式をパースして構文木を返すものを作った。boost::variantとboost::recursive_wrapperを使って、なるべく構文木を再帰的なデータ構造として素直に…

boost::spirit::qi を触ってみる

C++における文法解析ライブラリとしてboost::spiritというものがある。BNF記法に非常に近い見た目の(しかもちゃんと動く) c++のコードとして文法を書き下せるという、c++の限界に挑戦している感のあるライブラリである。マニュアルを読む(ほぼqiのところしか…

emacsでファイルをインデントするスクリプト

emacsでサンプルとか他人からもらったファイルをいじって行くとき、ファイルのインデントの流儀がemacsと違うとTabを押したときに残念な気分になる。下のファイルに実行権限をつけてPATHの通ったところにおいてやると $ emacs-format-file *.cc とすることで…

自動微分を実装してみた

自動微分というアルゴリズムがある。チェーンルールを使うことで、予め微分の式を与えなくてもそれと同等の精度で微分ができるというもの。もともとの計算時間の定数倍しかかからず、かつloopが入ってたりするような微分の式を書くのに困るような計算相手で…

sbclで外部プロセスを呼ぶ

gzip圧縮されたファイルを処理したくなったので*1、外部プログラムに解凍させてそれを解けた端から読んでいこうということにした。sbclには sb-ext:run-program 関数があって、外部プロセスを読んでその出力を使える。 http://www.sbcl.org/manual/Running-e…

gtags.elとCEDETを試してみた

C++のコード読むのにglobalというのとCEDETというのを試してみた。 GNU global GNU globalというのはC、C++など*1のコードに対して索引付けをしてやって、コード中の関数とか変数についてその定義部分を楽に参照しようというもの。 global自体はコマンドライ…

n行ごとの平均をとる

スペクトル的なデータを取ったものの各ビンのデータ数が小さくて統計が足りないのでいくつかの行を平均してやってまとめたいというときはgnuplotのsmooth uniqをつかったりしていた*1のだけど、これは特にlog scaleでは大いにbuggy*2なのでスクリプトを作っ…

gsllを入れる(quicklisp)

quicklispでgsllを入れる。対象はsbclとclisp。 うちの環境はVirtualBox上のUbuntu 11.10(32bit)。 結論から書くとインストールはできるし使えるがユニットテストはいくらか失敗する。 gsllとは gsllはgnuの科学計算ライブラリgslをcommon lispから使えるよ…

数独ソルバ by 非決定性マクロ

On Lisp --- 非決定性をみて憧れみたいなものがあったので非決定性マクロを使って数独ソルバを書きなおしてみようという試み。とりあえず空欄の部分に対して全部choose-bindしてしまおうと思ったのだけど、何が困るってbindする変数の個数が決まらないんです…

数独ソルバ

バックトラック使うと数独一瞬で解けるよと知り合いが言っていたので作ってみた。 letで配列がコピーされると思っていてはまった。されないんですね。virtualbox上のubuntu*1のsbclで (time (solve sample-board1)) => Evaluation took: 0.562 seconds of re…

cygwinでcl-openglは使えるのだろうか

cygwinでcl-openglを使う方法はあるのだろうか quicklispでインストールしようとすると途中まではうまくいくのだが 初require時のコンパイルでgluライブラリなどをリンクできず詰まる c:\windows\system32 にあるやつを指定してもうまく動かなかった気がする…

イジングモデルのシミュレーション

知り合いがやっていて楽しそうだったので僕も作ってみた。メトロポリス法というらしい。Visual Studio 2010のWin32コンソールアプリケーション設定で作成。 1行目を消して_tmainをmainにすればg++でコンパイルできるけど。 opengl使っているのでインストール…

ニュートン法

ニュートン法でz^3-1=0を解いて収束までの回数と収束先の解が3個存在するうちどれになったかで色分けする。 適当に明るさを割り当てたら明るさが一周して禍々しい… #include <complex> #include <cmath> #include <cstdlib> #define STB_IMAGE_WRITE_IMPLEMENTATION #include "stb_ima</cstdlib></cmath></complex>…

xyzzy電卓半端移植+拡張その3 (ひとまず区切り)

xyzzyのナイスな電卓をコマンドラインから使えるように+科学定数を組み込む+単位が(申し訳程度に)扱えるようにする、の第3回。sigmaが使えるようにしたのと関数が定義できるように直したのとあとこまごました修正。これでhttp://xyzzy.s53.xrea.com/wiki/ind…

xyzzy電卓半端移植その2

si接頭辞が使えるようにしてみた。何やってるの感強い。 例えば秒でいえばsだけ定義してあるとmsとかnsとかが定義されているかのようにふるまう。マイクロ秒はus*1。シンボルの頭1文字を抜かしたところが定義済みなら適当に10のうん乗倍するということをして…

xyzzy電卓半端移植

続き:xyzzy電卓半端移植その2 - Nosの日記,xyzzy電卓半端移植+拡張その3 (ひとまず区切り) - Nosの日記xyzzyについてる電卓機能を移植しようとしてみたもの。こんな時期に僕はなにをやっているのだろう…。clispで半端に動く。 xyzzy電卓については→http://xy…

後で読むurlをメモする超簡易スクリプト

Chromeで開きっぱなしでほったらかしてるタブというのは後で読もうと思って放っておいてあるものが多いのだけど、考えてみればメモリの無駄だ。そんなわけで、後で読むurlをメモする超適当なスクリプトをhowm+xyzzy lispででっちあげてみた。howmが入ったxyz…

bookmarklet: WebArchive(へ|から)

閲覧中のページからWebarchiveへ飛ぶブックマークレットはよくあるのだけど、逆は見かけたことがないので作ってみた。WebArchive以外の場所ではWebArchiveのページに飛び、WebArchiveを見ている状態では元のページに戻る。 javascript:S=location.href;if(!S…

編集中のファイルをコンパイルして実行する

プログラミングの課題でちょっとしたプログラムを書いてはテストするのがちょっと面倒なのでelispで関数を作ってみた。c言語用だけどちょっと手直しすればほかの言語でもいけると思う。 (defun compile-and-execute-current-file () (interactive) (when (an…

elispでurl-http その1

elispでhttpを扱うため、url-http.elを使うことにした。emacsにもともと同梱されているので。 (require 'url-http)で使える。Infoを見つつ要点ぽいところを訳してみる。 urlのパース ライブラリ中のたいていの関数はurlの文字列ではなく「パースされた」url…