Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions solutions/python/chaitanas-colossal-coaster/1/list_methods.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
"""Functions to manage and organize queues at Chaitana's roller coaster."""


def add_me_to_the_queue(express_queue: list[str],
normal_queue: list[str],
ticket_type: int,
person_name: str) -> list[str]:
"""
Add a person to the 'express' or 'normal' queue depending on the ticket number.

:param express_queue: list[str] - names in the Fast-track queue.
:param normal_queue: list[str] - names in the normal queue.
:param ticket_type: int - type of ticket. 1 = express, 0 = normal.
:param person_name: str - name of person to add to a queue.
:return: list - the (updated) queue the name was added to.
"""
if ticket_type:
express_queue.append(person_name)
return express_queue

normal_queue.append(person_name)
return normal_queue


def find_my_friend(queue: list[str],
friend_name: str) -> int:
"""
Search the queue for a name and return their queue position (index).

:param queue: list - names in the queue.
:param friend_name: str - name of friend to find.
:return: int - index at which the friends name was found.
"""
return queue.index(friend_name)


def add_me_with_my_friends(queue: list[str],
index: int,
person_name: str) -> list[str]:
"""
Insert the late arrival's name at a specific index of the queue.

:param queue: list - names in the queue.
:param index: int - the index at which to add the new name.
:param person_name: str - the name to add.
:return: list - queue updated with new name.
"""
queue.insert(index, person_name)
return queue


def remove_the_mean_person(queue: list[str],
person_name: str) -> list[str]:
"""
Remove the mean person from the queue by the provided name.

:param queue: list[str] - names in the queue.
:param person_name: str - name of mean person.
:return: list - queue update with the mean persons name removed.
"""
queue.remove(person_name)
return queue


def how_many_namefellows(queue: list[str],
person_name: str) -> int:
"""
Count how many times the provided name appears in the queue.

:param queue: list - names in the queue.
:param person_name: str - name you wish to count or track.
:return: int - the number of times the name appears in the queue.
"""
return queue.count(person_name)


def remove_the_last_person(queue: list[str]) -> str:
"""
Remove the person in the last index from the queue and return their name.

:param queue: list - names in the queue.
:return: str - name that has been removed from the end of the queue.
"""
name: str = queue.pop()
return name


def sorted_names(queue: list[str]) -> list[str]:
"""
Sort the names in the queue in alphabetical order and return the result.

:param queue: list - names in the queue.
:return: list - copy of the queue in alphabetical order.
"""
return sorted(queue)