gpt4 book ai didi

python - 将分数添加到循环函数

转载 作者:行者123 更新时间:2023-11-28 17:57:19 26 4
gpt4 key购买 nike

这是来自一次采访,我不得不重新创建 Wallstreet 拼字比赛拼图。每个谜题由七个不同的字母组成,(第一个是关键字母)按照以下规则想出尽可能多的单词。

  • 所有单词都是有效的英文
  • 单词包含关键字母
  • 单词不包含7个字母以外的任何字母。
  • 字母可以重复使用,包括关键字母。

示例

输入:

  • wordlist = ['苹果','请','请']
  • puzzels = ['aelwxyz','aelpxyz','aelpsxy','saelpxy','xaelpsy']预期输出:
  • [0,1,3,2,0]

解释

  • 单词列表中的单词都不能由拼图 0 中的字母组成
  • 唯一的苹果对谜题二有效
  • 这三个词对于谜题 3 都是有效的
  • 只有 please 和 please 对谜题 3 有效,因为 apple 没有关键字母 S
  • 没有单词对拼图 4 有效,因为没有单词有关键字母 X

所以我有 75 分钟的时间来解决它,我已经走得很远了,但没能找出关键的一步。在我无法正确显示分数的地方,我只能手动对单词列表进行排序。我尝试添加一些计数器但无法让它们工作。


test_list = ["apple","pleas","please"]
puzzles = ["aelwxyz","aelpxyz","aelpsxy","saelpxy","xaelpsy"]
puzzles_list = ["a","e","l","p","s","x","y"]




def check_words(letters,words):
i = 1
score = 0
letters = list(letters)
for word in words:
if all(x in set(letters) for x in word) and letters[0] in word:
#this checks if the word contains any letter from the word and the first letter(aka key letter)
print("test passed")
score +=1
print(word,letters,i)
print(score)
return
#here we have to add a value to a counter to show for that set of letters how many words it can spell.
if all(x in set(word) for x in letters):
#only if the puzzle and the word match exactly aka apple would have to only have a,p,l,e in the test
print(word,letters)
else:
return
else:
print("no matching letters and or not matching key letter.")
return

def spelling_bee_solutions(wordlist,puzzles):
for puzzle in puzzles:
puzzle = list(puzzle)
check_words(puzzle,wordlist)



# check_words(puzzles_list,test_list)

spelling_bee_solutions(test_list,puzzles)

我想将分数添加到字典或附加到列表,但我没时间了。我主要只是想看看真正的解决方案是什么。

到目前为止它只是打印

no matching letters and or not matching key letter.
test passed
apple ['a', 'e', 'l', 'p', 'x', 'y', 'z'] 1
1
test passed
apple ['a', 'e', 'l', 'p', 's', 'x', 'y'] 1
1
no matching letters and or not matching key letter.
no matching letters and or not matching key letter.

最佳答案

您可以使用列表理解将每个谜题映射到生成器表达式的总和,该表达式迭代单词列表并输出 1 如果谜题中的字符集是单词中字符集的超集,并且拼图中的第一个字符在单词中:

[sum(set(p) >= set(w) and p[0] in w for w in wordlist) for p in puzzles]

返回:

[0, 1, 3, 2, 0]

您可以通过先将单词列表转换为字符集列表来进一步优化它,这样就不必每次迭代都进行集转换:

wordsets = list(map(set, wordlist))
[sum(w.issubset(p) and p[0] in w for w in wordsets) for p in puzzles]

关于python - 将分数添加到循环函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com