Práctica: Conjuntos

Defina una clase Conjunto que disponga de métodos para:

Debe funcionar de manera similar a la clase Set proveída con Ruby:

~/rubytesting/TheRubyProgrammingLanguage/Chapter7ClassesAndModules$ irb
>> require 'set'
=> true
>> s1 = Set.new [1, 2]
=> #<Set: {1, 2}>
>> s2 = Set.new [2, 4]
=> #<Set: {2, 4}>
>> s1+s2
=> #<Set: {1, 2, 4}>
>> s1^s2
=> #<Set: {1, 4}>
>> s2-s1
=> #<Set: {4}>
>> s1.include? 1
=> true
>> s1.include? 6
=> false
Puede usar Arrays para implementar los conjuntos. Asuma que los elementos del conjunto universal admiten un orden total. Esta sesión con irb sugiere una posible implementación:
>> a = [6, 4, 3, 4, 2, 1].uniq.sort
=> [1, 2, 3, 4, 6]
>> b = [2, 3, 2, 4, 5].uniq.sort
=> [2, 3, 4, 5]
>> (a | b).uniq.sort
=> [1, 2, 3, 4, 5, 6]
>> (a & b).uniq.sort
=> [2, 3, 4]
Esto es, puede guardar el conjunto como un Array ordenado en el que se han suprimido los elementos repetidos.

La relación de orden entre conjuntos es parcial: dados dos conjuntos A y B no necesariamente ocurre que A < B o aque B < A.

Casiano Rodriguez León 2015-01-07