【lc刷题】843 猜猜这个单词_Day09(30/300)

30/300

  1. 猜猜这个单词
    这个问题是 LeetCode 平台新增的交互式问题 。
     
    我们给出了一个由一些独特的单词组成的单词列表,每个单词都是 6 个字母长,并且这个列表中的一个单词将被选作秘密。
     
    你可以调用 master.guess(word) 来猜单词。你所猜的单词应当是存在于原列表并且由 6 个小写字母组成的类型字符串。
     
    此函数将会返回一个整型数字,表示你的猜测与秘密单词的准确匹配(值和位置同时匹配)的数目。此外,如果你的猜测不在给定的单词列表中,它将返回 -1。
     
    对于每个测试用例,你有 10 次机会来猜出这个单词。当所有调用都结束时,如果您对 master.guess 的调用不超过 10 次,并且至少有一次猜到秘密,那么您将通过该测试用例。
     
    除了下面示例给出的测试用例外,还会有 5 个额外的测试用例,每个单词列表中将会有 100 个单词。这些测试用例中的每个单词的字母都是从 ‘a’ 到 ‘z’ 中随机选取的,并且保证给定单词列表中的每个单词都是唯一的。
     
    示例 1:
    输入: secret = “acckzz”, wordlist = [“acckzz”,“ccbazz”,“eiowzz”,“abcczz”]
     
    解释:
     
    master.guess(“aaaaaa”) 返回 -1, 因为 “aaaaaa” 不在 wordlist 中.
    master.guess(“acckzz”) 返回 6, 因为 “acckzz” 就是秘密,6个字母完全匹配。
    master.guess(“ccbazz”) 返回 3, 因为 “ccbazz” 有 3 个匹配项。
    master.guess(“eiowzz”) 返回 2, 因为 “eiowzz” 有 2 个匹配项。
    master.guess(“abcczz”) 返回 4, 因为 “abcczz” 有 4 个匹配项。
     
    我们调用了 5 次master.guess,其中一次猜到了秘密,所以我们通过了这个测试用例。

在这里插入图片描述
看标题很好玩,点进来看了题目
我:……

master.guess() 是用来告诉你匹配的字母有几个
譬如"hello"和"hallo" 的匹配项有4个

题目是说我手里有几个单词,目标单词就在这里面,我拿出一个,如果master说有6个匹配项,就猜对了。

如果我遍历,挨个问,单词少还行,单词数量多,就凉了。

如果我随机从list里挑一个A,告诉我匹配项数值n,然后去手里的list找,是哪个单词跟A有n个匹配项(不止一个),这些单词留下,其他的滚蛋。然后循环,直到 n = 6

sudo_code:

while n < 6:
	my guess word= random.choice(a word from the list)
	In the list, find all the possible target words that ( matches(my guess word and the word in the list) == master.guess( my guess word))
	next time, my guess word= random.choice(a word from the reduced list)
	repeat the procedure

random.choice()
在这里插入图片描述
sum()
在这里插入图片描述

# """
# This is Master's API interface.
# You should not implement it, or speculate about its implementation
# """
#class Master:
#    def guess(self, word):
#        """
#        :type word: str
#        :rtype int
#        """

class Solution:
    def findSecretWord(self, wordlist, master):
        """
        :type wordlist: List[Str]
        :type master: Master
        :rtype: None
        """
        n = 0
        while n < 6:
            myguess = random.choice(wordlist)
            n = master.guess(myguess)
            wordlist = [word for word in wordlist if sum( i == j for i, j in zip(myguess,word) )== n]
            

                    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值