Thử thách:
Tôi có hàng ngàn bài hát trong bộ sưu tập nhạc của mình và may mắn cho tôi, trình phát yêu thích của tôi có chức năng tìm kiếm. Tôi cũng có một trí nhớ tuyệt vời, tôi có thể nhớ tiêu đề của mỗi bài hát trong bộ sưu tập của mình. Tuy nhiên, tôi rất lười biếng và không thích gõ vào mỗi lần gõ phím thêm là một việc vặt!
- Chuỗi ngắn nhất tôi phải tìm kiếm để cô lập một bài hát là gì? Giúp tôi ghi nhớ một danh sách các phím tôi có thể sử dụng để giảm thiểu việc gõ khi tìm kiếm!
Đây là mã golf , vì vậy mã ngắn nhất sẽ thắng.
Quy tắc:
Đưa ra một danh sách đầu vào của các tiêu đề bài hát, tạo một danh sách các khóa tìm kiếm theo các ràng buộc sau:
- Mỗi tên bài hát nên có một khóa tìm kiếm.
- Tổng số ký tự trong danh sách đầu ra phải càng ít càng tốt.
- Trình phát nhạc yêu thích của tôi là foobar2000 :
- Chức năng tìm kiếm không phân biệt chữ hoa chữ thường. (
apple
giống nhưaPpLE
). - Mỗi khóa tìm kiếm phải bao gồm một hoặc nhiều "từ", theo bất kỳ thứ tự nào, được phân tách bằng dấu cách:
- Mỗi từ phải là một chuỗi con của tiêu đề bài hát tương ứng.
- Nếu cùng một chuỗi con được chỉ định nhiều lần, thì nó phải xuất hiện nhiều lần trong tiêu đề bài hát tương ứng của nó.
- Nếu một chuỗi con tự nó chứa một khoảng trắng, thì chuỗi con đó phải được bao quanh bằng dấu ngoặc kép.
- Chức năng tìm kiếm không phân biệt chữ hoa chữ thường. (
Gợi ý:
- Thông thường, đối với một số tên bài hát, có nhiều quy tắc đáp ứng cuộc họp 2. Trong trường hợp như vậy, bất kỳ một phím nào cũng được, nhưng bạn sẽ nhận được điểm brownie để liệt kê tất cả.
- Bạn có thể cho rằng danh sách đầu vào sẽ chỉ có các ký tự ASCII, nhưng điểm brownie sẽ được trao cho khả năng tương thích UTF-8.
- Quy tắc 3 có khó thực hiện không? Đây là cách nó hoạt động:
Thí dụ:
Nếu bộ sưu tập nhạc của tôi chỉ bao gồm hai album, thì Michael Jackson's Off the Wall và Thriler :
Bạn có thể sử dụng các danh sách trên để kiểm tra chương trình của bạn. Đây là phiên bản thô của danh sách thứ hai:
["Don't Stop 'Til You Get Enough","Rock with You","Working Day and Night","Get on the Floor","Off the Wall","Girlfriend","She's out of My Life","I Can't Help It","It's the Falling in Love","Burn This Disco Out","Wanna Be Startin' Somethin'","Baby Be Mine","The Girl Is Mine","Thriller","Beat It","Billie Jean","Human Nature","P.Y.T. (Pretty Young Thing)"]
["Wanta Be A Wanna B","Wanta Bea A Wanna B","Wanna Be A Wanna Bea"]
?