Bạn không muốn trả tiền cho chương trình kiến trúc đắt tiền, vì vậy bạn quyết định tự mình thực hiện. Bạn quyết định sử dụng ASCII để thiết kế các tòa nhà của bạn. Chương trình của bạn sẽ lấy một chuỗi duy nhất được định dạng theo một cách cụ thể và chương trình sẽ xuất tòa nhà.
Đầu vào
Đầu vào bao gồm một dòng ký tự. Nó có thể được coi là chỉ chứa các chữ cái a-j
, số 1-9
và ký hiệu -
và +
.
Mô tả đầu ra
Đối với mỗi chữ cái a-j
, chương trình sẽ xuất ra một hàng dọc như sau. Chúng tôi sẽ gọi đây là một cột.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Chẳng hạn, đầu vào abcdefgfedefghgfedc
sẽ xuất ra:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Một chữ cái có thể được thêm tiền tố với một số nguyên dương n
, sẽ thêm các n
ký tự khoảng trắng bên dưới cột. Chúng tôi sẽ gọi đây là một sự bù đắp. Chẳng hạn, bằng cách sử dụng S
để ghi chú một khoảng trắng, đầu vào 3b2b3b
sẽ xuất ra:
+ +
+++
S+S
SSS
SSS
Một chữ cái cũng có thể được thêm tiền tố với một số nguyên âm-m
, sẽ loại bỏ các ký tự m
không phải khoảng trắng dưới cùng của cột (không thay thế chúng bằng khoảng trắng, loại bỏ chúng hoàn toàn). Chúng tôi sẽ gọi đây là một lát. Chẳng hạn, đầu vào -1j-2j-3j-4j-5j-6j-7j-8j
sẽ xuất ra:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Một phần bù và một lát có thể được áp dụng cho cùng một dòng, nhưng phần bù phải đi trước. Nói cách khác, chữ cái có thể được thêm tiền tố vào n-m
, n
kích thước của phần bù và m
là kích thước của lát cắt. Chẳng hạn, bằng cách sử dụng S
để ghi chú một khoảng trắng, đầu vào '2-4j' sẽ xuất ra:
.
.
.
*
*
*
S
S
Cuối cùng, +
toán tử được sử dụng giữa hai cột biểu thị rằng chúng nên được xếp chồng lên nhau trong cùng một cột thay vì trong các cột riêng biệt. Chẳng hạn, đầu ra `2-4ja 'đầu vào:
.
.
.
*
*
*
S
S+
Trong khi các đầu 2-4j+a
ra đầu vào :
+
.
.
.
*
*
*
S
S
Đây là một đầu vào mẫu:
abiehef+ehfhabc
Và kết quả đầu ra:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
Trông giống như một tòa tháp lâu đài bị phá hủy cũ.
Đây là một đầu vào mẫu khác:
6b5b+a6b1-2d+3-4f1-2d+-2c+2-4f+1-2d+-2c2-2d+1-4g+1-2c+b+-2c+-4e2-7j+-4g+d+-2c+-4f2-7j+-5h+b+-2c+a+-3f2-7j+-7i+-4e+b+b+a+-4f2-7i+a+-7h+-4f+b+b+a+-4f2-7j+-7h+-4f+a+-7h+a+-7i+-4f2-7j+-7i+-6h+a+-7i+b+-4e3-7i+a+-7h+-4e+a+-7h+b+1-7h3-7j+1-4f+-7h+b+-4f+a3-7j+2-4f+a+-4f+b3-2d+-2d+3-4g+b3-2d+-2d+-2c
Và kết quả đầu ra:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(Đáng lẽ là Mario nhưng không thành công lắm ...)
Nếu thông số kỹ thuật vẫn chưa rõ ràng, tôi có một triển khai không chơi gôn được viết bằng Python 2.7. Bạn có thể chạy nó và thử nghiệm để cảm nhận về cách thức hoạt động của đặc tả. Bạn cũng có thể chọn cười vào kỹ năng lập trình của tôi.
Đây là mã golf, vì vậy, chiến thắng ngắn nhất. Đặt câu hỏi trong ý kiến nếu không rõ ràng.
a+a+a+a+a
sẽ xuất ra năm dấu cộng với nhau.