Чуть проще функция dirs
Возможный алгоритм