Tôi có một ma trận trông như thế này:
`
ma trận =
[
['P', 'o', 'P', 'o', 'P'],
['m', 'tôi', 'c', 's', 'r'],
['g', 'a', 'T', 'A', 'C'],
['n', 'n', 'e', 'r', 't'],
['a', 'g', 'o', 'd', 'o'],
['quả táo']
]`
Mã này in lặp đi lặp lại từng chữ cái theo kiểu "đường chéo tăng dần về bên phải":
`test_word = ''
cho phạm vi trên (len(ma trận)):
cho đại diện1 trong phạm vi(min(upper + 1, len(matrix[0]))):
cho Rep2 trong phạm vi(rep1, min(upper + 1, len(matrix[0]))):
cho j trong phạm vi (rep1, Rep2 + 1):
test_word += (ma trận[trên - j][j])
in(test_word)
test_word = ''`
Đầu ra:
`
P,m,m,mo,o,g,g,gi
...khi nó đến đường chéo anTsP thì đây là kết quả:
a,a,an,a,an,anT,a,an,anT,anTs,a,an,anT,anTs,anTsP`
Vấn đề là nó lặp lại a, an, anT anTs hai lần... Nếu bạn không hiểu mẫu, tôi muốn lặp qua từng đường chéo và cố gắng tìm mọi cách để "đánh vần" các chữ cái, ví dụ như tôi có đường chéo anTsP Đầu ra lý tưởng là:
a, an, anT, anTs, anTsP, n,nT,nTs,nTsP, T, v.v.
Nếu bạn có ý tưởng gì,
của bạn in
Dường như có vấn đề với phần thụt lề trong câu lệnh:
test_word = ''
cho phạm vi trên (len(ma trận)):
cho đại diện1 trong phạm vi(min(upper + 1, len(matrix[0]))):
cho Rep2 trong phạm vi(rep1, min(upper + 1, len(matrix[0]))):
cho j trong phạm vi (rep1, Rep2 + 1):
test_word += (ma trận[trên - j][j])
print(test_word, end=' ') # <--- thụt lề trái
test_word = ''
Nhưng điều này chỉ in:
P m mo og gi giP i iP P n na nac naco a ac aco c co oa an anTs anTsP n nT nTs nTsP T Ts TsP s sP P a a a ag age ageAr g ge geA gear e eA eAr A Ar r
KHÔNG'porC,'pdt','lo','e'
đường chéo.
Ví dụ này in tất cả các đường chéo:
ma trận = [
['P', 'o', 'P', 'o', 'P'],
['m', 'tôi', 'c', 's', 'r'],
['g', 'a', 'T', 'A', 'C'],
['n', 'n', 'e', 'r', 't'],
['a', 'g', 'o', 'd', 'o'],
['quả táo']
]
xoay def (l, n):
trả về l[n:] + l[:n]
def get_substrings(s):
cho j trong phạm vi (0, len(s)):
cho i trong phạm vi(j+1, len(s)+1):
mang lại s[j:i]
def get_values(ma trận):
chuyển đổi = [*zip(*ma trận)]
cho i trong phạm vi(len(matrix[0])):
chuyển đổi [i] = xoay(chuyển đổi [i], -i)
đã chuyển đổi = [*zip(*chuyển đổi)]
đối với i, lst trong liệt kê (chuyển vị, 1):
mang lại lợi nhuận từ get_substrings(''.join(lst[:i]))
đối với i, lst trong liệt kê (chuyển vị, 1):
mang lại lợi nhuận từ get_substrings(''.join(lst[i:]))
cho v trong get_values(ma trận):
in(v, end=' ')
In:
P m mo og gi giP i iP P n na nac naco a ac aco c co oa an anTs anTsP n nT nTs nTsP T Ts TsP s sP P a a ag age ageAr g ge geA gear e eA eAr A Ar rp po por porC o hoặc orC r rC C p pd pdt d dt tl lo ôi
Chỉnh sửa: Không cónăng suất
phiên bản:
ma trận = [
['P', 'o', 'P', 'o', 'P'],
['m', 'tôi', 'c', 's', 'r'],
['g', 'a', 'T', 'A', 'C'],
['n', 'n', 'e', 'r', 't'],
['a', 'g', 'o', 'd', 'o'],
['quả táo']
]
xoay def (l, n):
trả về l[n:] + l[:n]
def get_substrings(s):
rv = []
cho j trong phạm vi (0, len(s)):
cho i trong phạm vi(j+1, len(s)+1):
rv.append(s[j:i])
trở lại rv
def get_values(ma trận):
rv = []
chuyển đổi = [*zip(*ma trận)]
cho i trong phạm vi(len(matrix[0])):
chuyển đổi [i] = xoay(chuyển đổi [i], -i)
đã chuyển đổi = [*zip(*chuyển đổi)]
đối với i, lst trong liệt kê (chuyển vị, 1):
rv.extend(get_substrings(''.join(lst[:i])))
đối với i, lst trong liệt kê (chuyển vị, 1):
rv.extend(get_substrings(''.join(lst[i:])))
trở lại rv
cho v trong get_values(ma trận):
in(v, end=' ')
Tôi là một lập trình viên xuất sắc, rất giỏi!