Comment puis-je obtenir l’intersection, l’union et le sous-ensemble des tableaux dans Ruby?

Je veux créer différentes méthodes pour une classe appelée Multiset .

J’ai toutes les méthodes requirejses, mais je ne sais pas comment écrire des méthodes d’intersection, d’union et de sous-ensemble.

Pour l’intersection et l’union, mon code commence comme ceci:

def intersect(var) x = Multiset.new end 

Voici un exemple:

 X = [1, 1, 2, 4] Y = [1, 2, 2, 2] 

alors l’intersection de X et Y est [1, 2] .

En utilisant le fait que vous pouvez faire des opérations sur des tableaux en faisant & (intersection), - (différence), et | (syndicat).

Évidemment, je n’ai pas implémenté le MultiSet dans les spécifications, mais cela devrait vous permettre de démarrer:

 class MultiSet attr_accessor :set def initialize(set) @set = set end # intersection def &(other) @set & other.set end # difference def -(other) @set - other.set end # union def |(other) @set | other.set end end x = MultiSet.new([1,1,2,2,3,4,5,6]) y = MultiSet.new([1,3,5,6]) px - y # [2,2,4] px & y # [1,3,5,6] px | y # [1,2,3,4,5,6] 

Je suppose que X et Y sont des tableaux? Si oui, il existe un moyen très simple de le faire:

 x = [1, 1, 2, 4] y = [1, 2, 2, 2] # intersection x & y # => [1, 2] # union x | y # => [1, 2, 4] # difference x - y # => [4] 

La source