Write a program that tracks a drive through at Four Friends Fries

Have a queue for the line of cars

Have a stack of cooked fries for serving

Simulate 60 minutes worth of time at the drive thru.

Every minute, there is a 1/3 chance of a car showing up when a car gets to the front of the queue, it orders 1-6 orders of fries randomly the fry stack can have up to 8 fries at a time, track the ‘time’ they are done cooking. if a fry is older than 10 minutes, it can’t be served you can be cooking up to 4 orders of fries at a time in the frier, they take 2 minutes to cook so for each ‘minute’ figure out if a new car arrives in the drive through take any cooked fries out of the frier and add to the cooked fry stack ( with time done cooking ) take the order from the front car possibly add more fries to the frier to cook assume each order of fries costs $.5, and is sold for $1.

track total profit/loss after 60 minutes

import random

import time

class Fry:

def __init__(self, cook_time):

self.cook_time = cook_time

class Car:

def __init__(self, order_size):

self.order_size = order_size

def main():

# Start with an empty queue and stack

queue = []

stack = []

# Track the time and profit

current_time = 0

profit = 0

# Cook up to 4 orders of fries at a time

frier_size = 4

frier = []

# A car has a 1/3 chance of arriving each minute

arrival_chance = 1 / 3

# Each order of fries takes 2 minutes to cook

fry_cook_time = 2

# Each order of fries costs $0.5 and is sold for $1

fry_cost = 0.5

fry_price = 1

while current_time < 60:

current_time += 1

# Check if a new car arrives

if random.uniform(0, 1) < arrival_chance:

order_size = random.randint(1, 6)

queue.append(Car(order_size))

# Remove any cooked fries from the frier and add them to the stack

for fry in frier:

fry.cook_time -= 1

if fry.cook_time == 0:

stack.append(fry)

frier = [fry for fry in frier if fry.cook_time != 0]

# Cook more fries if there’s room in the frier

if len(frier) < frier_size:

if len(queue) > 0 and len(stack) >= queue[0].order_size:

new_fries = []

for i in range(min(frier_size – len(frier), queue[0].order_size)):

fry = stack.pop()

new_fries.append(Fry(fry_cook_time))

frier.extend(new_fries)

# Serve the front car if their order is ready

if len(queue) > 0 and len(stack) >= queue[0].order_size:

order_size = queue.pop(0).order_size

for i in range(order_size):

stack.pop()

profit += fry_price * order_size – fry_cost * order_size

# Remove any fries that are older than 10 minutes

stack = [fry for fry in stack if current_time – fry.cook_time <= 10]

print(“Total profit after 60 minutes: $” + str(profit))

if __name__ == ‘__main__’:

main()