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
  • 如果 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)

更新于:2021年10月12日

385 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告