**This Kata is intended as a small challenge for my students**
All Star Code Challenge #23
There is a certain multiplayer game where players are assessed at the end of the game for merit. Players are ranked according to an internal scoring system that players don't see.
You've discovered the formula for the scoring system!
Create a function called `scoring()` that takes an array of Player objects and returns an array of player names, in order of descending score (highest score is index 0, 2nd highest is index 1, etc.).
Each player's score is calculated as follows:
1. Each normal kill is worth 100 points
2. Each assist is worth 50 points
3. Each point of damage done is worth .5 points
4. Each point of healing done is worth 1 point
5. The longest kill streak is worth 2^N, where N is the number of kills of the streak
6. Environmental kills are worth 500 points (These are counted separately from normal kills)
For each of the above statistic, a Player object contains a respective "key:value" pairing. All values except the 'name' are integers.
Note:  
Assume the input array will ALWAYS have a properly constructed Player object (no missing keys or values)  
Names will not contain unusual characters nor repeat (names are unique)  
Players with the same score should be sorted by the order they appear in the array  
For simplicity, for a kill streak of 0 the kill streak calculation will yield 1 (or 2^(0)) points
def scoring(array):
    scores = []
    output = []
    
    for ply in array:
        score = (ply['norm_kill'] * 100) + (ply['assist'] * 50) + (ply['damage'] * 0.50) + ply['healing'] + (2 ** ply['streak']) + (ply['env_kill'] * 500)
        scores.append((ply['name'], score))
    
    def getScore(tup):
        return tup[1]
    
    players = sorted(scores, key=getScore, reverse=True)

    for player in players:
        output.append(player[0])
        
    return output
def scoring(array):
    scores = []
    output = []
    
    for ply in array:
        score = (ply['norm_kill'] * 100) + (ply['assist'] * 50) + (ply['damage'] * 0.50) + ply['healing'] + (2 ** ply['streak']) + (ply['env_kill'] * 500)
        scores.append((ply['name'], score))
    
    def getScore(tup):
        return tup[1]
    
    players = sorted(scores, key=getScore, reverse=True)

    for player in players:
        output.append(player[0])
        
    return output