python - 通过数组的路径组合
问题描述
我该如何解决这个问题:我有一个由每个网格点标记的字母表。
(0,0)(0,1)(0,2)(0,3) o l n c
(1,0)(1,1)(1,2)(1,3) e t e a
(2,0)(2,1)(2,2)(2,3) i b t a
(3,0)(3,1)(3,2)(3,3) o m m f
我试图找到通过网格创建 3、4、5 长度线的所有可能组合。
ie: PossibleSolutions = [[(0,0),(0,1),(0,2)],[(0,0),(1,1),(2,2)],[(0,0),(1,0),(2,0)]]
each of these representing:[[o,l,n],[o,t,t],[o,e,i]]
所有可能的组合,但保持在网格布局内。
from itertools import combinations
def PossibleWords(possible, board):
words = []
for i in range(len(possible)):
words.append(board[possible[i]])
return words
def Combinations(board):
coord = list(board.keys())
temp = []
temp.append(list(combinations([
(0,0),(0,1),(0,2),(0,3),
(1,0),(1,1),(1,2),(1,3),
(2,0),(2,1),(2,2),(2,3),
(3,0),(3,1),(3,2),(3,3)
], 3)))
possible = temp[0]
form = []
temp = []
solutions = []
for i in range(len(possible)):
form.append(PossibleWords(possible[i], board))
for i in range(len(form)):
temp.append(form[i])
for i in range(len(temp)):
solutions.append(''.join(temp[i]))
return solutions
output = ['ole', 'ole', 'one', 'one', 'oaf', 'oaf', 'let', 'lee', 'lei', 'let', 'lei', 'let', 'lab', 'lam', 'lam', 'lit', 'lam', 'lam', 'net', 'nee', 'net', 'net', 'nam', 'nam', 'nam', 'nam', 'cee', 'cab', 'cat', 'cam', 'cam', 'cam', 'cam', 'eta', 'eta', 'eat', 'eta', 'tea', 'tet', 'tea', 'tab', 'tat', 'tit', 'tom', 'tom', 'eat', 'eta', 'aim', 'aim', 'bam', 'bam', 'tom', 'tom']
我尝试过组合(),但由于我的网格在列表中,它不遵循网格边界。任何指导都会有所帮助,谢谢。
解决方案
推荐阅读
- jquery - 在 WooCommerce 中隐藏特定计费状态的一些结帐字段类型
- java - Spring 在服务器上运行良好,但在主应用程序上运行良好
- macos - 在 Mac OS 上编译时使用 Clang 时出错
- azure - 你可以拥有没有 HNS 的 Azure Data Lake gen2 吗?
- reactjs - React Material Design:在类组件中使用带有 redux 的 React Material Design 自定义样式
- php - 显示具有关系 laravel 的图像
- ruby-on-rails - 试图在 rails 中禁用整个 f.select
- node.js - 在更新操作上使用聚合管道时,MongoDB“'$' 本身不是有效的 FieldPath”
- javascript - 单击父元素内的按钮的Node.js Puppeteer问题
- visual-studio - Visual Studio 2019 Publish 删除文件夹的写权限