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

一応ディレクトリツリー作ってみた。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php
function ls($pathlist,$path)
{
    $fs=array();
    $path=trim($path,'/');
    foreach($pathlist as $file)
        eval('$fs[\''.str_replace("/","']['",$file).'\']=1;');
    return eval('return array_keys($fs[\''.str_replace("/","']['",$path).'\']);');
}

$pathList = array("aaa/bbb","aaa/ccc","aaa/ddd/eee","bbb/ddd/eee");
print_r(ls($pathList,"aaa/"));
print_r(ls($pathList,"aaa/ddd/"));
?>

Index

Feed

Other

Link

Pathtraq

loading...