Hướng dẫn cho Google Code Jam 2022 - Punched Cards


Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.

Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.

Phân tích

Bài toán này yêu cầu chúng ta in ra các hình ảnh ASCII của thẻ đục lỗ với các kích thước khác nhau. Mặc dù bài toán và giải pháp tương đối đơn giản, chúng ta cần biết cách đọc từ đầu vào tiêu chuẩn (stdin) và ghi ra đầu ra tiêu chuẩn (stdout). Các ví dụ về điều này có thể tìm thấy trong phần "Coding" của FAQ.

Vì kích thước của các thẻ đục lỗ cần in rất nhỏ, một lựa chọn là lưu trữ tất cả các hình ảnh ASCII trong một mảng và chỉ in ra các thẻ được yêu cầu. Tuy nhiên, chúng ta có thể sử dụng các vòng lặp for lồng nhau để tạo ra nghệ thuật cho bất kỳ thẻ đục lỗ kích thước nào.

Chúng ta có thể sử dụng một vòng lặp để in ra thẻ đục lỗ từng dòng một và sử dụng một vòng lặp khác để in các ký tự trong mỗi dòng. Các dòng có số thứ tự lẻ (tính từ 1) sẽ luân phiên giữa (+) và (-), và các dòng khác luân phiên giữa (|) và (.). Chúng ta có thể kiểm tra số dòng và số cột \((\text{mod} \, 2)\) để xem nên in ký tự nào. Ngoại lệ duy nhất là khi cả số dòng và số cột đều \(\le 2\). Trong trường hợp này, chúng ta luôn in một dấu chấm (.).

Như một số bạn có thể đã phát hiện ra, đối với vòng sơ loại năm nay, bạn có thể nộp lời giải bằng Punched Card Python. Dưới đây là lời giải cho bài Punched Cards được viết bằng Punched Card Python:

Dựa trên phân tích chính thức của Google Code Jam.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.