BF-BASIC'nのソースはこちら。 1: #include <stdio.h> 2: #include <string.h> 3: #include <stdlib.h> 4: #include <ctype.h> 5: #include <assert.h> 6: 7: typedef struct { 8: int bf; 9: char *basicn; 10: } Conv; 11: 12: static Conv st_conv[] = { 13: {'>', "す"}, 14: {'<', "ばぼーん"}, 15: {'+', "ぽ"}, 16: {'-', "び"}, 17: {'.', "ぽーん"}, 18: {',', "うすらの"}, 19: {'[', "すてらの"}, 20: {']', "なばびこーん"}, 21: }; 22: 23: typedef str
Haskell 、Erlang の次のブームは Coq に違いありません。とりあえず基本ということで、Coq でひねりのない brainfuck インタプリタを書いてみました。動作例。Coq のコードが色づけできないとは何事か。 Eval compute in (finite_execute " +++++++++[>++++++++>+++++++++++>+++++<<< -]>.>++.+++++++..+++.>-.------------.<++ ++++++.--------.+++.------.--------.>+. " "" 500). = "Hello, world!"%string : string 残念ながら (?) Coq では停止性が保障された関数しか定義できません。ここでは最大評価ステップを指定しないといけないという仕様にしてごまかしています (引数の 50
brainfuck から Grass への変換器を書いてみました。brainfuck はできるけど、Grass はちょっと……という人向け。 # brainfuck のプログラム $ cat hello.bf +++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------.+++.------.--------.>+. # grass のプログラムに変換 $ ruby19 braingrass.rb hello.bf > hello.www # 実行 $ ruby19 yagi.rb hello.www; echo Hello, world!ソースはこちら。 http://github.com/mame/grass-misc/tree/master/braing
ちょっと草植えときますね型言語 Grass _, ._ ( ・ω・) んも〜 ○={=}〇, |:::::::::\, ', ´ 、、、、し 、、、(((.@)wvwwWWwvwwWwwvwwwwWWWwwWw wWWWWWWwwwwWwwvwWWwWwwvwWWW 作ってみたwwwww とりあえず公開wwwwwwwっうぇ つ 日本語 Implementations Interpreters Interpreter written in Standard ML (accept US-ASCII only) by UENO Katsuhiro Interpreter written in Ruby by UENO Katsuhiro Interpreter written in NicoScript Interpreter written in Prolog by zick Interpre
日々の流転 トラックバックスパムを大量に喰らったので、トラックバックを一時的に無効にしています。 λ. A brainf*ck interpreter in Erlang HelloWorld を書いたので、次は brainf*ck のインタプリタでも。 -module(brainfuck). -export([brainfuck/1]). brainfuck(Src) -> Prog=parse(Src), seq(Prog, {[], [0]}). parse(X) -> {Y,_} = parse(X, []), Y. parse([], Acc) -> {lists:reverse(Acc), []}; parse([H|T], Acc) -> case H of $] -> {lists:reverse(Acc), T}; $> -> parse(T, ['>'|Acc]);
Ruby 1.9 の新機能のひとつに「lambda { ... } を -> { ... } と書ける」というのがあります。この表記は反対意見が根強い *1 ですが、確実にすばらしい点があって、全部記号だということです。これによって Ruby が記号だけでチューリング完全になります *2 。 デモとして、brainfuck インタプリタを記号だけで書いてみました。 $___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<< _;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/ )..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?
Rubyfuck というライブラリを作ってみました。以下の美しい Ruby のプログラムは Hello, world! を出力します。 Rubyfuck.new do |_| _.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_[ _.>_.+_.+_.+_.+_.+_.+_.+_.>_.+_.+_. +_.+_.+_.+_.+_.+_.+_.+_.>_.+_.+_.+_.>_.+_.<_.<_.<_.<_.-_]._.>_.+_.+_. /_.>_.+_./_.+_.+_.+_.+_.+_.+_.+_./_./_.+_.+_.+_./_.>_.+_.+_./_.<_.<_. +_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_.+_./_.>_./_.+_.+_.+_./_.-_. -_.-_.-_.-_.-_./_.-_.-_.-_.-_.-_.
日々の流転 トラックバックスパムを大量に喰らったので、トラックバックを一時的に無効にしています。 λ. A brainf*ck interpreter in Prolog ふと、現実逃避にPrologでBrainf*ckの簡単なインタプリタを書いてみた。 brainfuck(Src) :- bf(Prog, Src, []), !, seq(Prog, []*[0], _). bf([]) --> []. bf([X|Y]) --> bf1(X), {!}, bf(Y). bf(X) --> [_], bf(X). bf1('>') --> ">". bf1('<') --> "<". bf1('+') --> "+". bf1('-') --> "-". bf1('.') --> ".". bf1(',') --> ",". bf1(w(X)) --> "[", bf(X), "]".
Obfuscated Python What good is a programming language that you cannot obfuscate ? See. So, for your pleasure, here are some obfuscated Python treats. A Brainf*ck interpreter Python can run Brainf*ck programs with the help of this little interpreter: import sys z,x,y= "}{|}A|k{|kA|}=BE1)|BF}))|$}:~pI~/;@Go{H%{&A?|if }:~pJ"\ "IJ-1~#>=0:GoAG@HG;o{G;%-I&{?|m,kJ,j=C?;/@~o{~D:Gl[c]("\ ")?","G$p:%~;%~;el
数学ゴルフが終了したようです。僕の解答も niha さんのと同じです。それはともかく、数学ゴルフの言語の入出力拡張版*1を提案されていました。とりあえず turing 完全であることを確かめるため brainfuck インタプリタを書こうと思ったのですが、面倒だったので brainfuck から数学ゴルフへの変換を定義してみました。 テープのエンコード 僕も変数の数は有限な方がかっこいいと思うので、テープをエンコードするために多倍長倍数を使うことにしました。テープ上の各セルは 1 バイトとして、以下の 3 変数でエンコードします。 l : ポインタ位置より左側の数字を多倍長で表現する m : ポインタ位置の数字を表現する r : ポインタ位置より右側の数字を多倍長で表現する 例えばテープが [1, 2, 3, 4, 5, 6, 7] で、ポインタが 4 の位置を指している状態は l = 3
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く