{"ScriptPreparationCode":"function splitGroups({\r\n howManyPeople,\r\n maxMembersPerGroup\r\n}) {\r\n const maxGroups = Math.ceil(howManyPeople / maxMembersPerGroup)\r\n const minPeoplePerGroup = Math.floor(howManyPeople / maxGroups)\r\n const peoplePerGroup = Array.from({\r\n length: maxGroups\r\n }).fill(\r\n minPeoplePerGroup\r\n )\r\n const remainingPeople = howManyPeople - minPeoplePerGroup * maxGroups\r\n return peoplePerGroup.map((initialQty, index) =\u003E {\r\n if (index \u003C remainingPeople) return initialQty \u002B 1\r\n return initialQty\r\n })\r\n}\r\n\r\n\r\nconst repeat = ({ value, times }) =\u003E value.toString().concat(\u0027,\u0027).repeat(times)\r\nconst removeLastChar = (value) =\u003E value.slice(0, -1)\r\nfunction splitGroupsSTR({ howManyPeople, maxMembersPerGroup }) {\r\n const groups = Math.ceil(howManyPeople / maxMembersPerGroup)\r\n\r\n const minPeoplePerGroup = Math.floor(howManyPeople / groups)\r\n const groupsWithMorePeople = howManyPeople - minPeoplePerGroup * groups\r\n const smallerGroups = repeat({\r\n value: minPeoplePerGroup,\r\n times: groups - groupsWithMorePeople,\r\n })\r\n if (!groupsWithMorePeople) return removeLastChar(smallerGroups)\r\n const largerGroups = repeat({\r\n value: minPeoplePerGroup \u002B 1,\r\n times: groupsWithMorePeople,\r\n })\r\n return largerGroups \u002B removeLastChar(smallerGroups)\r\n}","TestCases":[{"Name":"Array","Code":"splitGroups({howManyPeople: 10000000, maxMembersPerGroup: 3})\r\nsplitGroups({howManyPeople: 100, maxMembersPerGroup: 3})\r\nsplitGroups({howManyPeople: 10, maxMembersPerGroup: 3})","IsDeferred":false},{"Name":"String","Code":"splitGroupsSTR({howManyPeople: 10000000, maxMembersPerGroup: 3})\r\nsplitGroupsSTR({howManyPeople: 100, maxMembersPerGroup: 3})\r\nsplitGroupsSTR({howManyPeople: 10, maxMembersPerGroup: 3})","IsDeferred":false}]}