Tablouri (Arrays) în Ruby: Metode Puternice (compact, flatten, uniq, sample) în Ruby

Ghid complet pentru tablouri în Ruby: indexare pozitivă și negativă, eliminarea valorilor nil cu compact, aplatizarea cu flatten, extragerea aleatorie cu sample și operatorii de seturi.

Sintaxă
arr.compact | arr.flatten | arr.uniq | arr.sample(2)

Tabloul (Array) în Ruby este o listă ordonată, redimensionabilă dinamic, capabilă să stocheze elemente de tipuri eterogene. Ruby oferă un set bogat de metode de manipulare fără echivalent direct în alte limbaje.

Indexare negativă și metode utilitare avansate
articole = ["Laptop", nil, "Mouse", "Tastatură", nil, "Mouse", "Monitor"]

# 1. Indexare negativă (acces de la coadă):
puts "Ultimul element: #{articole[-1]}"      # "Monitor"
puts "Penultimul element: #{articole[-2]}"   # "Mouse"

# 2. Eliminarea valorilor nil din listă cu .compact:
fara_goluri = articole.compact
# ["Laptop", "Mouse", "Tastatură", "Mouse", "Monitor"]

# 3. Eliminarea duplicatelor cu .uniq:
unice = fara_goluri.uniq
# ["Laptop", "Mouse", "Tastatură", "Monitor"]

# 4. Aplatizarea listelor imbricate cu .flatten:
arbore = [1, [2, [3, 4], 5], 6]
puts "Listă liniarizată: #{arbore.flatten.inspect}" # [1, 2, 3, 4, 5, 6]

# 5. Extragerea aleatorie de elemente cu .sample:
castigator = ["Ana", "Bogdan", "Cristina", "David"].sample
puts "Câștigătorul extras aleatoriu este: #{castigator}"

# 6. Operații matematice de seturi pe tablouri:
a = [1, 2, 3, 4]
b = [3, 4, 5, 6]
puts "Intersecție (&): #{(a & b).inspect}"  # [3, 4]
puts "Reuniune (|): #{(a | b).inspect}"      # [1, 2, 3, 4, 5, 6]
puts "Diferență (-): #{(a - b).inspect}"     # [1, 2]