首页 > 解决方案 > 通过数组的路径组合

问题描述

我该如何解决这个问题:我有一个由每个网格点标记的字母表。

(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']

我尝试过组合(),但由于我的网格在列表中,它不遵循网格边界。任何指导都会有所帮助,谢谢。

标签: pythonarrayspython-3.xgridcombinations

解决方案


推荐阅读