py_room_scheduler · Python

▶ Aprender py_room_scheduler (Python) paso a paso · explicación de py_room_scheduler

Código línea a línea

Tres columnas: el código, el trozo del subject o del main que obliga a escribir esa línea, y el por qué.

py_room_scheduler.py
CódigoSubjectPor qué
def py_room_scheduler(meetings: list[list[int]]) -> dict:def py_room_scheduler(meetings: list[list[int]]) -> dict[str, Any]:Firma del subject. Any necesitaría import typing, y el examen no permite imports: anoto dict a secas.
rooms = []a list of lists containing the scheduled intervals for each roomCada sala es una lista de reuniones en orden.
for start, end in sorted(meetings):Sort meetings by start time and assign them to available rooms sequentially.sorted ordena por inicio (y desempata por fin). Desempaqueto cada [start, end] al vuelo. No muto la entrada: sorted crea una lista nueva.
for room in rooms:assign them to available rooms sequentiallyBusco la primera sala libre, en orden de creación.
if room[-1][1] <= start:without overlapSala libre si su última reunión acaba antes o justo cuando empieza esta. <=: acabar a las 10 y empezar a las 10 no se solapan.
room.append([start, end])La meto en esa sala. Lista nueva [start, end], no la de la entrada.
breakYa colocada: dejo de buscar sala.
else:the minimum number of meeting rooms requiredelse del for: solo entra si el bucle acabó sin break, es decir, ninguna sala libre.
rooms.append([[start, end]])Sala nueva con esta reunión dentro.
return {"total_rooms": len(rooms), "schedule": rooms}`"total_rooms"`: the integer count of rooms required.
`"schedule"`: a list of lists containing the scheduled intervals for each room.
Las dos claves exactas del subject. Con [] sale {"total_rooms": 0, "schedule": []} sin caso especial.