4.14. Operacje teoriomnogościowe na tablicach
Problem
Chcemy wykonywać na tablicach podstawowe operacje teoriomnogościowe (zbiorowe): sumę (unię), iloczyn (przecięcie), różnicę, iloczyn kartezjański i dopełnianie tablicy względem pewnego uniwersum.
Rozwiązanie
W klasie Array
przeciążone zostały operatory trzech podstawowych operacji zbiorowych:
# Suma (unia) [1,2,3] | [1,4,5] # => [1, 2, 3, 4, 5] # Iloczyn (przecięcie) [1,2,3] & [1,4,5] # => [1] # Różnica [1,2,3] - [1,4,5] # => [2, 3]
W klasie Set
oprócz powyższych operatorów przeciążony jest także operator różnicy symetrycznej (^
)[28]; w odniesieniu do tablic można go zrealizować za pomocą trzech pozostałych operatorów:
require 'set' a = [1,2,3] b = [3,4,5] a.to_set ^ b.to_set # => ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.