Я ищу алгоритм, который будет принимать вектор строк v1
и возвращать аналогичный вектор строк v2
, где каждая строка меньше x
. ] символов долго и уникально. Строки в v1
могут быть неуникальными.
Хотя мне нужно принять ASCII в v1
, я бы предпочел вставлять только буквенно-цифровые символы ( [A-Za-z0-9]
), когда вставка новых символов обязательный.
Очевидно, что здесь есть три оговорки:
Для некоторых значений v1
и x
не существует возможного уникального v2
. Например, когда v1
имеет 37 элементов и x == 1
.
«Подобное», как указано в вопросе, является субъективным. Строки будут обращены к пользователю и предположительно будут короткими фразами на естественном языке (например, «количество цветов»). Я хочу, чтобы человек мог как можно проще сопоставить оригинал с укороченной строкой. Вероятно, это означает использование преимуществ эвристики, такой как расчленение. Поскольку, вероятно, не существует объективной меры моей конструкции подобия (вероятно, расстояние между строками не будет самым полезным здесь, хотя и может быть), мое суждение о том, что хорошо, будет произвольным. Метод должен подходить для английского языка — другие языки не имеют значения.
Очевидно, что это (программирование) независимая от языка проблема, но я бы одобрил реализацию на python (потому что я нахожу его язык обработки строк простым).