diff --git a/src/Corporation/OfficeSpace.ts b/src/Corporation/OfficeSpace.ts index dd90304d6..1572ee945 100644 --- a/src/Corporation/OfficeSpace.ts +++ b/src/Corporation/OfficeSpace.ts @@ -174,34 +174,16 @@ export class OfficeSpace { } setEmployeeToJob(job: string, amount: number): boolean { - let unassignedCount = 0; - let jobCount = 0; - for (let i = 0; i < this.employees.length; ++i) { - if (this.employees[i].pos === EmployeePositions.Unassigned) { - unassignedCount++; - } else if (this.employees[i].pos === job) { + let jobCount = this.employees.reduce((acc, employee) => (employee.pos === job ? acc + 1 : acc), 0); + + for (const employee of this.employees) { + if (jobCount == amount) return true + if (employee.pos === EmployeePositions.Unassigned && jobCount <= amount) { + employee.pos = job; jobCount++; - } - } - - if (jobCount == amount) return false; - if ((jobCount + unassignedCount) < amount) return false; - - for (let i = 0; i < this.employees.length; ++i) { - if (this.employees[i].pos === EmployeePositions.Unassigned) { - if (jobCount <= amount) { - this.employees[i].pos = job; - jobCount++; - unassignedCount--; - } - if (jobCount === amount) break; - } else if (this.employees[i].pos === job) { - if (jobCount >= amount) { - this.employees[i].pos = EmployeePositions.Unassigned; - jobCount--; - unassignedCount++; - } - if (jobCount === amount) break; + } else if (employee.pos === job && jobCount >= amount) { + employee.pos = EmployeePositions.Unassigned; + jobCount--; } } if (jobCount !== amount) return false;