Tôi chắc rằng hầu hết chúng ta đã thấy kết quả SQL trong một thiết bị đầu cuối, tất cả được định dạng gọn gàng thành các hàng và cột. Nếu bạn chưa có, đây là một ví dụ:
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
Mục tiêu của bạn cho thử thách này là, đưa ra các cột và dữ liệu hàng cho một bảng, vẽ bảng theo kiểu này. Cần có một đường ngang ở trên cùng và dưới cùng của bảng, và một bên phải dưới hàng tiêu đề. Cần có các đường thẳng đứng giữa mỗi cột và một ở cả hai bên của bảng. Bạn nên sử dụng các đường ống cho các đường thẳng đứng, dấu gạch ngang cho các đường ngang và kìm cho nơi chúng giao nhau.
Cụ thể:
- Dữ liệu có thể được nhập thông qua stdin hoặc làm đối số cho hàm, nhưng nó phải ở dạng chuỗi nào đó
- Dữ liệu nên được phân tách bằng dấu phân cách chuỗi
; - Dữ liệu sẽ chỉ bao gồm các ký tự ASCII, không được trích dẫn và sẽ không chứa dấu phân cách.
- Hàng đầu tiên của dữ liệu sẽ được sử dụng cho các tiêu đề cột
- Dữ liệu sẽ luôn có cùng số cột
- Đầu vào sẽ luôn chứa ít nhất hai hàng (một tiêu đề, một dữ liệu). Bạn không phải xử lý các bộ trống.
- Một dòng mới hoặc trước dòng được cho phép
- Mỗi cột phải rộng bằng phần tử rộng nhất, đệm các phần tử ngắn hơn ở bên phải (phần thưởng -5% nếu bạn đệm số ở bên trái)
- Cần có 1 khoảng trống của phần đệm trước và sau phần đầu và dữ liệu, ngoại trừ khi cột rộng hơn
- Bạn không được phép sử dụng
mysqlchương trình thực tế để tạo bảng - Áp dụng sơ hở tiêu chuẩn
Đầu vào mẫu:
column 1;column 2;column 3
hello;world;test
longer data;foo;bar
Đầu ra
+-------------+----------+----------+
| column 1 | column 2 | column 3 |
+-------------+----------+----------+
| hello | world | test |
| longer data | foo | bar |
+-------------+----------+----------+
Ghi điểm:
Số byte thấp nhất sẽ thắng, tất nhiên. -5% tiền thưởng cho số đệm ở bên trái (xem chi tiết cụ thể).