Header Ad

HackerRank The Minion Game solution in python

In this HackerRank The Minion Game problem-solution, Kevin and Stuart want to play the 'The Minion Game'.

Game Rules

Both players are given the same string, S.

Both players have to make substrings using the letters of the string S.

Stuart has to make words starting with consonants.

Kevin has to make words starting with vowels.

The game ends when both players have made all possible substrings.

Scoring

A player gets +1 point for each occurrence of the substring in the string S.

Your task is to determine the winner of the game and their score.

HackerRank The Minion Game solution in python


Problem solution in Python 2 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
vowels = ['A', 'E', 'I', 'O', 'U']
s = raw_input()
a = 0
b = 0
for i, c in enumerate(s):
    if c in vowels:
        b += len(s) - i
    else:
        a += len(s) - i
        
if a == b:
    print "Draw"
elif a > b:
    print 'Stuart {}'.format(a)
else:
    print 'Kevin {}'.format(b)


Problem solution in Python 3 programming.

def minion_game(string):
    vowels = 'AEIOU'
    Stuart_score, Kevin_score = 0, 0
    length = len(string)
    for start_idx in range(length):
        score = length - start_idx
        if string[start_idx] in vowels:
            Kevin_score += score
        else:
            Stuart_score += score
    if Stuart_score == Kevin_score:
        print('Draw')
    if Stuart_score > Kevin_score:
        print('Stuart {}'.format(Stuart_score))
    if Stuart_score < Kevin_score:
        print('Kevin {}'.format(Kevin_score))


Problem solution in pypy programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT

input_string = raw_input()

vowels = ['A','E','I','O','U']

Kevin_score = 0
Stuart_score = 0

for i in range(len(input_string)):
    if input_string[i] in vowels:
        Kevin_score = Kevin_score + (len(input_string) - i)
    if input_string[i] not in vowels:
        Stuart_score = Stuart_score + (len(input_string) - i)
        
if Kevin_score == Stuart_score:
    print "Draw"
if Kevin_score > Stuart_score:
    print "Kevin",Kevin_score
if Kevin_score < Stuart_score:
    print "Stuart",Stuart_score
    


Problem solution in pypy3 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
s=input()
vv='AEIOU'
l=len(s)
c=0
v=0
for i in range(l):
    if s[i] in vv:
        v+=l-i
    else:
        c+=l-i
if c>v:
    print ('Stuart',c)
elif c==v:
    print ("Draw")
else:
    print ('Kevin',v)


Post a Comment

3 Comments

  1. what is the logic behind "score = length - start_idx"

    ReplyDelete
  2. Consider the example given in hacker rank itself: string = 'BANANA'
    len(string) = 6
    so,
    for start_idx in range(length):
    score = length - start_idx
    if string[start_idx] in vowels:
    Kevin_score += score
    else:
    Stuart_score += score
    When start_idx = 0
    score = len(string) - start_idx which means score = 6-0, implies the we can make total of 6 words with the starting letter "B" such as "B", "BA", "BAN", "BANA", "BANAN" and "BANANA" . The score value will be moved to Stuart_SCORE.

    when start_idx = 1
    score = len(string) - start_idx which means score = 6-1, implies the we can make total of 5 words with the starting letter "A" such as "A", "AN", "ANA", "ANAN" and "ANANA" . here ieh score will be moved to KEVIN_SCORE.

    ReplyDelete
    Replies
    1. Thank you for explaining it this way! I was so confused trying to understand why this algorithm worked, not realizing logic worked in reverse from how I was trying to visualize it.

      So when index is 0, you're essentially giving the player credit for possibilities of:
      BANANA
      BANAN
      BANA
      BAN
      BA
      B

      and NOT
      BANANA
      _ANANA
      __NANA
      ___ANA
      ____NA
      _____A

      Which is how I was trying to step through and understand it and thus why it confused the heck out of me as to why it not only worked, but also handled duplicate sub strings. Bravo, JITHESH944!

      Delete