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 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告