|
|
|
|
|
import json |
|
|
|
|
|
grid = [ |
|
[".", ".", ".", ".", ".", ".", ".", ".", "D", ".", "."], |
|
[".", ".", ".", ".", ".", "M", "I", "C", "E", ".", "."], |
|
[".", ".", ".", "H", "U", "M", "A", "N", "E", ".", "."], |
|
[".", ".", ".", "W", "H", "A", "L", "E", "R", ".", "."], |
|
[".", "P", "Z", ".", ".", ".", "L", ".", ".", ".", "."], |
|
["Z", "O", "O", "L", "O", "G", "I", "C", "A", "L", "."], |
|
[".", "U", "O", ".", ".", ".", "G", "E", "E", "S", "E"], |
|
[".", "L", "L", "H", "U", "M", "A", "N", "I", "T", "Y"], |
|
[".", "T", "O", ".", ".", ".", "T", "I", "G", "E", "R"], |
|
[".", "R", "G", ".", "B", "I", "O", "L", "O", "G", "Y"], |
|
[".", "Y", "Y", ".", ".", ".", "R", ".", ".", ".", "."] |
|
] |
|
|
|
print("Generated Crossword Grid:") |
|
print("=" * 50) |
|
|
|
for i, row in enumerate(grid): |
|
row_str = "" |
|
for j, cell in enumerate(row): |
|
if cell == ".": |
|
row_str += " " |
|
else: |
|
row_str += f"{cell} " |
|
print(f"{i:2d} | {row_str}") |
|
|
|
print("=" * 50) |
|
|
|
|
|
def check_word_boundaries(grid): |
|
issues = [] |
|
|
|
|
|
for r in range(len(grid)): |
|
in_word = False |
|
word_start = -1 |
|
for c in range(len(grid[r])): |
|
if grid[r][c] != ".": |
|
if not in_word: |
|
in_word = True |
|
word_start = c |
|
else: |
|
if in_word: |
|
|
|
word_length = c - word_start |
|
word = "".join(grid[r][word_start:c]) |
|
print(f"Horizontal word at ({r},{word_start}): {word} (length {word_length})") |
|
in_word = False |
|
|
|
|
|
if in_word: |
|
word_length = len(grid[r]) - word_start |
|
word = "".join(grid[r][word_start:]) |
|
print(f"Horizontal word at ({r},{word_start}): {word} (length {word_length})") |
|
|
|
|
|
for c in range(len(grid[0])): |
|
in_word = False |
|
word_start = -1 |
|
for r in range(len(grid)): |
|
if grid[r][c] != ".": |
|
if not in_word: |
|
in_word = True |
|
word_start = r |
|
else: |
|
if in_word: |
|
|
|
word_length = r - word_start |
|
word = "".join([grid[i][c] for i in range(word_start, r)]) |
|
print(f"Vertical word at ({word_start},{c}): {word} (length {word_length})") |
|
in_word = False |
|
|
|
|
|
if in_word: |
|
word_length = len(grid) - word_start |
|
word = "".join([grid[i][c] for i in range(word_start, len(grid))]) |
|
print(f"Vertical word at ({word_start},{c}): {word} (length {word_length})") |
|
|
|
print("\nWord boundary analysis:") |
|
check_word_boundaries(grid) |