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 - Scala

毎回リストを与えるならちゃんと構造作ってもあまり意味ないかな。

1
2
3
4
5
6
7
def ls(plst:List[String], dir:String) = {
  (for(p <- plst if p.startsWith(dir)) yield {
    val a = p.substring(dir.size)
    val i = a.indexOf("/")
    a.substring(0,if(i<0){a.size}else{i+1})
  }) removeDuplicates
}

Index

Feed

Other

Link

Pathtraq

loading...