challenge 擬似lsの実装

スラッシュで区切られた文字列の配列(以下パスリスト)がある。
このパスリストにたいして擬似的なlsを行いたい。
lsはパスリストと表示対象ディレクトリのパスを入力する。

例としては以下のようになる。
pathList = ["aaa/bbb","aaa/ccc","aaa/ddd/eee","bbb/ddd/eee"]

ls(pathList,"aaa/")
>["bbb","ccc","ddd/"]

ls(pathList,"aaa/ddd/")
>["eee"]

なおパスリストが大きくなったとき、速度がなるべく低下しないように実装するのが望ましい。
文字列は任意の文字コードであると仮定してかまわない。

Posted feedbacks - diff

本筋とは関係ありませんが,lslRの出力が絶対パス(?)となっていたのを,相対パスでの出力となるように修正しました.

pp x.lslR('bbb')
=> ["ddd/eee", "baz/hoge", "foo", "bar"]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
--- pseudo-ls.rb.orig   2007-11-27 21:20:03.000000000 +0900
+++ pseudo-ls.rb        2007-11-27 21:20:16.000000000 +0900
@@ -30,7 +30,7 @@

   def traversal(prefix = '')
     @files.map do |name, file|
-      file.traversal(prefix + self.name)
+      file.traversal(prefix + file.name)
     end.flatten
   end

@@ -79,7 +79,7 @@
   end

   def traversal(prefix)
-    return prefix + self.name
+    return prefix
   end
 end
 __END__

Index

Feed

Other

Link

Pathtraq

loading...