タグ

ブックマーク / mametter.hatenablog.com (4)

  • INTERCAL を調べてみた - まめめも

    INTERCAL は 1972 年に登場した難解言語 (esoteric language) の始祖とされる言語です。brainfuck や befunge のような難解言語に興味のある人なら、一度は聞いたことがあると思います。 しかし、INTERCAL について、「元祖難解言語であること」と Hello, world! 以上の詳しいことをわかりやすく説明する資料は見当たりません。マニュアルはなぜかやたら読みにくいので敬遠していたんですが、一念発起して、多少読み書きできる程度まで勉強してみました。元祖の名に恥じない、なかなか頭の悪い言語でした。 変数と定数 16 ビット整数、32 ビット整数、16 ビット整数の配列、32 ビット整数の配列、の 4 種類の型がある。それぞれ . (spot) 、: (twospot) 、, (tail) 、; (hybrid) の記号が与えられている (括弧

    INTERCAL を調べてみた - まめめも
    another
    another 2008/12/02
    「処理系によってはある程度 PLEASE を使わないと「プログラマーが無礼だ」といってエラーを吐く。PLEASE を使いすぎると「プログラマーが慇懃無礼だ」といってエラーを吐く。」
  • 記号だけで brainfuck インタプリタ - まめめも

    Ruby 1.9 の新機能のひとつに「lambda { ... } を -> { ... } と書ける」というのがあります。この表記は反対意見が根強い *1 ですが、確実にすばらしい点があって、全部記号だということです。これによって Ruby が記号だけでチューリング完全になります *2 。 デモとして、brainfuck インタプリタを記号だけで書いてみました。 $___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<< _;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/ )..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?

    記号だけで brainfuck インタプリタ - まめめも
    another
    another 2008/06/28
    「これによって Ruby が記号だけでチューリング完全になります」それだけで「->」記法は採用に値すると思う。
  • SAT ソルバで数独を解く方法 - まめめも

    数独は非常に SAT に変換しやすい問題です。全部参考文献 *1 に載っている内容ですが、なるべくわかりやすく説明してみます。ちょっと長いです。 SAT とは まず SAT をごく簡単に説明します。すでに SAT を知っている人はここは読み飛ばしてください。 命題論理式の形の一つに乗法標準形のというのがあります。変数か変数の否定 (リテラルと言います) を or だけでつないだ式 (節と言います) を and だけでつないだ論理式のことを言います。つまり以下みたいな形です。 ( a1 or !a2 or ... or an) and ( b1 or !b2 or ... or !bn) and ... and (!z1 or z2 or ... or !zn)SAT は「a1 や zn などの変数にうまく true か false を代入して、上の式全体を true にできるか」という問題

    SAT ソルバで数独を解く方法 - まめめも
    another
    another 2008/01/09
  • 新言語考えた - まめめも

    テーマは befunge + π計算。 ちなみにπ計算の知識は sumii 様のπ-calculus 超入門を読んだだけしかない。 以下、befunge はみな知っているものとしています。 基部分 実行モデルは基的には befunge で、2 次元上のコードをカーソルが走って fetch しながら実行が進む。初期状態では左上の原点から右方向に向かって走るプロセスが 1 だけ。各プロセスは数値またはチャンネルからなるスタック (っぽいもの) を持っている。 '|' は fork 。進行方向に対して左右に分かれて走り出す。 v > AAA > | > BBB上のコードでは、 AAA と BBB を並列実行する。fork したらスタックは全部コピーされる (fork した後でスタックをいじっても、相方のスタックは変化しない) 。 '&' はチャンネルを生成してスタックに乗せる。'!' は送

    新言語考えた - まめめも
  • 1