-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTicketOrder.py
113 lines (82 loc) · 2.66 KB
/
TicketOrder.py
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
'''
This command line program takes 1 argument (a game ID number) from the Bingo Games folder,
and returns a list of all the points in which each of the generated tickets will win.
'''
import os
import sys
listOfTickets = []
class TicketWin:
def __init__(self, winPoint, ticketNumber):
self.winPoint = winPoint
self.ticketNumber = ticketNumber
def primes(n):
primfac = []
d = 2
while d*d <= n:
while (n % d) == 0:
primfac.append(d) # supposing you want multiple factors repeated
n //= d
d += 1
if n > 1:
primfac.append(n)
return primfac
def checkWin(ticketId, directory, lines):
ticketTracks = primes(ticketId)
lastSong = "INVALID"
if os.path.exists(directory):
fileLines = lines
for i in fileLines:
if len(i) > 4:
[orderNo, songId, title, artist] = i.split("/#/")
if int(songId) in ticketTracks:
lastSong = orderNo
ticketTracks.remove(int(songId))
if len(ticketTracks) == 0 and lastSong != "INVALID":
return int(lastSong)
else:
return 0
else:
print("Game doesn't exist")
return -1
gameNumber = sys.argv[1]
path = "./Bingo Games/Bingo Game - "+gameNumber
f = open(path + "/ticketTracks")
ticketFileLines = f.read()
f.close()
ticketFileLines = ticketFileLines.split("\n")
ticketFileLines = ticketFileLines[0:len(ticketFileLines)-1]
f = open(path + "/gameTracks", 'r')
fileLines = f.read()
f.close()
fileLines = fileLines.split("\n")
winningPoints = []
for i in range(0,len(fileLines)):
winningPoints.append(0)
for line in ticketFileLines:
[ticketNum, ticketId] = line.split("/")
winPoint = checkWin(int(ticketId), path, fileLines)
listOfTickets.append(TicketWin(winPoint,ticketNum))
winningPoints[winPoint] = winningPoints[winPoint] + 1
print(winningPoints)
place = 0
count = 0
for i in winningPoints:
if i > 0:
place = count
break
count = count + 1
#print("First Win After " + str(place) + " tracks have played.")
listOfTickets.sort(key=lambda x: x.winPoint, reverse=False)
bestWinnerTickets = []
lastWinPoint = 0
for i in winningPoints:
if i > 0:
print("Winners at song " + str(listOfTickets[0].winPoint) + ":")
start = True
for j in range(0, i):
if not start:
print(",",end="")
print(str(listOfTickets[0].ticketNumber),end="")
del listOfTickets[0]
start = False
print("")