in rtfm/tasks/groups.py [0:0]
def generate_all(all_monsters, all_groups, all_modifiers):
# all monster assignments
monster_groupings = set()
monsters_per_group = len(all_monsters) // len(all_groups)
for monsters in itertools.permutations(all_monsters, len(all_monsters)):
groups = []
for i in range(0, len(monsters), monsters_per_group):
group = monsters[i:i+monsters_per_group]
groups.append(frozenset(group))
monster_groupings.add(frozenset(groups))
monster_assignments = set()
for groups in itertools.permutations(all_groups, len(all_groups)):
for monster_grouping in monster_groupings:
assignment = set()
for g, mg in zip(groups, monster_grouping):
assignment.add((g, tuple(sorted(list(mg)))))
monster_assignments.add(frozenset(assignment))
# all item assignments
modifier_groupings = set()
modifiers_per_element = len(all_modifiers) // len(ALL_TYPES)
for modifiers in itertools.permutations(all_modifiers, len(all_modifiers)):
groups = []
for i in range(0, len(modifiers), modifiers_per_element):
group = modifiers[i:i+modifiers_per_element]
groups.append(frozenset(group))
modifier_groupings.add(frozenset(groups))
modifier_assignments = set()
for elements in itertools.permutations(list(range(len(ALL_TYPES))), len(ALL_TYPES)):
for modifier_grouping in modifier_groupings:
assignment = []
for e, mg in zip(elements, modifier_grouping):
assignment.append((e, tuple(sorted(list(mg)))))
modifier_assignments.add(frozenset(assignment))
all_assignments = []
for m in monster_assignments:
for mm in modifier_assignments:
all_assignments.append((m, mm))
all_assignments.sort()
random.Random(0).shuffle(all_assignments)
n = len(all_assignments) // 2
train = all_assignments[:n]
dev = all_assignments[n:]
return train, dev