質問: ["dir/a", "dir/b"]` どういうことかと言いますと、各配列要素の中身が要素の最小で一致している場合は、配列を要素の最小のみにしたいです。(比較対象は配列要素と配列要素、配列要素の中身のパスの最小ではないです。) `"dir/a/00"は"dir/a"と比較した時に、"dir/a" + αの形になっているため削除したいです。 (要素の最小というのは、ほかの要素と比較した時に一番小さい単位と言えば伝わりますでしょうか?)` よろしくお願いします。
回答: 多分こういうことですよね? ``` str = ["dir/a/00", "dir/a/01", "dir/a/02", "dir/a", "dir/b/00", "dir/b/01", "dir/b/01/abc", "dir/b/01/abc/def", "dir/b/02", "dir/b"] ss = str.sort p ss.reduce([ss.shift]) {|m,i| i.start_with?(m.last+"/") ? m : m << i} ``` 文字列の配列として普通にソートしておき、重複しないパターンだけ抽出する、という流れで書いてみました。ディレクトリ名の一部やファイル名にマッチしないように、重複判定では `/` を付加しています。 速くはないと思いますが、一例として。