Vì vậy, tôi có mã cho hai chức năng. Cái đầu tiên in một bảng trống 20x20, cái thứ hai in một từ ở giữa. Bây giờ tôi đang cố gắng viết một hàm kiểm tra xem một từ đã nhập có giao nhau với một từ khác có cùng chữ cái hay không (như trò chơi ô chữ). Đây là mã cho hai hàm đầu tiên (không cần thay đổi nào ở đây để hoạt động):
trống = ''
board = [[' '] * 20 cho i trong phạm vi (20)]
bảng in def (bảng):
cột = '01234567890123456789'
hàng = '_' * 20
in(' ' + cột)
in(' ' + hàng)
cho tôi trong phạm vi (20):
s = ''.join(board[i])
print('|' + s +'|' + str(i))
in(' ' + hàng)
in(' ' + cột)
def addFirstWord(bảng, từ):
n = len(từ)
nếu n > 20:
trả về Sai
hàng=10
col = (20 - n) // 2
bảng[hàng][col:col+n] = từ
trả về Đúng
addFirstWord(board, 'hà mã')
Đây là những gì tôi đã thử cho đến nay nhưng nó chỉ kiểm tra vị trí đầu tiên và chữ cái đầu tiên, v.v.
def checkvertical(board, word, row, col):
n = len(từ)
if n > 20: #kiểm tra xem từ có lớn hơn bảng không
trả về Sai
cho tôi trong phạm vi (len(word)):
nếu bảng[row+i][col] == word[i]:
trả về Đúng
khác:
trả về Sai
print(checkvertical(bảng, 'ngựa', 10, 15))
bảng in (bảng)
Điều tôi muốn là một chức năng kiểm tra xem một từ được in theo chiều dọc có giao nhau chính xác với một từ hiện có trên bảng hay không khi bắt đầu từ một hàng và cột cụ thể và in xuống dưới.
Điều này sẽ hoạt động:
def checkvertical(board, word, row, col):
giao nhau = Sai
n = len(từ)
if n > 20: #kiểm tra xem từ có lớn hơn bảng không
trả về Sai
for i, c in enumerate(word):
nếu board[row+i][col] không có trong [' ', word[i]]:
trả về Sai
bảng elif[hàng+i][col] == từ[i]:
giao nhau=Đúng
trở lại giao nhau
đưa cho:
>>> print(checkvertical(bảng, 'ngựa', 7, 14))
SAI
>>> print(checkvertical(bảng, 'ngựa', 7, 15))
ĐÚNG VẬY
>>> print(checkvertical(bảng, 'ngựa', 10, 4))
ĐÚNG VẬY
Về cơ bản, chúng tôi sử dụng liệt kê Lặp lại các từ và kiểm tra xem vị trí chúng ta muốn đặt khối đó có chứa các chữ cái hoặc dấu cách giống nhau hay không. Nếu chúng tôi không bao giờ tìm thấy nơi nào xảy ra trường hợp này, chúng tôi sẽ trả về True.
Làm cách nào tôi có thể thay đổi mã này để kiểm tra xem từ đã nhập có giao nhau với một từ khác không (trò chơi ô chữ)? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/58976325/
Tôi là một lập trình viên xuất sắc, rất giỏi!