Вроде, элементарная штука, и должна быть в открытом доступе. Но ни один из существующих алгоритмов не подходил под нашу задачу, и мы решили сделать его самостоятельно.