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