例のアレ。やっつけ。 コード書くの面倒だったのでhttp://d.hatena.ne.jp/javascripter/20090103/1231002091ここから借りました。 ほむほむほむほむほむほむほむほむほむほむぅほむらちゃほむほむほむほむほむほむほむほむほむらちゃほむほむほむほむほむほむほむほむほむほむほむほむらちゃほむほむほむほむほむほむっほむっほむっほむらほむーほむらちゃほむ?ほむらちゃほむほむほむ?ほむほむほむほむほむほむほむほむ?ほむ?ほむほむほむほむ?ほむらちゃほむらほむ?ほむらほむらほむらほむらほむらほむらほむらほむらほむらほむらほむらほむらほむ?ほむっほむほむほむほむほむほむほむほむほむ?ほむらほむらほむらほむらほむらほむらほむらほむらほむ?ほむほむほむほむ?ほむらほむらほむらほむらほむらほむらほむ?ほむらほむらほむらほむらほむらほむらほむらほむらほむ?ほむらちゃほ
C++のテンプレートメタプログラミングライブラリ「Boost.MPL」について勉強中.新しいものを勉強する時はとりあえずそれを使ってBrainf*ckのインタプリタを作るのが学習法の定石なので,早速Boost.MPLを使ってBrainf*ckのインタプリタを書いた. ソース コンパイル中にBrainf*ckが実行される. mpl_brainfuck.cc #include <iostream> // change this parameter according to the length of your program #define BOOST_MPL_LIMIT_STRING_SIZE 128 #include <boost/mpl/at.hpp> #include <boost/mpl/comparison.hpp> #include <boost/mpl/erase.hpp> #
I did know about the twIP, a very small IP stack that can only respond to pings and also fit in a tweet, but recently I tried to execute the idea of making small and still usable things like that. Well, I ended up with a slightly large program than a tweet, but it fits in two lines, i.e. 160 bytes. Let me introduce the world’s smallest Brainfuck interpreter1 in C: (Gist) Test it yourself! For exam
スクリプト言語処理系を高速化したくてしたくてたまらない少年少女に届け。表題の通りスクリプト言語処理系の高速化について書きます。対象言語はBrainf*ckにします。Brainf*ckというのは Brainf*ck Brainfuck - Wikipedia というような言語です。要は処理系を実装するのが簡単なおもちゃ言語。おもちゃ言語ゆえに他のどんな実用的スクリプト言語処理系にも出てくるような基本的な処理だけでできているので、Brainf*ck処理系の高速化で有用なテクニックは他の処理系でもうんたらかんたら。 じゃあまず叩き台になるような処理系を書いてみましょう。言語はC++です。JavaだのPythonだので高速な処理系を記述するテクニックやらなんやらというのもありますけども、まずはごく簡単にCPUやらメモリといったものと仲の良い言語で記述することで理解を深めましょう。本当はC言語の方が
BFだとJITしやすいので作ってみた。簡単な最適化をしています。 add/sub [rdi], immの直後にcmp [rdi], 0が来るのは無駄でしかないので、そこの最適化ぐらいはしてみたいですね。 http://gist.github.com/518146 ソースコードは400行ほどあるのでgist上に置いています。Core [email protected]の環境でhttp://esoteric.sange.fi/brainfuck/bf-source/にあるmandelbrot.bを1.4秒程度で実行する能力があります。 x86_64限定です。Mac OS XとLinux上で動く事を確認しました。DEPがONな環境だと、どうなるんでしょうね。
LLTigerで #encoding:ruby と書くだけで、Python上でRubyが動く、Ruby on Pythonが発表されました。 そして、よく分かりませんが、encodingのハックがゆくゆくはモテることにつながるらしいので、何か作ってみよう! でも、Rubyはかなり大変そう。一番簡単なのは・・・・・・brainf*ckだ! というわけで、 #bfcodec.py from __future__ import unicode_literals """ This code is under PSF License. Thanks Shibukawa Yoshiki! http://shibu.jp/ """ import encodings, codecs, sys, re import bf class aStreamReader(codecs.StreamReader): d
Brainf*ck はチューリング完全らしいですよ。 Brainf*ck 自体に興味のある方は、Brainf*ck や Brainfuck - Wikipedia へどうぞ。 WITH -- 入力 Input(id, bf_program, stdin) AS ( -- Hello, World!と標準出力に出力するプログラム SELECT 0, ' >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++ ++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]> ++++++++[<++++>-]<+.[-]++++++++++.', '' -- hogeと標準出力に出力するプログラム UNION ALL
Cプリプロセッサ上で実装されたBrainfuckインタプリタです。 $ cat hello.txt # include "bfi.h" BFI_RUN1(x x x x x x x x x (b x x x x x x x x b x x x x x x x x x x x b x x x x x d d d _) b w b x x w x x x x x x x w w x x x w b _ w _ _ _ _ _ _ _ _ _ _ _ _ w d x x x x x x x x w _ _ _ _ _ _ _ _ w x x x w _ _ _ _ _ _ w _ _ _ _ _ _ _ _ w b x w) $ cpp -P hello.txt Hello, world! bfi-0.tar.gz 使い方 "bfi.h"で定義されているBFI_RUNマクロがインタプリタの本体で
先日、「はてなFizzBuzzグループ」に入って、さっそくvimのFizzBuzzを書いたのですが... 2010-03-04 - mattnの日記 - fizzbuzzグループ for v in range(1,100)|ec v%15?v%3?v%5?v :"Buzz":"Fizz":"FizzBuzz"|endfo http://fizzbuzz.g.hatena.ne.jp/mattn/20100304 数日後にid:tyruさんにgolfで抜かされた! Vim script - id:tyruが毎日FizzBuzzを一生懸命書く日記 - fizzbuzzグループ for i in range(1,100)|ec[[i,"Buzz"],["Fizz","FizzBuzz"]][i%3<1][i%5<1]|endfo http://fizzbuzz.g.hatena.ne.jp/ty
前から作ってみたいと思っていた、Brainfuckのインタプリタを作った。 JavaScript Brainfuck interpreterに置いた。 id:lizanにデバッグを手伝ってもらったり、実装についてアドバイスを貰いながら、けっこう苦労して作った。 var brainfuck = function (source, getc) { var heap, ptr, cur, c, ret, stack, i, bracket, stack; heap = [0]; ptr = 0; cur = -1; ret = ''; stack = []; if (!getc) getc = function () { return prompt("input a character"); }; while ((c = source.charAt(++cur))) { switch (c) {
まず、世界中のプログラマが誰でも一番最初に作るであろう「Hello, world!」を標準出力に表示するプログラムを書いてみましょう。 C言語 2006-12-19 char main[]= "QVWUZ%@@@@% P^JJJJJJJJJJJJJJJJJJJJJJJJ3B PVXH, PTXHHHH!0Z_18R_)8)8)8)8" ")8)8)8)8WV_38WX_)8)8)8@)8@@@@)8)8)8T_VXOOOOOOOOOOOOOOOOOOOOOOOOWYVX!75Hel" "lVP^17^GGGGVX!75o, wVP^17^GGGGVX!75orldVP^17^GGGGVX!75aJ@@5@@@@VP^17^VXP[" "PZBBBBBBBBBBBBBBC@@@@AHI@AHI@AHI@AHI@AHI@AHI@j__^Y`"; このプログラムを hello.c という名前で保
アラン・チューリングという計算機科学者の考えた、 「チューリング・マシン」という仮想の計算機があります。 これは [0を書く]、[1を書く]、[右に進む]、[左に進む] と言った 非常に簡単な命令のみを実行できる想像上の計算機ですが、 我々の使っているパソコンでできるような計算は全て、 チューリングマシン用のプログラムとして書ける、ということが知られています。 …という前置きを付けてなんだか重々しい言語に見えてきたところで(^^;、 たぶんご存じの方も多いと思われる、わずか8文字の組み合わせで ありとあらゆるプログラムを表現する Brainfuck を弄ってみるとしましょう。 * Hello, World 導入 サンプル:表示1 サンプル:表示2 サンプル:echo * サンプル:足し算 サンプル:掛け算 C++によるインタプリタ実装 * サンプル:条件分岐1 サンプル:条件分岐2 まとめ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く