萌え指向プログラミング言語「萌香」のBlog
[1]
[2]
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 ユメのチカラ Rubyで習作 に吉岡弘隆さんのRubyプログラムが掲載されていていろんな人が添削しています。 プログラムの内容は親(?)ファイルにLinuxディストリビューションのパッケージ情報が入っていて、 (複数の)子(?)ファイルにそれが入っている場合"include"と、入っていない場合"not-include"と表示するものです。 (各行がパッケージ名、各列が各ディストリビューションのテーブルとなる) 個人的には Tociyuki::Diary - 吉岡弘隆さんの「Rubyで習作」を添削 が非常に参考になりました。 特にArrayの最初の要素とそれ以外の要素を分けるために asianux, *dists = ARGV.collect do |filename|とやるとこなんかは自分のイディオムに入ってなかったので大変参考になりました。 自分は最初 mother = ARGV[0] children = ARGV[1..-1]なんてのを考えていました。 自分でやるなら結果をCSV形式にしてこんなかんじにしますでしょうか。 #!/usr/local/bin/ruby mother_name, *child_names = ARGV children = child_names.map {|name| aHash = Hash.new("not-include") IO.foreach(name) {|package_name| aHash[package_name] = "include" } aHash } IO.foreach(mother) {|package_name| tArray = [package_name] \ + children.map {|child| child[package_name] } puts tArray.join(", ") }テストデータがないためデバッグができないのでぜんぜん動かなかったらすみません。 とりあえずHashのデフォルト値を使ったので条件分岐がなくなったのがちょっとした利点です。 PR 「萌香」のコードを整理しようと思ってコードを読んだんですが、「末尾再起の最適化に関するメモ」というコメントがなにを書いてるんだかさっぱりわからない。ポルナレフAAを貼りたくなるぐらい何がなんだかわからない。なんか悪い薬でもやってたんだろうか。 きっと末尾再帰っぽいことがようやくできて舞い上がっていたんだろう。黒歴史として早く葬りたい。 解読してみる。 --- begin 本文 --- 本プログラムには変数のフレームのスタックと継続のスタックが存在します。 クロージャの呼出し時に 結局クロージャの実行時にフレームの復帰の継続がどんどん増えていくことに 以上のことから、フレーム復帰の継続の作製を抑制すれば末尾再帰の --- 本プログラムには変数のフレームのスタックと継続のスタックが存在します。 --- Lexical scopeのクロージャなので、クロージャの再帰呼出しではフレームのスタックが積まれることはありません。 --- (その呼出しへの参照が残っていた場合、そこに保持されている。) --- クロージャの呼出し時にフレームの退避 --> クロージャの実行 --> フレームの復帰と行うと、クロージャの実行時に末尾再帰呼出しがあった場合フレームの退避 --> クロージャの実行 -->フレームの退避 --> クロージャの実行 --> フレームの復帰 --> フレームの復帰となります。 --- 結局クロージャの実行時にフレームの復帰の継続がどんどん増えていくことになります。フレームの復帰は最後のものだけ行えばよく、末尾再帰の場合、フレームの復帰の継続を作製する場合、次の継続にフレームの復帰があった場合継続の作製は行う必要はありません。 --- 以上のことから、フレーム復帰の継続の作製を抑制すれば末尾再帰の最適化になることになります。 今まで簡略化されていた文字を元の文字?の表記に戻すらしい。d.hatena.ne.jp/NAOI/20070109/1168334642 ところでこれって字体 ?(グリフ ?)の変更というので正しいのでしょうか。変換は一対一で出来るのでしょうか。葛城市の問題は ? 高と髙はどうなるの ? 今回の変更はそこまでの問題は扱わず単純にグリフの変更で対応できるもののみ扱うの ? 文字コードは難しいです(> <;) ところで初めてのトラックバックなんだけどこれでいいのかな ? 引用元に迷惑掛けてないかな ? 萌え指向プログラミング言語「萌香」を公開してから1年経ちました。 この一年何もしてないように見えていろいろやってたんですよ。エイトクィーンの記事を書こうと悪戦苦闘してたのですがなかなかうまく書けなくって。人にわかる文章書くのって難しいですね。 ほんとは一周年のときにエイトクィーンの記事くらいは書きたかったのですが、あきらめて中途半端ですが順列の作成プログラムをアップするだけにしました。(一応エイトクィーンのプログラムも出来てたはずなのですがどっかいっちゃった。) 今後ともよろしくお願いします。
<<前のページ
|
カレンダー
カテゴリー
フリーエリア
最新CM
[11/30 Lehar9296
]
[11/19 Bihler7840
]
[04/09 pavelvolinkins]
最新記事
(05/04)
(03/13)
(02/18)
(10/30)
(04/17)
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
ブログ内検索
最古記事
(12/25)
(01/10)
(01/17)
(02/14)
(04/17)
アクセス解析
|