Tôi đang tìm một thuật toán sẽ lấy một vectơ của các chuỗi v1
và trả lại một vectơ tương tự của chuỗi v2
trong đó mỗi chuỗi nhỏ hơn x
ký tự và độc đáo. Các chuỗi trong v1
có thể không phải là duy nhất.Làm cách nào tôi có thể rút ngắn một danh sách các chuỗi sao cho chúng dài tối đa x ký tự
Trong khi tôi cần chấp nhận ASCII ở v1
, tôi chỉ muốn chèn các ký tự chữ và số ([A-Za-z0-9]
) khi cần nhập ký tự mới.
Rõ ràng có ba hãy cẩn thận ở đây:
Đối với một số giá trị của
v1
vàx
, không có khả năng độc đáov2
. Ví dụ: khiv1
có 37 thành phần vàx == 1
."Tương tự" như được chỉ định trong câu hỏi là chủ quan. Các chuỗi sẽ được người dùng đối mặt và có lẽ là các cụm từ ngôn ngữ tự nhiên ngắn (ví dụ: "số lượng màu"). Tôi muốn một con người có thể ánh xạ bản gốc đến chuỗi rút gọn dễ dàng nhất có thể. Điều này có thể có nghĩa là tận dụng lợi thế của heuristics như disemvoweling. Bởi vì có lẽ không có thước đo khách quan nào về cấu trúc tương tự của tôi (khoảng cách chuỗi có lẽ sẽ không hữu ích nhất ở đây, mặc dù nó có thể) phán xét của tôi về những gì tốt sẽ là tùy ý. Phương pháp này phải phù hợp với tiếng Anh - các ngôn ngữ khác không liên quan.
Rõ ràng đây là vấn đề bất khả tri về ngôn ngữ (lập trình), nhưng tôi sẽ ưu tiên thực hiện trong python (vì tôi tìm ngôn ngữ xử lý chuỗi thẳng về phía trước).
Ý của bạn là gì? 'Tôi chỉ muốn chèn ký tự chữ và số ([A-Za-z0-9]) khi chèn ký tự mới.' – jamylak
Điều này nghe giống như một vấn đề thú vị, nhưng tôi đang đấu tranh để xem chính xác những gì bạn đang yêu cầu. Bạn có nghĩ rằng bạn có thể cung cấp một ví dụ rất đơn giản về đầu vào và đầu ra mong muốn không? –
Ngoài ra, mức độ "rút ngắn" chúng ta đang nói đến là gì? Số lượng màu sắc -> nmbr của clrs, hoặc số lượng màu sắc -> n o c? –