【问题标题】:Storing data in a hexagonal grid for word search Python将数据存储在六边形网格中以进行单词搜索 Python
【发布时间】:2015-07-09 03:59:56
【问题描述】:

Python 新手。我想知道如何将字母存储在六边形网格中。我尝试使用图表,但我不太了解它。第一个字母(来自文件或其他东西)进入蜂窝结构的中心六角形盒子,下一组字母(6)将填充在它外面,依此类推。谢谢。

If the letters are ['a', 'b', 'c', 'd', 'e', 'f', 'g'], then a goes to the center hex and b to g fill in the outside hex grids in clockwise direction.

用更清晰的术语来说,字母是从A到S。目的是将其存储在六边形蜂窝结构中,中心是a,外面是(b,c,d,e,f,g), (h,i,j,k,l,m,n,o,p,q,r,s) 在它之外等等。

【问题讨论】:

  • 这个问题读起来很痛苦,也得到了很多反对意见,因为很不清楚你想做什么,而且你还没有尝试解决你自己的问题。
  • Python 没有“六边形网格”数据结构或容器。当您说您想将字母存储在六边形网格中时,您是什么意思? “我尝试使用图表”是什么意思...?
  • @RickTeachey :字母是从 a 到 s。目的是将其存储在六边形蜂窝结构中,中心是a,外面是(b,c,d,e,f,g),(h,i,j,k,l,m,n, o,p,q,r,s) 在它之外等等。

标签: python python-3.x grid hex


【解决方案1】:

很难理解您所说的“六边形网格”是什么意思。但无论如何,这是一个解决方案的尝试。编辑:好的,你想要的现在更清楚了。以下解决方案应该有效。

我假设您希望您的数据保存在某种表示几何六边形网格的数据结构中。六边形网格由一个中心六边形组成,由 6 个六边形包围,这些六边形依次被 12 个六边形包围,然后是 18 个,依此类推。

我们可以用一个列表来表示这个几何结构:

[['a'], ['b','c','d','e','f','g'], ['h','i','j','k','l','m','n','o','p','q','r','s']]

第一个列表的长度是 1,第二个是 6,依此类推。您可以访问蜂窝的每个“级别”,然后访问该级别中的字母,这样(注意索引以零开头,而不是 1 ):

my_honeycomb[0][0] # 'a'
my_honeycomb[2][3] # 'k'
my_honeycomb[1][7] # IndexError

第三条语句产生索引错误,因为对于该级别,索引 7 不存在。

加载蜂窝结构的一种方法是使用input() 函数:

my_honeycomb = [[]] # a list containing an empty list
level = 0
ind = 0
for letter in input('Enter your string:\n\n\t'):
    if ind > level * 6: # check if index is valid for this level 
        level += 1
        ind = 1
        my_honeycomb.append([]) # go to the next level
    my_honeycomb[level].append(letter) # add letter to current level
    ind += 1 # advance to next index

【讨论】:

  • 假设数据是这种形式,['A', 'BCDEFG', ....],我该怎么办呢?除了改变 for 条件?谢谢。
  • 你可以只做for letter in ''.join(['a', 'bcdefg']:,否则保持与上面相同的脚本。如果要遍历该列表,则必须调整脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
相关资源
最近更新 更多