Google Code Jam 2022 - Punched Cards

Xem PDF




Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 400 Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Một nhóm lập trình viên bí mật đang âm mưu làm đảo lộn thế giới ngôn ngữ lập trình và đưa thẻ đục lỗ trở lại bằng cách giới thiệu một ngôn ngữ mới mang tên Punched Card Python, cho phép mọi người lập trình Python bằng thẻ đục lỗ!

Đúng phong cách của những người thích tạo đột phá, họ sẽ khởi động một chiến dịch lan truyền để quảng bá ngôn ngữ mới ngay cả trước khi có thiết kế cho một nguyên mẫu. Trong chiến dịch, họ muốn vẽ các thẻ đục lỗ với nhiều kích thước khác nhau bằng nghệ thuật ASCII.

Hình ASCII của một thẻ đục lỗ mà họ muốn vẽ giống một ma trận \(R\times C\) nhưng thiếu ô trên cùng bên trái. Vì vậy, nó có tổng cộng \((R\cdot C)-1\) ô. Mỗi ô được vẽ bằng một dấu chấm (.), phía trên và dưới bao bởi dấu gạch ngang (-), bên trái và phải bao bởi dấu gạch đứng (|), còn bốn góc dùng dấu cộng (+). Các ô kề nhau dùng chung những ký tự trên đường biên. Các dấu chấm (.) được dùng để căn chỉnh các ô ở hàng trên cùng.

Ví dụ, dưới đây là một thẻ đục lỗ có \(R=3\) hàng và \(C=4\) cột:

..+-+-+-+
..|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+

Phần ví dụ bên dưới có thêm các kích thước khác. Cho hai số nguyên \(R,C\) mô tả kích thước thẻ đục lỗ, hãy in hình ASCII của nó đúng như mô tả.

Dữ liệu vào

Dòng đầu tiên chứa số bộ test \(T\). Tiếp theo là \(T\) dòng, mỗi dòng mô tả một bộ test bằng hai số nguyên \(R,C\): số hàng và số cột của thẻ đục lỗ cần vẽ.

Dữ liệu ra

Với mỗi bộ test, in một dòng Case #x:, trong đó \(x\) là số thứ tự bộ test (bắt đầu từ \(1\)). Sau đó in thêm \((2\cdot R)+1\) dòng chứa hình ASCII của thẻ đục lỗ có \(R\) hàng và \(C\) cột.

Ràng buộc

  • \(1\le T\le81\).
  • \(2\le R\le10\).
  • \(2\le C\le10\).

Phân nhóm

  • Test Set 1 (phán quyết hiển thị): áp dụng toàn bộ các ràng buộc trên.

Đ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 11/11 100%

Ví dụ

Ví dụ 1

Input
3
3 4
2 2
2 3
Output
Case #1:
..+-+-+-+
..|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
Case #2:
..+-+
..|.|
+-+-+
|.|.|
+-+-+
Case #3:
..+-+-+
..|.|.|
+-+-+-+
|.|.|.|
+-+-+-+
Giải thích

Ví dụ #1 chính là trường hợp được mô tả trong đề bài. Ví dụ #2 và #3 là các ví dụ bổ sung. Lưu ý rằng đầu ra của mỗi trường hợp chứa chính xác \(R\cdot C+3\) dấu chấm.

Nguồn

Google Code Jam 2022, Vòng loại, bài Punched Cards.

Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.

Bình luận

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

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

Kỳ thi: