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)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP