Hatena::Groupkakisute

g5nの書き殴り

2007-11-29

行の集合演算をするワンライナー

11:52 |  行の集合演算をするワンライナー - g5nの書き殴り を含むブックマーク はてなブックマーク -  行の集合演算をするワンライナー - g5nの書き殴り

a.txt にファイルパスのリストがあった。そのうち、疑わしいものを b.txt に入れて分かる人に投げたら、b.txt のうち c.txt の部分以外は不要という回答があった。さて、a.txt で生き残るのはどれか。ただし、見易さのために空行が含まれている。

行末をWindows形式にするのに nkf -Lw をつかった。

golfer がどう書くのか、あるいは同じことを MS Office しか使えない人がどうするのかは気になるところ。

% ruby -e '
    a,b,c = ARGV.map{|i| 
      File.read(i).scan(/\S+/)
    }; 
    puts a - (b - c)
  ' [a-c].txt | 
  sort | nkf -Lw > a-b+c.txt

なお、じっさいには、ファイルパスはあるウェブサイトの DocumentRoot からのパスであり、分かる人に b.txt を投げるときに確認しやすいように、a.txt の各行頭に http://example.com を付加したので、それを消すということをやった。

% ruby -e '
    a,b,c = ARGV.map{|i| 
      File.read(i).scan(/\S+/).map{|j| 
        j.sub("http://example.com", "")
      }
    };
    puts a - (b - c)
  ' [a-c].txt | 
  sort | nkf -Lw > a-d+n.txt

ここに書くとき、上のドメイン名の置き換えみたいなのがめんどくさいんだよなあ。これがなかったらコピペで終わるんだけど。