Как я могу уникальным образом сократить список строк так, чтобы их длина не превышала x символов

Я ищу алгоритм, который будет принимать вектор строк v1и возвращать аналогичный вектор строк v2, где каждая строка меньше x. ] символов долго и уникально. Строки в v1могут быть неуникальными.

Хотя мне нужно принять ASCII в v1, я бы предпочел вставлять только буквенно-цифровые символы ( [A-Za-z0-9]), когда вставка новых символов обязательный.

Очевидно, что здесь есть три оговорки:

  1. Для некоторых значений v1и xне существует возможного уникального v2. Например, когда v1имеет 37 элементов и x == 1.

  2. «Подобное», как указано в вопросе, является субъективным. Строки будут обращены к пользователю и предположительно будут короткими фразами на естественном языке (например, «количество цветов»). Я хочу, чтобы человек мог как можно проще сопоставить оригинал с укороченной строкой. Вероятно, это означает использование преимуществ эвристики, такой как расчленение. Поскольку, вероятно, не существует объективной меры моей конструкции подобия (вероятно, расстояние между строками не будет самым полезным здесь, хотя и может быть), мое суждение о том, что хорошо, будет произвольным. Метод должен подходить для английского языка — другие языки не имеют значения.

Очевидно, что это (программирование) независимая от языка проблема, но я бы одобрил реализацию на python (потому что я нахожу его язык обработки строк простым).

6
задан fmark 2 April 2012 в 06:16
поделиться