Google Code Jam 2012 - Speaking in Tongues
Xem PDFTại Google, chúng tôi đã tạo ra một ngôn ngữ tốt nhất có thể, được gọi là Googlerese. Để dịch văn bản sang Googlerese, chúng tôi lấy bất kỳ thông điệp nào và thay thế mỗi chữ cái tiếng Anh bằng một chữ cái tiếng Anh khác. Phép ánh xạ này là song ánh (tương ứng một-một và toàn ánh), có nghĩa là cùng một chữ cái đầu vào luôn được thay thế bằng cùng một chữ cái đầu ra, và các chữ cái đầu vào khác nhau luôn được thay thế bằng các chữ cái đầu ra khác nhau. Một chữ cái có thể được thay thế bằng chính nó. Các khoảng trắng được giữ nguyên.
Ví dụ (và đây là một gợi ý!), thuật toán dịch thuật tuyệt vời của chúng tôi bao gồm ba phép ánh xạ sau: 'a' -> 'y', 'o' -> 'e', và 'z' -> 'q'. Điều này có nghĩa là "a zoo" sẽ trở thành "y qee".
Googlerese dựa trên phép ánh xạ thay thế tốt nhất có thể, và chúng tôi sẽ không bao giờ thay đổi nó. Nó sẽ luôn giống nhau trong mọi trường hợp kiểm thử. Chúng tôi sẽ không tiết lộ phần còn lại của phép ánh xạ vì điều đó sẽ làm bài toán quá dễ, nhưng có một vài ví dụ dưới đây có thể giúp ích cho bạn.
Cho một đoạn văn bản bằng Googlerese, bạn có thể dịch nó ngược lại thành văn bản bình thường không?
Giải quyết bài toán này
Thông thường, các bài toán Google Code Jam có 1 bộ dữ liệu Small và 1 bộ dữ liệu Large. Bài toán này chỉ có 1 bộ dữ liệu Small. Một khi bạn giải được bộ dữ liệu Small, bạn đã hoàn thành bài toán này.
Dữ liệu vào
Dòng đầu tiên của dữ liệu vào cho biết số lượng bộ thử nghiệm, \(T\). Tiếp theo là \(T\) bộ thử nghiệm, mỗi bộ trên một dòng.
Mỗi dòng bao gồm một chuỗi \(G\) bằng Googlerese, được tạo thành từ một hoặc nhiều từ chứa các chữ cái 'a' - 'z'. Sẽ có chính xác một ký tự khoảng trắng (' ') giữa các từ liên tiếp và không có khoảng trắng ở đầu hoặc cuối mỗi dòng.
Dữ liệu ra
Với mỗi bộ thử nghiệm, hãy xuất ra một dòng chứa "Case #\(X\): \(S\)" trong đó \(X\) là số thứ tự bộ thử nghiệm và \(S\) là chuỗi mà khi chuyển sang Googlerese sẽ trở thành \(G\).
Ràng buộc
Chỉ có một tập thử nghiệm với kết quả hiển thị công khai.
\(1 \le T \le 30\).
\(G\) chứa tối đa 100 ký tự.
Không có văn bản nào được đảm bảo là tiếng Anh chuẩn.
Phân nhóm
Bài này chỉ có một tập kiểm thử với kết quả hiển thị công khai.
Điểm các phân nhóm
Mỗi Test Set tương ứng với một subtask trên LQDOJ. Bảng dưới đây giữ nguyên điểm chính thức của Google Code Jam và quy đổi tỷ lệ trên tổng điểm của bài.
| Phân nhóm | Điểm Google Code Jam | Tỷ lệ điểm của bài |
|---|---|---|
| Test Set 1 | 15/15 | 100% |
Ví dụ
Ví dụ 1
Input
3
ejp mysljylc kd kxveddknmc re jsicpdrysi
rbcpc ypc rtcsra dkh wyfrepkym veddknkmkrkcd
de kr kd eoya kw aej tysr re ujdr lkgc jv
Output
Case #1: our language is impossible to understand
Case #2: there are twenty six factorial possibilities
Case #3: so it is okay if you want to just give up
Nguồn
Google Code Jam 2012, Vòng loại, bài Speaking in Tongues.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Kỳ thi:
- Google Code Jam 2012 - Qualification Round (14 Tháng tư, 2012)
Bình luận