"""Deterministic capacity exercise. Python standard library; synthetic inputs."""
from math import ceil

def evaluate(arrivals, minutes_per_job, staff, shift_minutes=480):
    if isinstance(staff, bool) or not isinstance(staff, int) or staff < 1:
        raise ValueError('staff must be a positive integer')
    values = (arrivals, minutes_per_job, shift_minutes)
    if any(isinstance(x, bool) or not isinstance(x, (int, float)) for x in values):
        raise ValueError('inputs must be numbers')
    if arrivals < 0 or minutes_per_job <= 0 or shift_minutes <= 0:
        raise ValueError('demand must be nonnegative; times must be positive')
    capacity = staff * shift_minutes / minutes_per_job
    return {'capacity': capacity, 'load_ratio': arrivals / capacity,
            'unserved_work': max(0, arrivals - capacity),
            'minimum_staff': ceil(arrivals * minutes_per_job / shift_minutes)}

if __name__ == '__main__':
    for staff in (2, 3, 4):
        print(staff, evaluate(100, 12, staff))
