我目前正在研究一个项目,该项目在拼字游戏中计算分数。我被困在可以计算单词的点并计算单词是否在高级图块上的部分。这是我到目前为止完成的代码
words_dict = {'CART': [(6, 2), (6, 3), (6, 4), (6, 5)], 'THIEF': [(6, 5), (7, 5), (8, 5), (9, 5), (10, 5)], 'HORN': [(7, 5), (7, 6), (7, 7), (7, 8)]}
单词旁边是在numpy数组中找到的每个单词的坐标。
premium_tiles = [[ 3, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 3 ],
[ 1, 2, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 2, 1 ],
[ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1 ],
[ 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2 ],
[ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1 ],
[ 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1 ],
[ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1 ],
[ 3, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 3 ],
[ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1 ],
[ 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1 ],
[ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1 ],
[ 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2 ],
[ 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1 ],
[ 1, 2, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 2, 1 ],
[ 3, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 3 ]]
在这个数组上是我需要计算一个单词中的点的点。我想要的期望是例如在CART中,因为我做了一个看起来像这样的数组。
points = {
'A': 1, 'B': 3, 'C': 3,
'D': 2, 'E': 1, 'F': 4, 'G': 2,
'H': 4, 'I': 1, 'J': 8, 'K': 5,
'L': 1, 'M': 3, 'N': 1, 'O': 1,
'P': 3, 'Q': 10, 'R': 1, 'S': 1,
'T': 1, 'U': 1, 'V': 4, 'W': 4, 'X': 8,
'Y': 4, 'Z': 10, '#': 0
}
我尝试编写代码,但似乎无法使其正常工作。这是我到目前为止完成的代码。
for key,value in words_dict.items():
for keys in key:
if len(keys) == 1:
for i,j in value:
if keys == key[m+1]:
sum1 += premium_tiles[i][j]*points[keys]
print(sum1)
sumsOfwords.append(sum1)
print(sumsOfwords)
在C = 3,A = 1,R = 1和T = 1的情况下,它将转到高级图块以将每个字母与指定坐标相乘。例如,购物车中的坐标为[(6,2),(6,3),(6,4),(6,5)],它将转到数组高级图块并乘以C = 3x2,A的字母= 1x1,R = 1x1和T = 1x1。 CART =(3x2 + 1x1 + 1x1 + 1x1)等于9。有人可以帮助吗?我非常需要。
答案 0 :(得分:0)
我无法对此进行测试,但在我看来,您还有一些多余的障碍。
sumsOfwords = []
for key, value in words_dict.items():
sum1 = 0
for idx, (i, j) in enumerate(value):
sum1 += premium_tiles[i][j] * points[key[idx]]
# the multiplier loop goes here
# don't combine it with the prior loop
print(sum1)
sumsOfwords.append(sum1)
print(sumsOfwords)
在双方格和三方格上:使用另一个像premium_tiles
的表,每个正方格上都有1个,在双方格和三元组上分别有2和3。
代码如下:
for i, j in value:
if not used[i][j]:
sum1 *= mult[i][j]
used[i][j] = True
其中used
和mult
是类似于premium_tiles
的表,不同之处在于used
的开头是False
的全部,而mult
的任何地方都有1不是2或3。
如果单词相同,如何计算分数?
这里的问题是words_dict需要从字典更改为元组列表[(word, [position])]
,因为字典每个键只允许一个条目。