refactor: don't store order of unrestrictedOccurrences
This commit is contained in:
parent
2be9d76af2
commit
ff5d27cdf3
@ -278,9 +278,9 @@ examAutoOccurrence (hash -> seed) rule ExamAutoOccurrenceConfig{..} occurrences
|
|||||||
shuffledUsers :: [UserId]
|
shuffledUsers :: [UserId]
|
||||||
shuffledUsers = shuffle' (Map.keys unassignedUsers) (length unassignedUsers) (mkStdGen seed)
|
shuffledUsers = shuffle' (Map.keys unassignedUsers) (length unassignedUsers) (mkStdGen seed)
|
||||||
restrictedOccurrences :: Map ExamOccurrenceId Natural
|
restrictedOccurrences :: Map ExamOccurrenceId Natural
|
||||||
unrestrictedOccurrences :: [ExamOccurrenceId]
|
unrestrictedOccurrences :: Set ExamOccurrenceId
|
||||||
(unrestrictedOccurrences, restrictedOccurrences)
|
(unrestrictedOccurrences, restrictedOccurrences)
|
||||||
= second Map.fromList $ partitionRestricted ([], []) occurrences''
|
= bimap Set.fromList Map.fromList $ partitionRestricted ([], []) occurrences''
|
||||||
-- reduce available space until to excess space is left while keeping the filling ratio as equal as possible
|
-- reduce available space until to excess space is left while keeping the filling ratio as equal as possible
|
||||||
decreaseBiggestOutlier :: Natural -> Map ExamOccurrenceId Natural -> Map ExamOccurrenceId Natural
|
decreaseBiggestOutlier :: Natural -> Map ExamOccurrenceId Natural -> Map ExamOccurrenceId Natural
|
||||||
decreaseBiggestOutlier 0 currentOccurrences = currentOccurrences
|
decreaseBiggestOutlier 0 currentOccurrences = currentOccurrences
|
||||||
@ -311,7 +311,7 @@ examAutoOccurrence (hash -> seed) rule ExamAutoOccurrenceConfig{..} occurrences
|
|||||||
finalOccurrences = Map.toList $ decreaseBiggestOutlier extraCapacity restrictedOccurrences
|
finalOccurrences = Map.toList $ decreaseBiggestOutlier extraCapacity restrictedOccurrences
|
||||||
-- fill in users in a random order
|
-- fill in users in a random order
|
||||||
randomlyAssignedUsers :: Map UserId (Maybe ExamOccurrenceId)
|
randomlyAssignedUsers :: Map UserId (Maybe ExamOccurrenceId)
|
||||||
randomlyAssignedUsers = Map.fromList $ fillUnrestricted (List.cycle unrestrictedOccurrences)
|
randomlyAssignedUsers = Map.fromList $ fillUnrestricted (List.cycle $ Set.toList unrestrictedOccurrences)
|
||||||
$ foldl' addUsers ([], shuffledUsers) finalOccurrences
|
$ foldl' addUsers ([], shuffledUsers) finalOccurrences
|
||||||
addUsers :: ([(UserId, Maybe ExamOccurrenceId)], [UserId])
|
addUsers :: ([(UserId, Maybe ExamOccurrenceId)], [UserId])
|
||||||
-> (ExamOccurrenceId, Natural)
|
-> (ExamOccurrenceId, Natural)
|
||||||
|
|||||||
Reference in New Issue
Block a user