Defina una clase Conjunto que disponga de métodos para:
~/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 => falsePuede usar
Array
s 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