Diễn đàn lớn nhất trên web, được gọi là postcount ++ đã quyết định tạo một trò chơi diễn đàn mới. Trong trò chơi này, mục tiêu là đăng từ, nhưng từ này phải có một chữ cái được thêm, xóa hoặc thay đổi. Sếp của bạn muốn bạn viết một chương trình lấy từ và từ điển UNIX, khi bạn làm việc cho công ty có diễn đàn thông minh hơn với các trò chơi diễn đàn thông minh hơn và muốn phá hủy sự cạnh tranh (hey, đó là ông chủ của bạn, đừng thảo luận với anh ta, dù sao bạn cũng nhận được rất nhiều tiền từ công việc của mình).
Chương trình của bạn sẽ nhận được hai đối số, từ và từ điển. Vì người dùng quản lý chương trình (vâng, người dùng, công ty của bạn không có tài nguyên để chạy bot) không hoàn hảo, bạn nên bình thường hóa trường hợp trong cả hai. Các từ trong từ điển có thể có các chữ cái ASCII (cả chữ hoa và chữ thường, nhưng nên bỏ qua trong khi so sánh), dấu gạch ngang, dấu nháy đơn và khoảng trắng không liên tiếp ở giữa. Chúng sẽ không dài hơn 78 ký tự. Bạn phải đưa ra danh sách các từ sẽ được chấp nhận trong trò chơi, để phá vỡ niềm vui của những người nghĩ về từ đó bằng tay.
Đây là một ví dụ về chương trình dự kiến của bạn, kiểm tra các từ tương tự golf
.
> ./similar golf /usr/share/dict/words
Goff
Wolf
gold
golfs
goof
gulf
wolf
Đây /usr/share/dict/words
là một danh sách các từ, với dòng ngắt sau mỗi. Bạn có thể dễ dàng đọc nó với fgets () chẳng hạn.
Công ty bạn làm việc không có nhiều thẻ đục lỗ (vâng, đó là năm 2014 và họ vẫn sử dụng thẻ đục lỗ), vì vậy đừng lãng phí chúng. Viết chương trình càng ngắn càng tốt. Ồ, và bạn được yêu cầu không sử dụng các triển khai bên ngoài hoặc bên ngoài của khoảng cách Levenshtein hoặc bất kỳ thuật toán tương tự nào. Một cái gì đó về Không được phát minh ở đây hoặc các cửa hậu có vẻ như nhà cung cấp chèn vào ngôn ngữ (bạn không có bằng chứng về những điều đó, nhưng đừng thảo luận với sếp của bạn). Vì vậy, nếu bạn muốn khoảng cách, bạn sẽ phải tự thực hiện nó.
Bạn được tự do sử dụng bất kỳ ngôn ngữ. Ngay cả với thẻ đục lỗ, công ty có quyền truy cập vào hầu hết các ngôn ngữ lập trình hiện đại, như Cobol Ruby hoặc Haskell hoặc bất cứ điều gì bạn muốn. Họ thậm chí còn có GolfScript, nếu bạn nghĩ rằng nó tốt cho thao tác chuỗi (tôi không biết, có lẽ ...).
Người chiến thắng nhận được 15 điểm danh tiếng từ tôi và có thể rất nhiều điểm khác từ cộng đồng. Các câu trả lời tốt khác sẽ nhận được 10 điểm và điểm từ cộng đồng. Bạn nghe nói rằng điểm là vô giá trị, nhưng rất có thể là chúng sẽ thay thế các học giả vào năm 2050. Tuy nhiên, điều đó chưa được xác nhận, nhưng dù sao thì cũng nên lấy điểm.