C#でRubyっぽく

いったい何番煎じなのか.

色強調

(元画像のソースは不明)iPhoneアプリの画像加工系のを見てて,LDR画像からHDR画像っぽく加工できないかなと思って作ってみた.手順は: 画像をhsvに変換して, h単位でs,vのヒストグラムを取得, s,vを補正する. rgbに戻す. 最初は画像全部のヒストグラム…

スリープ探索

スリープ探索アルゴリズム[Chishow PRESENTS BLOG] 最初は,スリプーソートのインパクトと比べて弱いなーと思ったんだけど,コスト比較とコスト計算が分離できるのは悪くないんじゃなかろうかと思えてきた.多分,A*とかで書いたほうが早いだろうけども. ス…

group

フラットな配列を指定の数ずつまとめる.たまにあったら便利なのにと思いつつ,必要になるたびに手書きしてる. すでに標準であったりして. class Array def group(n=2) return [] if empty? if false and (size % n != 0) puts "error in group #{size}%#{…

ヤクの毛刈り中

一つライブラリを試してみたかっただけなのに: ruby1.9.1のソースをDL コンパイル(ruby1.9をコンパイルしたのは,VC6を入れなおすのが面倒だったから.) zlibのソースをDL コンパイル Mercurialをインストール MozillaのソースをDL (コンパイルもしなきゃ…

エスケープ

xmlつうかrssで取得した中身に入ってる をどうやったら戻せるのか?そもそも>を'>'に変換することをなんていうのか分らないので検索さえできない.グーグル先生を問い詰めて,実体参照とかエスケープとかいうキーワードを聞き出すものの,常識的過…

Top Down Operator Precedence

beautiful codeの 9章 下向き演算子順位解析を写経してみたら,いろいろ端折ったのに500行以上になった.思ったより長い.最初の所はこんな感じ: $original_symbol = Prototype.new $original_symbol.error = lambda() {|x| raise x } $original_symbol.nud…

class Prototype def initialize @_method_list = {} end def _my_eval(*_str, &block) _s = (class << self; self; end) if block_given? _s.module_eval &block else _s.module_eval _str[0] end end def method_missing( _name, *_args) if _name.to_s =~…

俺言語暫定終了

rubyとluaとcを足して3くらい右シフトしたやつ. fun main() { print( fact(5)) // => 120 a = Point( 1, 2) a.pn() // => 1, 2 a.x = 4 a["pn"]() // => 4, 2 c = a c.y = 99 print( a.y) // => 99 書き換わってる… } fun Point(u,v) { var obj = {.x = u, …

俺言語とセミコロン

セミコロンを省略できるようにと,パーサと悪戦苦闘をしたあげく,スキャナ側で不要な改行を削るようにしてみたのだが,どうにも上手くいかなかったので,RHGのパーサの部分を読んでみた.スキャナで処理するところまではよかったのに,その後の爪が甘かった…

俺言語とクロージャ

ケース1: fun main() { var f; m = 1; { var m = 2; f = fun() { print( m); var m = 3; // このmは無名関数のローカル変数 print( m); }; } f(); // => 2, 3 print(m); // => 1 } ケース2: fun main() { var f; var m = 1; { f = fun() { print( m); }; var…

俺言語

cで;いらなくね?とか構造体もデザイネータがあればいけるんじゃね?と行き当たりばったりに弄っていたら訳が分らなくなってきた.ちゃんと考えないと.こんな感じになるといいなあ a = { .x, .y } a.x = 2 // セミコロン不要 a["y"] = 9 // ハッシュ?でも…

擬陽性からの回復

ウィルス疑惑 - ロバの耳で書いた,TCCのウイルス疑惑が気づいたら直ってた.TCCのソース読みも再開したいところ.

inject

class Array def sum() inject{|x,i| x+i } end end def f(n) n % 7 end def g(n) # 3*f((1..7).inject{|x,k| x+k**n}) 3*f((1..7).map{|k| k**n}.sum) end p f(10) #=> 3 p g(6) #=> 18 injectがいるのが気持ち悪く感じる体になってしまった.合計を求める…

メンテ奉行

備忘録はもともと自分がrubyの勉強のために書き散らかした奴で今見ると(そんなに進歩してないけど)これはどうよ?みたいなコードもあると思う.コメント欄の下に出てるgoogleでの検索と思われるurlを見ると,それなりに備忘録の内容目当てで来る人がいるら…

編集距離のライブラリ化

入力した単語と数万語の辞書とで総当りで編集距離を計算させてみたら,30秒以上掛かったので,cで書き直してライブラリ化してみた.同じ処理で0.7秒前後まで縮まった.繰り返し使うなら,手間は掛かってもライブラリ化する価値はあるなあ.参考にしたページ…

編集距離

レーベンシュタイン距離または編集距離で検索をするとそのものズバリなWe retire raa.ruby-lang.orgが見つかる.使い方は簡単: require 'text' p Text::Levenshtein.distance( 'hello', 'hollow') #=> 2 2007-12-18 - 新言語 Xtalを作る日記から,丁稚な日…

ウィルス疑惑

念のために全ディスクを検索中だけど…Jotti's malware scanでの検査結果: I-worm/Nuwar.Lって出るのAVGだけだし誤検出で確定なような. tccを動かすたびに,AVGを停止させているので不便でしょうがない.もちろん,アンチウィルスソフトを止めるのは自己責…

tcc(3)

まったく何も分ってないけど,適当にコードを切り貼りしたらforの中で変数を宣言できるようになった.しかしコンパイル早いなー.tccで改造したtccをコンパイルしなおして,それでテスト用のソースをコンパイルしても一瞬で終わるよ.

tcc(2)

もしかして…と思ったら,やはりこれもコンパイルできない. int main( void) { for(int i=0;i<10;i++) { printf("%d\n", i); } return 0; } ANSI C grammar (Yacc)を見ると,forの初期化部には式だけで宣言は書けないことになってる.それが標準だったのか.…

tcc

tccのnext_nomacro1を読んでいて気づいたんだけれど, int foo; int main( void) { f\ o\ o = 1; printf("foo %d\n", foo); } こんな書き方が許されていたのか… 以前にc.yを読んでいて気づいた変態的な書式 int main( void) { int i; for(i=0;i<5;i++) { for…

TCC w/o MinGW

AMAgrammar <> PROgrammer: TCCを手に入れてみた……けど……をMinGWをいれずにやってみた.動けばいいやと適当にやったのでかなり泥臭い方法になってしまった.tccのソースを読めばもう少しマシな方法が分るかも.とりあえず config.hに#define LIBTCCを追加し…

非決定性プログラム

SICP 4.3.2 - ロバの耳ではcallccを使わずに済ませたけれど,そろそろcallccを使えるんじゃないかと思って挑戦してみた.…80行もあるすごくブサイクなやつが出来た….しかもかなり使いにくい. 関西オープンソース2005発表, 非決定性計算, KOF宴会 - Journal…

遅延評価

lambdaを使えば遅延評価が出来ると知ったので,たらい回し関数でテストしてみる.たらい回し関数は青木日記 2003-03-15から持ってきた. def tarai( x, y, z ) if x <= y then y else tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)) end end …

誰のためのデザイン?

今年に入ってから変えたこのページのテーマ,結構気に入っているんだけれど,会社で仕事中に見るのは躊躇われるね.元々,備忘録のページは仕事中に使うアンチョコとして作ったのに,これでは本末転倒ではないですか.どうしようかな.しばらくはこのままで.

1.9.0(2)

1.9ではpが返り値として引数を返すらしい.すごい便利じゃないですか. def test_1_8() ret = [1,2,3].map{|x| x * 2} p ret ret end def test_1_9() p [1,2,3].map{|x| x * 2} end いままではデバッグプリントするのに test_1_8のように書いてたのが,test_…

1.9.0

雑用にスクリプトを書いてて,こんな処理が欲しくなった. idx = %w[max abs sin cos].index{|x| x=~/\Aa/ } リファレンスにはあるのに,どうして動かないんだ!と思ったら1.9 featureか. 1.9に乗り換えようか.1.8系にバックポートしてくれないかな.てい…

デザイン変更

なんとなくデザインを変えてみた.ついでにページビューも表示するようにしてみた.こんな機能あったんだ.デザインのチェックで,ページを行ったり来たりしてる上に,気になって何度も見にきているので自分だけで20以上も踏んでる.

ラムダ計算(3.1)

一度書いたやつを書き直しました.元の式はこんびねーたv - 女子大生ぷろぐらまーなお☆ないわー Not Foundのブログ9.0から. ここが大元? i = Rambda.new("(λx. x)") k = Rambda.new("(λx. (λ y. x))") s = Rambda.new("(λx. (λ y. (λ z. ((x z)(y z)))))"…

ラムダ計算(2)

適当にソースを整理してみた.applyの代わりに[]で適用できるようにしたり.しかし,もっと綺麗に書けると思うんだけど.ラムダ計算 - Wikipediaを参考に適当に書いただけなので,思い切り勘違いしているかも.zeroとsuccのラムダ式があれば,そこからすべて…