Skip to content

Instantly share code, notes, and snippets.

@sairam4123
Created September 30, 2024 04:52
Show Gist options
  • Save sairam4123/8247b12f1d299b349b3171a4e4b23aa3 to your computer and use it in GitHub Desktop.
Save sairam4123/8247b12f1d299b349b3171a4e4b23aa3 to your computer and use it in GitHub Desktop.
Just trying out random stuff to build.. (bored)
import random
import pandas
names = []
with open("names_list.txt") as f:
for line in f.readlines():
line = line.strip()
idx, first, last = line.split(" ")
line = f"{first} {last}"
names.append(line)
travel_class = ['2AC', '3AC', 'SL', '2S', '1AC', 'EA', 'CC', 'EC']
coach_code = ['A', 'B', 'S', 'D', 'H', 'EA', 'C', 'E']
assert(len(travel_class) == len(coach_code))
def choose_class():
assert(len(travel_class) == len(coach_code))
tclass = random.choice(travel_class)
idx = travel_class.index(tclass)
ccode = coach_code[idx]
return (tclass, ccode)
def choose_coach(ccode):
end = {
'A': 3,
'B': 6,
'S': 13,
'D': 14,
'H': 2,
'EA': 2,
'C': 6,
'E': 3,
}
return ccode + str(random.randint(1, end[ccode]))
def choose_seat(ccode):
end = {
'A': 72,
'B': 88,
'C': 72,
'D': 108,
'E': 72,
'H': 40,
'EA': 50,
'S': 88,
}
pos = {
'A': ['UB', 'LB', 'SU', 'SL'],
'B': ['UB', 'MB', 'LB', 'SU', 'SL'],
'C': ['W', 'M', 'A'],
'D': ['W', 'M', 'A'],
'E': ['W', 'A'],
'H': ['UB', 'LB'],
'EA': ['W', 'A'],
'S': ['UB', 'MB', 'LB', 'SU', 'SL']
}
seat_pos = random.choice(pos[ccode])
seat = random.randint(1, end[ccode])
return seat_pos, seat
def get_ticket(name):
tclass, ccode = choose_class()
coach = choose_coach(ccode)
seat_pos, seat_no = choose_seat(ccode)
return tclass, coach, seat_pos, seat_no
data = []
n_tickets = int(input("How many tickets to generate?: "))
for ticket in range(n_tickets):
name = random.choice(names)
tclass, coach, seat_pos, seat_no = get_ticket(name)
data.append({'name': name, 'class': tclass, 'coach': coach, 'seat': seat_no, 'berth': seat_pos})
pandas.DataFrame(data).to_csv("tickets.csv", index=False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment