HackerRank The Minion Game solution in python

In this HackerRank The Minion Game problem-solution, we need to develop a python program in which we have given a string and in one condition we need to make the all possible combinations and substring using that string that start with consonants and in another condition, we need to make the all possible combinations that start with vowels.

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