Inspiration

When Joe was living in Denmark, he worked as a personal helper for a young man with muscular dystrophy whose helpers work 24-hour shifts, meaning they cannot work two consecutive days. Though fortunate to be granted personal help at no expense, most handicapped people in Denmark are responsible for scheduling their own teams, which is a surprisingly complex, tedious problem for which current tools that collect availabilities don't directly solve.

What it does

Given the availabilities and target shift quotas of multiple employees, Poodle generates a schedule that satisfies each employee's request.

How we built it

  1. Parse employees' schedules in an input file
  2. Assign days with only 1 employee available, thereby removing any adjacent days from that employee's availability and decreasing the size of the search space (4)
  3. Validate input and warn user if availability lists cannot yield a full schedule
  4. Use depth-first search on a tree where each node represents an employee being assigned to a given day, and backtracking occurs when a node has the same employee as its parent or exceeds that employee's quota.
  5. Print the master and individual employees' schedules

Challenges we ran into

The 12-hour time difference

Accomplishments that we're proud of

It works!

What we learned

We miss sleep

What's next for Poodle: Scheduler

This submission could be thought of as the backend for an eventual full-stack web app. We would love to build a Doodle-like user interface that employees can log onto to submit their availabilities, and that, once filled out by all employees, automatically generates and emails out the schedule.

This submission also solves for a particular use case with particular scheduling constraints. We would love to extend the program to be flexible enough to accommodate any scheduling need.

Built With

Share this project:

Updates