Python程式:找出小黃人遊戲中獲勝者的分數和姓名
假設有兩個玩家Amal和Bimal。他們正在玩一個遊戲。遊戲規則如下:
兩位玩家擁有相同的字串s。
他們都必須使用s中的字母來建立子字串。
Bimal必須建立以子音字母開頭的單詞。
Amal必須建立以母音字母開頭的單詞。
當兩位玩家都建立了所有可能的子字串後,遊戲結束。
現在的計分標準如下:玩家在字串s中子字串出現的次數為其得分。我們必須找到這場遊戲的獲勝者及其得分。
因此,如果輸入類似於s = "BANANA",則輸出將是Bimal, 12,因為
單詞:BANANA | |||
Amal | Bimal(獲勝者) | ||
子字串 | 分數 | 子字串 | 分數 |
A | 3 | B | 1 |
AN | 2 | N | 2 |
ANA | 2 | BA | 1 |
ANAN | 1 | NA | 2 |
ANANA | 1 | BAN | 1 |
NAN | 1 | ||
BANA | 1 | ||
NANA | 1 | ||
BANAN | 1 | ||
BANANA | 1 | ||
總計 9 | 總計 12 |
為了解決這個問題,我們將遵循以下步驟:
- vowels := 母音字母集合
- p1 := 0
- p2 := 0
- 對於每個索引i和單詞中的字元c,執行以下操作:
- 如果c是母音,則
- p2 := p2 + 單詞大小 - i
- 否則,
- p1 := p1 + 單詞大小 - i
- 如果c是母音,則
- 如果 p1 > p2,則
- 返回 'Bimal', p1
- 否則,如果 p2 > p1,則
- 返回 'Amal', p2
- 否則,
- 返回 'Draw'
示例
讓我們看看下面的實現以更好地理解
def solve(word): vowels = set('AEIOU') p1 = 0 p2 = 0 for i, c in enumerate(word): if c in vowels: p2 += len(word) - i else: p1 += len(word) - i if p1 > p2: return 'Bimal', p1 elif p2 > p1: return 'Amal', p2 else: return 'Draw' word = "BANANA" print(solve(word))
輸入
"BANANA"
輸出
('Bimal', 12)
廣告