繁体   English   中英

奴才游戏-解释?

[英]Minion game- Explain?


  1. 我无法理解这种逻辑如何能够找出每个字母的排列并能够找到它的值/分数。 有人可以解释一下这段代码吗? 两个玩家都被赋予相同的字符串, 。 两个玩家都必须使用字符串的字母来制作子字符串。 Stuart 必须以辅音开头来造词。 凯文必须造词以元音开头。 当两个玩家都制作了所有可能的子串时,游戏结束。

得分 玩家在字符串中每次出现子字符串时获得 +1 分。

例如:String = BANANA 凯文的元音开始词 = ANA

在这里,ANA 在 BANANA 中出现了两次。 因此,凯文将获得 2 分。

    s = raw_input()
    vowels = 'AEIOU'  
    kevsc = 0
    stusc = 0
    for i in range(len(s)):
        if s[i] in vowels:
            kevsc += (len(s)-i)
        else:
            stusc += (len(s)-i)    
    if kevsc > stusc:
        print "Kevin", kevsc
    elif kevsc < stusc:
        print "Stuart", stusc
    else:
        print "Draw"

我不太明白“找出每个字母的排列”是什么意思,但是这段代码没有做任何与排列相关的事情。 它在做什么似乎没有多大意义。

它遍历输入字符串,并为每个大写元音向 Kevin 奖励积分,为每个其他字符奖励 Stuart。 在每种情况下获得的分数等于字母与输入字符串末尾的距离,例如在字符串“AB”中,Kevin 将获得 2 分的 A(因为它是大写元音倒数第二个) Stuart 会为 B 得 1 分(因为它不是大写元音,而且是最后一个)。

我最初对如何找到子字符串的数量感到困惑。 直到我用笔和纸工作。

让我们让这一切变得简单。 考虑示例测试用例 BANANA 步骤 1:由于我们有元音和辅音,这里将有两种情况。 这意味着我们有条件。 所以,我们需要使用 if 和 else 来决定谁是赢家。

然后,

想想游戏如何运行。 让我们考虑一下,他们将逐个字母选择,然后从中生成子字符串。 我的意思是说...

考虑位于位置 1 的 B,那么我们可以生成哪些可能的子串?

BANANA(字符串本身) - 1, BANAN - 2, BANA - 3, BAN - 4, BA - 5, B - 6. 计数为'6',等于字符串的长度或长度减去0

第二个字母是A,类似上面的方法,我们可以形成ANANA-1,ANAN-2,ANA-3,AN-4,A-5。 计数为 5,即主字符串的长度减去 1

第三个字母是N; NANA-1,NAN-2,NA-3,N-4(长度-2 = 4)

第四个字母是A; ANA-1,AN-2,A-3(长度-3 = 3)

第五个字母是N; NA-1,N-2(长度-4 = 2)

第六个字母是A; A-1(长度-5 = 1)

现在分别添加元音和辅音的结果。

consonant_sum(B,N,N) = 6+4+2 = 12 这是 'Stuart' 的分数

元音总和(A,A,A) = 5+3+1 = 9 这是'Kevin' 的分数。

您可以根据字符串的长度迭代字符串,这可以使用 for 循环和范围函数来完成。

因此,现在您可以通过比较这些总和,使用 if,elif,else 简单地输出获胜者。 这使得问题变得非常简单,因为我们只需要遍历整个字符串一次。

最后! 不要忘记,如果分数相等,我会包含一个打印“Draw”的条件。

如果有不清楚的地方,请告诉我您的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM