Unlambdaインタプリタの性能を気にする人というのもあまりいないと思いますが、ELVMをセルフビルドすると何日もかかったり、AtCoderをUnlambdaで解いてみたら時間制限が厳しかったという話を見て、まあ速いインタプリタあるといいよねと思っていました。 Unl…
Esolang Advent Calendar 2016 3日目の記事です。 今回は、前編で説明したデータ構造を使って、どうやってEsolang VMの実行をシミュレートするUnlambdaプログラムを構成するかを解説します。 実装方針 VMの状態 命令の実行 メインループ ELVMバックエンドの…
Esolang Advent Calendar 2016 2日目の記事です。 ELVMにUnlambdaバックエンドを実装して、C言語のプログラムをUnlambdaに変換できるようにした話です。ちょっと長くなったので2回に分けました。 Unlambdaとは ELVMとは Unlambdaでデータ構造を表現する ペア…
https://github.com/irori/elvi BrainfuckやUnlambdaで動くvi風エディタができました。 Jody Bruchon氏のviクローンを元にELVMでコンパイルできるようにしたものです。 標準入出力しか使えないのでファイルの読み込み・保存はできません。コマンドも最小限し…
Unlambdaで動くCコンパイラができました。 https://github.com/irori/8cc.unl id:shinichiro_hさんのbflispで使われている改造版8ccのアセンブリ出力からUnlambdaへのトランスレータです。 これで同一のCプログラムをBrainfuckとUnlambdaの両方で動かせます…
Lazy K のオリジナルの配布物には bf2lazy.c というファイルが含まれていて Brainfuck プログラムを Lazy K にコンパイルできるのですが、逆に Brainfuck で Lazy K のプログラムを動かす方法はこれまで存在しませんでした。Lazy K で Brainfuck の配列のよ…
ブロックスデュオのゲーム木をマウントできる FUSE ファイルシステムを作りました。 https://github.com/irori/BlokusFS 使い方 チェックアウトして src ディレクトリ内のソースをコンパイルします。 FUSE の開発用ライブラリが必要です。 $ sudo apt-get in…
今後もよろしくお願いいたします。
http://icfpcontest.org/うーん今年はあまりうまくいきませんでした。今年の題材はパックマンで、プレイヤー側の AI を SECD マシン風のコードで、敵側を普通の 8 ビット CPU 風のコードで書けというもの。金曜の夜は問題文(やたら長い)を読んでコードは書…
https://github.com/irori/lazyk-lisp http://lazy-k.appspot.com/p/ptHm_GwfAYLazy K でも Lisp インタプリタを作ってみました。機能は Unlambda 版とだいたい同じですが call/cc が無くなり、代わりに set でグローバル変数に代入できるようになりました。…
https://github.com/irori/unlambda-lisp3 連休だったので Unlambda で Lisp インタプリタを作ってみました。Adventure を作ったときのコードジェネレータを流用して、今回新たに書いたコードは 400 行ちょっとでした。生成された Unlambda プログラムは 35k…
Esolang Advent Calendar 2013 用の記事です。Unlambda という esoteric language がありまして、s, k, i といった少数の組み込み関数と関数適用演算子 ` のみでプログラムを書くという、Brainfuck の関数型版とでもいうような言語です。 The Unlambda Progr…
http://d.hatena.ne.jp/rst76/20131109/1383953947399bytes の解説書くのをサボっていたら id:rst76 さんが解読して記事にしてくださいました。なんかすいません…そして 365bytes! ついに Grass より上に。 http://golf.shinh.org/p.rb?hello+world#ranking…
https://research.microsoft.com/en-us/events/icfpcontest2013/今年も楽しくソロ参加でした。ソースコードはこちら。http://irorin.org/icfpc2013_irori.tar.gz 問題 BV という単純な言語で書かれた 64bit 整数上の関数があります。入力となる数を好きに選…
asm.js 版も作ってみました。見た目なんにも変わらないですが…。http://irori.github.io/blokus/blokus.html
Lazy K もブラウザ上で実行できるようにしたいなぁ、でも JavaScript でインタプリタ実装するの面倒だなぁ、と思っているうちに世の中が進歩して簡単になったので作ってみました。http://lazy-k.appspot.com/いくつか例を。http://lazy-k.appspot.com/p/kyYM…
http://inazz.jp/unlambda/ inazz さんがブラウザ上で動く Unlambda インタプリタを作っておられます。 実行中の式を表示しながらステップ実行できます。しかも速いです。 Adventure がサクサク動いてびっくりしました。
http://icfpcontest2012.wordpress.com/今年は一人で参加してました。問題は Boulder Dash 風のゲームを解く AI を作れというもの。TopCoder のマラソン(Marathon Match)にありそうな問題だなーという印象でした。マラソンと違うのは、コンテストの途中でル…
前回の続きです。今回は Adventure のゲーム部分の実装について解説します。
Adventure in Unlambda のコード解説です。(ゲームのネタバレはありません。)
世界最初のアドベンチャーゲームであり、「アドベンチャー」ゲームというジャンルの語源ともなった Colossal Cave Adventure を Unlambda に移植しました。advent-unlambda.tar.gz (github) (2011/12/15 ソースコードが一部抜けていたのを修正しました)コ…
http://www.icfpcontest.org/今年は会社の同僚と6人で、チーム名 widecat で参加しました。成績は…よくわかりません。けっこう相性で勝敗が決まるので。とりあえず上位30チームの決勝には残れてるんじゃないかと思います。 AIの戦略 開始直後はまず、復活用…
明日からICFPCですよ。今年はチームで参加しまーす。
2年ぶりのマラソン。 問題 http://www.topcoder.com/longcontest/?module=ViewProblemStatement&compid=16072&rd=14525 (要ログイン) 一本のDNA(A,T,G,C からなる文字列)と酵素の集合が与えられる。 酵素は固有のパターンを持っていて、そのパターンが現…
今さらですが、ブロックスデュオ大会に参加したプログラムとブラウザ上で対戦できるものを作りました。http://irorin.org/blokus.htmlブロックスデュオのルールはこちらで紹介されています。 操作方法 難易度と Violet(先手)・Orange(後手) を選んでゲームを…
http://icfpcontest.org/ 今年も時系列でお送りします。問題については konnさんの翻訳 など。 18日21時 開始。 19日0時 回路の構文がなんとなくわかった。ゲートの入出力表作成に入る。 19日2時 入出力表できたー!と思って手元で17文字計算してみると結果…
結果出てました。9勝1敗で優勝でした。http://hp.vector.co.jp/authors/VA003988/gpcc/09g3b.htm今年は東京農工大の会場に行ってきました。他の予定があったので途中で抜けてしまいましたが…。運営の皆さんお疲れ様でした&ありがとうございました。提出した…
http://icfpcontest.org/ 年に一度のお祭りに参加してました。 27日1時 3時開始だがどうにも眠いので寝る。今にしてみればこれは正しい選択だった。 27日7時 起きて問題文を読み始める。 27日10時 VMを実装してみたが動かない。あれー? と思ったら仕様の訂…
http://hp.vector.co.jp/authors/VA003988/gpcc/gpcc09.htm#g3 今年も開催されるそうなので興味のある方は参加すると良いです。私も何か考えないと…そういえば前回の大会後の交流会で行われたという、対人間戦のレポートが面白かったです。 http://hp.vector…
id:yshl さんにならって鑑賞会。関数型の esolang ばっかりです。 Lazy K 私 http://golf.shinh.org/reveal.rb?numof+1+bits+in+0+to+255/irori/1240716651&lazy "8" から始めて、文字列を倍々にしつつ前半部分から1を引いていきます。 church数から1を引く…