有一个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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值