Quick actions

cmd+k|ctrl+k

Navigation

Languages

Vem betalar maten? - Python edition

Snippet info

Language

Python

Visibility

public

Author

linus.aspelin

Created

2017-05-05T14:29:10Z

Updated

2017-05-09T11:31:22Z

import uuid

def main():
    number_of_runs = 5
    file = 'names.txt'
    
    runs = scramble_multiple_times(file, number_of_runs)
    print_result(list(runs))

    
def scramble(file):
    scramble_multiple_times(file, 1)

def scramble_multiple_times(file, num):
    names = get_names(file)
    scrambler = Scrambler(names)
    for i in range(0, num):
        yield scrambler.scramble()

def print_result(runs):
    accents = ["-> ", " <-"]
    print(runs[len(runs)-1][0] + " betalar")
    pre_list = ""
        
    if len(runs) == 1:
        print()
        print("Den slumpat ordnade listan:")
    else:
        pre_list = "#{}: " + pre_list
        print("(från sista av " + str(len(runs)) + " slumpningar)")
        print()
        print("De slumpat ordnade listorna:")
    
    for i in range(0,len(runs)):
        runs[i][0] = accents[0] + runs[i][0] + accents[1]
        print(pre_list.format(str(i+1)) + ", ".join(runs[i]))

def get_names(file):
    with open(file) as f:
        names = f.readlines()
    names = [name.strip() for name in names]
    names = list(filter(lambda name : name != "" and name[0] != "#", names))
    return names

class NameIdPair:
    def __init__(self, name):
        self.name = name
        self.uuid = uuid.uuid4()
        
class Scrambler:
    def scramble(self):
        pairs = [ NameIdPair(name) for name in self.names]
        pairs = sorted(pairs, key=lambda pair: pair.uuid)
        self.names = [pair.name for pair in pairs]
        return self.names
        
    def __init__(self, names):
        self.names = names

       
main()        
#
#
'''

end of program
 
 
 
'''
#
#
INFO