有一个MxN的棋盘,每个格子上有一个字母,现在按照下面的规则来构造单 词: 可以从任意一个位置开始,接着向该位置相邻的8个位置中选取下一个(不 能选取已经选取过的位置),如此循环,构成一个字母序列,生

编程入门 行业动态 更新时间:2024-10-15 10:14:43

有一个MxN的棋盘,每个格子上有一个字母,现在按照下面的规则来构造单 词: 可以从任意一个<a href=https://www.elefans.com/category/jswz/34/1771147.html style=位置开始,接着向该位置相邻的8个位置中选取下一个(不 能选取已经选取过的位置),如此循环,构成一个字母序列,生"/>

有一个MxN的棋盘,每个格子上有一个字母,现在按照下面的规则来构造单 词: 可以从任意一个位置开始,接着向该位置相邻的8个位置中选取下一个(不 能选取已经选取过的位置),如此循环,构成一个字母序列,生

targets = [
“ARE”, “PENPIEAPPLE”, “APPLEPEN”, “APPLE”, “LIPS”, “RED”, “AIR”, “PLEASE”
]

def cangenerate(str):

result = detect_word(str)
if result:print("可以生成%s" % str)
else:print("不可以生成%s" % str)

def position(str, letters):

for word in letters:i = letters.index(word)for w in word:if w == str:j = word.index(str)return i, j

def site_position(i, j, next_word, letters):
leter = []
for s in [-1, 0, 1]:
for d in [-1, 0, 1]:
try:
if i + s < 0 or j + d < 0:
continue
if i + s == i and j + d == j:
continue
let = letters[i + s][j + d]
except Exception as e:
pass
else:
leter.append(let)

if next_word in leter:del letters[i][j]return True
else:return False

def detect_word(str):
letters = [[‘A’, ‘R’, ‘E’], [‘I’, ‘P’, ‘D’], [‘E’, ‘L’, ‘P’]]
for w in str:
i, j = position(w, letters)
if str.index(w) + 1 < len(str):
k = str.index(w) + 1
next_word = str[k]
if site_position(i, j, next_word, letters):
continue
else:
return False
else:
return True

if name == “main”:
for letter in targets:
cangenerate(letter)

更多推荐

有一个MxN的棋盘,每个格子上有一个字母,现在按照下面的规则来构造单 词: 可以从任意一个位置开始,接着向该位置相邻的8个位置中选取下一个(不 能选取已经选取过

本文发布于:2024-02-26 09:16:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701997.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:位置   字母   上有   棋盘   取下

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!