Aller au contenu principal
Version: Next

CombinationHelper

combine

List<List<Object>> combine(List<Object> elements)

Description

Permet de calculer toutes les combinaisons possibles à partir d'une liste d'éléments.

Les petites combinaisons sont des listes d'un élément, la plus grande est la liste d'éléments elle-même.

L'ordre des éléments n'est pas important, [A, B] et [B, A] sont considérés comme équivalents.

Paramètres

  • elements la liste des éléments qu'on souhaite combiner.

Retour

Une liste des combinaisons possibles.

Exemples
CombinationHelper.combine(['A', 'B', 'C']) // = [['A'], ['B'], ['C'], ['A', 'B'], ['A', 'C'], ['B', 'C'], ['A', 'B', 'C']]

combine (avec éléments obligatoires)

List<List<Object>> combine(List<Object> elements, List<Object> mandatory)

Permet de calculer toutes les combinaisons possibles à partir d'une liste d'éléments en précisant une sous-liste des éléments obligatoires. Ainsi, les combinaisons ne contenant pas les éléments obligatoires ne seront pas retenues.

La petite combinaison est la sous-liste des éléments obligatoires, la plus grande est la liste d'éléments elle-même.

L'ordre des éléments n'est pas important, [A, B] et [B, A] sont considérés comme équivalents.

Paramètres

  • elements la liste des éléments qu'on souhaite combiner.
  • mandatory la sous-liste des éléments obligatoires.

Retour

Une liste des combinaisons possibles.

Exemples
CombinationHelper.combine(['A', 'B', 'C'], ['A']) // = [['A'], ['A', 'B'], ['A', 'C'], ['A', 'B', 'C']]
CombinationHelper.combine(['A', 'B', 'C'], ['A', 'B']) // = [['A', 'B'], ['A', 'B', 'C']]

combine (avec dépendances)

List<List<Object>> combine(List<Object> elements, Map<Object, List<Object>> dependencies)

Permet de calculer toutes les combinaisons possibles à partir d'une liste d'éléments en précisant une Map des dépendances des éléments entre eux. Ainsi, les combinaisons dont les dépendances des éléments qui la composent ne sont pas satisfaites ne seront pas retenues.

La petite combinaison est la sous-liste contenant l'élément ayant le moins de dépendances + ses dépendances, la plus grande est la liste d'éléments elle-même.

L'ordre des éléments n'est pas important, [A, B] et [B, A] sont considérés comme équivalents.

Paramètres

  • elements la liste des éléments qu'on souhaite combiner.
  • dependencies la map des dépendances entre éléments.

Retour

Une liste des combinaisons possibles.

Exemples
// A et B n'ont pas de dépendances, C dépend de B
CombinationHelper.combine(['A', 'B', 'C'], ['C': ['B']]) // = [['A'], ['B'], ['A', 'B'], ['B', 'C'], ['A', 'B', 'C']]
// A n'a pas de dépendances, B dépend de A, C dépend de A et B
CombinationHelper.combine(['A', 'B', 'C'], ['B': ['A'], 'C': ['A', 'B']]) // = [['A'], ['A', 'B'], ['A', 'B', 'C']]

combine (avec éléments obligatoires et dépendances)

List<List<Object>> combine(List<Object> elements, List<Object> mandataory, Map<Object, List<Object>> dependencies)

Permet de calculer toutes les combinaisons possibles à partir d'une liste d'éléments en précisant une sous-liste des éléments obligatoires et une Map des dépendances des éléments entre eux. Ainsi, les combinaisons ne contenant pas les éléments obligatoires et dont les dépendances des éléments qui la composent ne sont pas satisfaites ne seront pas retenues.

La petite combinaison est la sous-liste contenant les éléments obligatoires et l'élément ayant le moins de dépendances

  • ses dépendances, la plus grande est la liste d'éléments elle-même.

L'ordre des éléments n'est pas important, [A, B] et [B, A] sont considérés comme équivalents.

Paramètres

  • elements la liste des éléments qu'on souhaite combiner.
  • mandatory la sous-liste des éléments obligatoires.
  • dependencies la map des dépendances entre éléments.

Retour

Une liste des combinaisons possibles.

Exemples
// A est obligatoire, A et B n'ont pas de dépendances, C dépend de B
CombinationHelper.combine(['A', 'B', 'C'], ['A'], ['C': ['B']]) // = [['A'], ['A', 'B'], ['A', 'B', 'C']]