簡體   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