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)
广告