Cho số n (1 ≤ n ≤ 26). In mẫu Rangoli kích thước n x n dùng chữ cái từ 'a' đến chữ cái thứ n. Mẫu đối xứng ngang và dọc, dùng dấu '-' làm khoảng trống.
Ví dụ n = 5 (in ra 9 dòng):
--------e--------
------e-d-e------
----e-d-c-d-e----
--e-d-c-b-c-d-e--
e-d-c-b-a-b-c-d-e
--e-d-c-b-c-d-e--
----e-d-c-d-e----
------e-d-e------
--------e--------
Thuật toán
- Nửa trên: dòng
itừn-1xuống 0. In2*idấu '-', rồi chuỗi chữ cái giảm từn-1đếni, rồi tăng từiđếnn-1, cuối2*idấu '-'. - Nửa dưới: dòng
itừ 1 đếnn-1, logic tương tự.
Ví dụ mã nguồn
def solve(n):
for i in range(n-1, -1, -1):
for j in range(i):
print(end="--")
for j in range(n-1, i, -1):
print(chr(j+97), end="-")
for j in range(i, n):
if j != n-1:
print(chr(j+97), end="-")
else:
print(chr(j+97), end="")
for j in range(2*i):
print(end="-")
print()
for i in range(1, n):
for j in range(i):
print(end="--")
for j in range(n-1, i, -1):
print(chr(j+97), end="-")
for j in range(i, n):
if j != n-1:
print(chr(j+97), end="-")
else:
print(chr(j+97), end="")
for j in range(2*i):
print(end="-")
print()
n = 8
solve(n)
Đầu vào / Đầu ra
Input: 8
Output: (mẫu Rangoli 15x15 từ a-h)