Python程序-查找小伙伴游戏的得分及获胜者名字
假设有两个玩家Amal和Bimal。他们在进行游戏。游戏规则如下 –
- 两个玩家都有相同的字符串s。
-
他们都必须使用s的字母制作子字符串。
-
Bimal必须使用以辅音字母开始的单词制作子字符串。
-
Amal必须使用以元音字母开始的单词制作子字符串。
-
游戏将在两个玩家制作出所有可能的子字符串时结束。
现在评分标准如下:每次子字符串在字符串s中出现时玩家都会获得1个点数。我们必须找出该游戏的获胜者及其得分。
因此,如果输入如s =“BANANA”,则输出将是Bimal, 12,因为
Word : BANANA | |||
---|---|---|---|
Amal | Bimal(WINNER) | ||
Substring | Score | Substring | Score |
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 | ||
Total 9 | Total 12 |
要解决此问题,我们将遵循以下步骤 –
- 元音字母:=一组元音字母
- p1 := 0
- p2 := 0
- 对于字母表中的每个索引i和字符c,执行以下操作
- 如果c是元音字母,则
- p2 := p2 + word中的大小-i
- 否则,
- p1 := p1 + word中的大小-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)