忍者ブログ
萌え指向プログラミング言語「萌香」のBlog
×

[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


忍者ブログ [PR]
カレンダー
10 2019/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新CM
[11/30 Lehar9296 ]
[11/19 Bihler7840 ]
[04/09 pavelvolinkins]
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
バーコード
ブログ内検索
アクセス解析