generateChart({ cleaner: 2, driver: 8 }) === { cleaner: 72, driver: 288 }
generateChart({ cleaner: 2, driver: 8, washer: 14 }) === { cleaner: 30, driver: 120, washer: 210 }
generateChart({ cleaner: 1 }) === { cleaner: 360 }
const normalize = obj => {
const result = { ...obj }; // shallow copy
const k = 360 / Object.values(result).reduce((acc, c) => acc + c);
for (const prop in result) result[prop] *= k;
return result;
};