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)

3 thoughts on “HackerRank The Minion Game solution in python”

  1. 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.

  2. 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!

Comments are closed.