1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/python3
 
''' SI 335 Spring 2016
    Project 1
    
    This program reads jobs from jobs.txt and names from names.txt,
    then uses the values of n and k given on the command line to
    generate random input for the program. This generated input file
    is written to standard out.
'''
 
from sys import argv, exit
from random import shuffle, sample
 
def usage():
    print("Usage: {} n k".format(argv[0]))
    print("jobs.txt and names.txt must exist in current directory.")
    exit(1)
 
if len(argv) != 3:
    usage()
 
n, k = map(int, argv[1:])
 
if n < 0 or k < 0:
    usage()
 
with open('names.txt') as namesfile:
    names = [line.strip() for line in namesfile]
 
with open('jobs.txt') as jobsfile:
    jobs = [line.strip() for line in jobsfile]
 
if n > len(names):
    print("ERROR: not enough names in names.txt")
    exit(2)
 
if k > len(jobs):
    print("ERROR: not enough jobs in jobs.txt")
    exit(2)
 
rankings = [list(range(1,n+1)) for i in range(k)]
for ranks in rankings:
    shuffle(ranks)
 
print(k)
for job in sample(jobs, k):
    print(job)
 
print(n)
for nameAndRanks in zip(sample(names, n), *rankings):
    print(*nameAndRanks)