sed の検索結果:

ELVM Compiler Infrastructure について

…18/095437 sedlisp, beflisp, makelisp, bflisp 色々あって、Esolangですごく簡単なLisp処理系を書く、というのがマイブームになったことがありました。 GNU sed と GNU make は完全手書きでした。sedlisp を書いた時から、 @rui314 さんは「手書きじゃなくて中間層を介して変換した方が良いのではないか」と言っていたのですが、 sed や make だと、計算モデルが違いすぎるので直接書く方がラクかなという…

システムプログラミング会

…会的な感じで、closedに人集めてウダウダやるつもりだったんですが、途中でPFNさんに場所貸していただけるということで、不特定な人を呼ぶことになって、当初想定してたより大袈裟な会になりました。適当に募集すると人が集まって自己顕示欲が満たされるとか、普段得られない種類のフィードバックが得られたり交流ができる、てのがあるわけですが、めんどくさいのとグダグダ雑談がしにくいのが難点ですね。まあ自分自身が一般的に募集されてる会で勉強した面もあるわけで、そういうのの恩返しになるかもとい…

bflisp.bf

…ck で。だいたい sedlisp や beflisp や makelisp と似たようなことができます。ちょっとバグあるみたいですが。Malbolge は実装不能だと思うので、これ以上なくキツいターゲットじゃないかと思っています、ので Lisp シリーズはこれで最後でないかと。というか現世的な速度で動くとは思ってなかった。月なみですが、今のパソコン速いですねー。実現は簡単な 16bit ハーバードアーキの CPU を定義して、魔改造した 8cc で lisp.c をその C…

makelisp.mk

…縛りです。だいたい sedlisp や beflisp と似たようなことができます。最近作ってる GNU make clone であるところの kati でもちゃんと動きます。というか fizzbuzz.l とかだと 50 倍以上速い。実装はまあ、やるだけ…と言いたいところですが、加減乗除が無いとか、文字列演算も色々不便とかあったりはします。あと地味に引数以外にローカル変数が無いのもだるいですね。当初は lisp to make translator を実装する感じがラクかな…

Python 2/3 で小文字アルファベットと丸括弧だけで Quine を書く

…next(reversed(range(i))) で i-1 ができるということと、 @phoenixstarhiro が unichr(x)in(list(unichr(y))) で x==y ができるということを発見してくれたため、現実的なサイズで Quine が書けました。https://raw.githubusercontent.com/shinh/hack/master/alparen_py/alparen_quine.pyhttps://raw.githubuse…

beflisp.bef と LLVM Befunge backend

…めました。 前回の sed と違って Befunge は数値演算は素直に提供してくれてるので、アドレス計算なんかをするプリミティブが提供しやすいです。ただ、 Befunge-93 は文字列とか関数コールという概念が無いので、手動でフロー管理するのは地獄でしょうね…ということで、 C で lisp を書いて、それを clang で LLVM bitcode に変換してから、トランスレータで Befunge に変換、という構成になっています。 実装 トランスレータは任意の C コ…

sedlisp.sed

…com/shinh/sedlispLisp インタプリタを書きました。 sed で。https://github.com/shinh/sedlisp/blob/master/sedlisp.sedREADME に書いた通り、それなりにややこしいプログラムも動く気がします。具体的には eval.l として、 eval の無いところで eval を実装しました。で、その上で FizzBuzz なんかが動きます。これはつまり S 式のパースは省略した Lisp のインタプリタと言っ…

Code Zip

…or 1..<> Perl6 でも書いてみたけど 1B 長い。 printf("%f ",get**2*17/6)for^get Bash でも書いてみたけど 1B 長く、そして何故か WA 喰らうので謎。これが WA じゃなければ、これをゴルフすればもうちょい短くなる気がするんだけどな。 dc -e'6k?[?d*17*6/pr1-d0<L]dsLx'ちなみに入出力が常識的なものだったら 9B くらい縮んで楽勝だったんですがね… sed '1!a6kd*17*6/p'|dc

\BV interpreter in sed (ICFPC 2013)

…543210' | sed -f bv.sed 0x91A2B3C4D5E6F7コード。 GNU sed と Mac の sed で動作確認 h s/.* // s/0x// y/abcdef/ABCDEF/ s/^/0000000000000000/ s/.*\(.\{16\}\)$/\1@/ :hex2bin s/$/;10;32;54;76;98;BA;DC;FE/ s/\(.\)@\([^;]*\).*;\1\(.\).*/\3@1\2/ s/@\([^;]*\);.…

clearstack

…location used in alloc() is not used in this function. void* p; // The allocated memory will be properly reclaimed even without our // clang plugin if we have this line. // p = NULL; asm(""::"m"(p)); main_loop(p); } int main() { GC_init(); …

20th IOCCC 入賞

…ここの Set based solver ぽいのを bit 演算で実装して、あとは適当にゴルフしてたらこのサイズにおさまるようになりました。たしか空白コメントのぞいて 2kB くらいあったコードを 1kB くらいまで縮めました。予想以上に回りの数字がコードサイズを消費しちゃうなぁとか思っていました。整形する前のコードはたぶんこれです。http://shinh.skr.jp/dat_dir/nonogram6.c他の入賞コードも一通り見たんですが、とりあえず akari.c が…

正規表現 FizzBuzz メモ

wake と sed のセパレータがちょっと違う場所があったのを適当に修正。 \%!; until (/;/) { #|fizzbuzz: l1,1 #%! { : } \%!; $\=$/; #\(\) #|k(.);.*\1(.).*:"$2" #%! s/$/;0123456789;/ \%!; s/$/;0123456789;/; #|j(.):k$+;0123456789 #%! s/9;\(.*;\)/;\10/ \%!; s/9;(.*;)/;${+}0/; #…

拡張正規表現でカウンタを書く

…きな言語のひとつに sed っていうか正規表現があるので、それについて。どの程度好きかというと、ほとんど 正規表現しか無いような wake という esoteric language を作ってみたことがある程度には好きな感じです。正規表現ってヤツは普通文字列のマッチングに使うやつで、もちろんループとかは書けないわけですけど、しかしまぁちょっとした計算くらいなら割とできたりします。ループや出力の部分だけ、元の言語の機能から借りてやれば、割と色んなプログラムが書けます。例えば F…

StringPiece というライブラリの話

…\ int elapsed = clock() - start; \ assert(!strcmp(joined.c_str(), "/tmp/hoge.c")); \ printf("%s %f\n", msg, (double)elapsed / CLOCKS_PER_SEC); \ } while (0) int main() { const string& dir = "/tmp"; const string& base = "hoge.c"; string join…

wake 続き

…。このへんによると sed 好きな人にそれなりに遊んでもらっているようなので良かったなーと思いました。http://jarp.does.notwork.org/diary/http://ls-al.jp/blog2/そういえば partial match じゃなくて full match ではまる、ってのは私もよくやります。 partial match を指示できる記法とか、 Perl の s///ge 的なのはあってもいいのかなーとは思ったんですが、まぁ make ぽさを殺…

プログラム言語 wake

…いかなと思います。 sed と比較すると、 fizzbuzz 書くまでの時間とか考えるとだいぶラクだったかなぁとか思います。別にラクさを目的として作ったわけじゃないですが。ミニマルな言語としては、こんなもんかなぁと思うのですが、なんか機能を足すとしたら、整数演算くらいは欲しいかな…とは思います。 $[...] があったらその中身を四則演算する、くらいかなぁと(追記: どっちかというと、 include をできるようにして、標準ライブラリとして提供すればいいか…)。昨日思いつい…

回文

…クリです。 # based on http://d.hatena.ne.jp/KeisukeNakano/20070626/1182879045 # usage: beef =(ruby palin_bf_q.rb) > palin_quine.bf hash = { '+'=>'>>', '-'=>'>++>', '.'=>'>+++>', '<'=>'>+>+', '>'=>'>+++>+', '['=>'>>+++', ']'=>'>++>+++', } code='+…

2009年度言語雑談会

…はちょっとどうなのかなーとかいう。sed が好き: なんで好きかっていうとやれることができるギリギリっていうのもあるけど、正規表現が好きで好きでしょうがないというのが一番の理由だったと思いだした。ゴルフで問題を部品に分解して組んでいくことができない: ゴルフ以外というか普通にプログラム解く時は当然できるということを言い忘れた。一般的に optimization ってのは global にやればやるほど圧倒的に大変になるけど、しかし成果物は少し良くなるって意識が強いんだよなぁ。

人材獲得作戦.sed

…6.html適当に sed で解いてみた。サイズ決め打ちで書いたら割と簡単だった… H ${ x # initialize seen positions h x s/.\(.\{25\}\).S.\(.\{25\}\)./*\1***\2*/ x # initialize initial state of the queue s/S /SN/ /N/{H;s/N/ /} s/ S/NS/ /N/{H;s/N/ /} s/\(S.\{26\}\) /\1N/ /N/{H;s/N…

WebKit について (コード)

…cialTagParsed みたいな変数を作ったら、「special とかじゃわからんがな」と怒られて、「うんそうだねじゃあこっちの関数名もなおしとくね…」といじった記憶があります。一方で省メモリや高速化なんかの点では、これはなかなかすごく頑張ってるように思います。まず省メモリについては、そこらじゅうで bit field が使われてるとかいう時点で既にアレです。あとは共有できるものはなるべく共有するというのもよくやられています。例えば RenderStyle というスタイル…

qif2.rb

…uYmB51HrrtSEDJ4AHcrxcxt1Ro55dX19XG1wz 9u0pWG66JGnVGcpWr/A62MIAQ='.unpack 'm';include( Zlib);eval(Inflate.inflate(c.at 0))));by(shinh) いいところはリバーシブルなところ。出力された gif を ruby なり perl なりで実行すると元の rb が出てくるです。 % diff =(perl =(ruby1.9 =(ruby qif2.gif))…

年末

…るっぽい。Proposed Wording for Placement Insert: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2680.pdfTODO: 来年あるなら herumi さんをお誘いする。 http://homepage1.nifty.com/herumi/diary/0812.html#28 拉致、移動 なぜか IM 飲み会というものに参加させていただくことになっていて、 Cryolit…

C++0x メモ

…ability-Based Leak Detection (revised) http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htmGC をサポートするほげほげ。下記が詳しい。http://d.hatena.ne.jp/faith_and_brave/20081117/1226913980 N2802: A plea to reconsider detach-on-destruction for th…

binspect

…4], [:clrUsed, 2], [:clrImportant, 2], ]]] palette = [:palette, [ [[:r, 0], [:g, 0], [:b, 0], [:unused, 0]], [[:r, 255], [:g, 255], [:b, 255], [:unused, 0]], ]] bmp = [fileHdr, infoHdr, palette] bin = BMP.new.dump(bmp) bin += %Q( BEGIN{puts…

Ruby Kaigi 2008

…ード書いてて、あと sed で Compound interest 解いたけど案の定タイムアウトとかしたりしてました。かけ算とか無理です。んでから講評とかしなければならなかったのですが、誰が1位かさっぱりわからないとか、自分のコード説明するけどそれとっくに破られてるし、とか色々ひどかったです。プレゼン用の html はその場で html を出力するプログラムを書いた。なんかしら参加して下さった方々ありがとうございます。リモートで旗包み系なコードを投稿して下さった本職の方々もあ…

__dyld_stub_binding_helper_interface で落ちてた件

…might be used as parameters movl %ecx,ECX_SAVE(%esp) movl %edx,EDX_SAVE(%esp) movdqa %xmm0,XMMM0_SAVE(%esp) # ここで落ちた movdqa %xmm1,XMMM1_SAVE(%esp) movdqa %xmm2,XMMM2_SAVE(%esp) movdqa %xmm3,XMMM3_SAVE(%esp) まぁ要はとりあえずレジスタの値保存しておいてから bind する関…

ファイル種類統計

今度はホームディレクトリ以下にあるファイルのファイル種類を調べてみた。展開したアーカイブが結構多いんだろうなーというかんじ。でも正直なんでなのかよくわからんファイルも多いな。 XML 10位とか。今回使ったソースコード。要 libmagic-dev と gchartrb 。http://shinh.skr.jp/koneta/ftstat.tgz % ln -s gchartrb-0.8/lib gchart % ruby extconf.rb % make % ruby f…

human readable digits

…!/usr/bin/ruby -p gsub(/\d+/){"%#{s=$&.size-1}s#{%w(T G M k)[4-s/3]}"%$&[0,s%3+1]} サンプル実行例。 i@uco ~> free|hrd total used free shared buffers cached Mem: 515k 500k 15k 0 122k 51k -/+ buffers/cache: 326k 189k Swap: 0 0 0ちなみに free -m とかは知ってます。

GCC とメタプログラミング

… \ done | sed 's|$(srcdir)/||' > tmp-gencheck.h $(SHELL) $(srcdir)/../move-if-change tmp-gencheck.h gencheck.h $(STAMP) s-gencheckとかやってファイル一覧を適当に sed とかでいじりつつ作っている。あと GCC でコード生成というと GGC とかが有名かと思います。 GGC は GCC 用の GC で、 gengtype* がメインのソースコードぽ…

ゆくとしくるとし

…ただし愛は Perl とか sed にそそがれていた(愛人)。つまりまぁあんまり新しい言語とかやらんかったような。来年は PostScript と J と Emacs LISP あたりができるようになってると良い。あと最近 D 見てない。来年といえばなんか毎年思ってる気がするけどゲーム作りたいなぁ。とかまぁそういうことばかり考えてると他のことを全くやらないのであった。最近非プログラマに現状を説明する時は「ゲームするよりマンガ読むよりプログラム書いてる方がラク」とか言っている。

カウンタとか加算器とか

… 1 1000 | sed ' # : はラベル。なんか知らんけど少なくとも GNU sed は無名ラベルも OK 。 : # 0 があるなら {} の中身を実行。 /0/{ # 入力をホールドスペースに退避しつつパターンスペースにホールドスペースを。 # パターンスペースには数値であらわしたカウンタを入れる予定。 x # 数値に _@0123456789_0 というサフィックスをつける。 # 19 って数値が入ってたとしたら 19_@0123456789_0 s/$/_@0…

sed で Quine

あなごるのデッドラインまでに書けたので嬉しかったのでした。 s/^/s_S^_SD_S;h;s!_[S]!_S!g;H;x;s!.s_S^.D!!;H;x;s@D.*[@].s@s@/;h;s!_[S]!/!g;H;x;s!.s/^.D!!;H;x;s@D.*[@].s@s@ 最初の s/// の中に書けない / を _S としておいて後から頑張って復元するんだけど、全ての _S を / にしちゃうと、今度はエスケープのままになってるべき部分とかも / になっちゃってムキーな…

DI って Unix マンセーってことですよねみたいな

…s sh&grep&sed&awk&sort みたいなそういう。つまりこう機能をあんまモノシリックにしすぎないようにして、直交性のある細かい部品を組み合わせて使うと個々のテストしやすかったり汎用性があがったり DI って言うと給料があがったりウハウハだぜーみたいな話だろうどうせという。そんなの Unix は 100 年前に通った道だよ。計算機ってのは道具である以上もっと人の思ってるようなことを適当に察して賢く動いて欲しい…みたいな話は理解はできるのですが、計算機ってのは道具で…

最近のあなごる sed 編

sed はいいよね、と思い出した。んで主に sed でちょっと複雑なことしてるものを。最近どの問題見てもまず sed で解くには…とか考えてる気がする。なんていうかただ解くだけでそれなりにカタルシスが得られて良いです。 lcs.sed http://golf.shinh.org/p.rb?LCS#sed問題文を一部流用するという話。 1h 1d /B/s/....\(.\{32\}\)/\1/ /a/{x s/aa/a/ s/ar/a/} /A\|a/!s/\(.\{51\}…

MacOSX で Window マネージャー的なことをやりたい using Accessibility API

…p, kAXFocusedWindowAttribute, &winRef); とかこんな感じで(castいるかも)、さっきのアプリの中でフォーカスのあたってるウィンドウを拾ってくる、とかができる。似たような感じで Window の中のタイトルを拾ってきたら Core Foundation の String がとってこれるし、 Window の中の最大化ボタンを拾ってきて、そのボタンを押したシミュレートをさせる、とかもできる。例えば今拾ってきた Window を上に持ってくる…

最近のあなごる

…()) csort.sed sed でソートする狂気。でも全然 eban さんにボロ負け情けない。 h s/^/ / :l s/@.*// /^\(.\)\1*$/{s/.// H be} s/^\(\(.\)\2*\)\(.*\)\2/\1\2\3@/ tl :e s/\(.\).*/\1/ y/ !,.\/:<Habcdefghijklmnoprstuvwy/!,.\/:<Habcdefghijklmnoprstuvwy@/ G s/\n// s/\n.*// /@/!b…

組み込み関数を活用しよう

…まれるかと言うと、 sed 由来の y という組み込み関数があるからこういうことになるのです。気をつけて下さいねー。で、次です。 % perl -le '$v=s///' # 合法 % perl -le '$v=+s///' # 合法 % perl -le '$v=-s///' # 非合法 Warning: Use of "-s" without parentheses is ambiguous at -e line 1. syntax error at -e line 1,…

アナゴル適当に公開

…);} hello.sed iHello, world! というわけで sed は入力無い問題も答えられるようになったのでみなさん sed を応援しましょう。 hello.bf 106B 。まだ縮むには縮むと思うんだけど flagitious さんに勝てる気は全然しない。 +++++++++[>++++>>+++>>+>>+[+<+<+++<+++<++<++<-[>>]<<]>-]>>.>++.>..+++.>>>-.<----.<++.<.+++.------.<-.>>…

…。 example.sed example はこれだけ頑張った。 sed かわいいよ。 smiley.rb, smiley.pl, smiley.scm わからない。なんでだろー。 permutater.rb 結構面白い問題だと思うんだけどあんまり人気が無いなーという。これは結構うまく書けた気がしている。 blank.rb 12B は exec だと信じたい。 15B は pure ruby で、まぁうーんうーんと考えるとできる。 blank.pl 回答他にもあるけど、 #!…

perl -p

…わけさー。要するに sed みたいな。あと -i と組み合わせると便利なのだよー。こないだ separation って書いてた部分はヘンだから distribution を使えって言われたので perl -i -p -e 's/separation/distribution/g' *.texとかしたんですよー。これで -p の結果をそのまま読み込み元のファイルに保存してくれるって寸法なのさー。要するに sed みたいな。ってこんなのはどうでも良くてですね。以下のようなコードが…

w3m の GOTO_RELATIVE

…_url = parsedURL2Str(current)->ptr; + /* char *c_url = parsedURL2Str(current)->ptr; */ + char *c_url = parsedURL2Str(&Currentbuf->currentURL)->ptr; if (DefaultURLString == DEFAULT_URL_CURRENT) { url = c_url; if (DecodeURL)そういえばこのパッチ書いてて気付いた…

w3m で現在指してる画像の URL をコピー

…') { + ParsedURL pu; + parseURL2(a->url, &pu, baseURL(Currentbuf)); + invoke_browser(parsedURL2Str(&pu)->ptr); + return; + } + + /* FIXME: gettextize? */ + message(Sprintf("loading %s", a->url)->ptr, 0, 0); + refresh(); + buf = loadGeneralF…

w3m の urimethodmap

…R) copyParsedURL(&b->currentURL, &pu); return b; +*/ } #endif /* FIXME: gettextize? */みたいな感じで。対象は w3m の CVS 先端。で、 urimethodmap をハンドルする準備は整ったので、適当にスキームをでっちあげるCGIを書きました。 #!/usr/bin/env ruby require 'nkf' require 'cgi' def nkf(e, u) CGI.escape…

なぜか断続的に sed の話を書いています

…書こうとして忘れていたのでした。http://www.tees.ne.jp/~sin-x/200610b.html#2001セパレータですが。手で書く場合は面倒なのですが、適当にコントロールコードつっこんでやればいいと思います。たしか \x00 はダメですが、他のはたいてい大丈夫だったような。さっき ssed の @ を ^S にしてみましたが問題なかったです。「"^S" は使っちゃうけません」なら制約としてはカスみたいなもんですね。ただこれだとコード生成はできないのですが。

sed with variable 構想

…の続きです。前回、 sed ってなにか…?という解いに対して、 sed は VM です、という回答を提示しました。 VM つーかマシン語をいじっていてめんどくさいのは、要するにレジスタなりスタック、 sed VM の場合レジスタの管理、これがめんどくさいのです。それならやるべきことは一つです。さぁ太郎君なんでしょう!? 使わなーい そう! sed VM 向けコンパイラを書けばいいんです!というかぶっちゃけ変数さえあればいいです。メモリの使いかた(決してホールドスペースなどと呼…

sed ってなんなの?

…のがあったのでした。sed ってなんなのかという、とてもよくある疑問に対して私なりの回答です。まず実用を考えると、 sed 's/hoge/hage/'このためだけに存在している言語です。メリットは perl -pe 's/hoge/hage/' より 4byte 短くてすむことだけです。これ以外の機能はスクリプト言語で十分なように思います。たまに勘違いしてる人がいる気がしますが、 y コマンドはカウンタを作るために存在しています。小文字を大文字に変換する、などと考えるとどの…

本気で sed で brainf*ck コンパイラ

…m なコンパイラを sed で書いたのですが、「bf のコンパイラとは bf の逆アセンブラのこと」であるという主張を読んで、ああ全くその通りだなぁうまいこと言うなぁと思うと同時に、じゃあ実行できるバイナリ吐けば単なる逆アセ扱いされないよね☆ということで根性で作りました。http://shinh.skr.jp/koneta/bfx.sed i@u ~/wrk/bf> time ./bfx.sed < hello.bf > hello ./bfx.sed < hello.bf …

sed で足し算

sed って足し算くらいできるんじゃないかと思ったので作ってみました。http://shinh.skr.jp/koneta/add.sed i@um ~> echo 1 1 | ./add.sed 2 i@um ~> echo 999 999 | ./add.sed 1998 i@um ~> echo 12345 54321 | ./add.sed 66666ICFPC のクソ(誉)言語どもに比べれば sed はマシなんじゃという疑念が…と、このあたりで 神々の偉業 のすさま…

sed で brainf*ck コンパイラ

…を出すコンパイラを sed で書いてみました。http://shinh.skr.jp/koneta/bf.sed実行例は、 i@um ~> ./bf.sed hello.bf | gcc -x assembler - i@um ~> ./a.out Hello World! i@um ~> ./bf.sed echo.bf | gcc -x assembler - i@um ~> ./a.out abcd123 abcd123 ABCD123 abcd123などと。ちなみに …

一番上のリンクにフォーカスをあてる

…4kcGetFocusedWindow(); var up = w.pageYOffset; var elems = w.document.getElementsByTagName('a'); var minDy = -1; var minElem; for (var i = 0; i < elems.length; i++) { var y = getElementPositionY(elems[i]); var dy = y - up; if (dy >= 0 && (m…

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h