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.