2011-09-09 18 views

Respuesta

13

Salida Array#combination

Entonces algo como esto:

2.upto(4) { |n| array.combination(n) } 
+0

impresionante! No sabía que la biblioteca fuera tan profunda. – KevDog

+1

Debe recopilar la salida del bloque: 2.upto (4) .map {...} – tokland

+1

Incluso eso no crea una enumeración simple, por supuesto, sino una lista de listas. –

7

basicxman Afinando un poco:

2.upto(4).flat_map { |n| array.combination(n).to_a } 
#=> [["a", "b"], ["a", "c"], ["a", "d"], ..., ["c", "d", "e", "f"]] 
+0

¿Cuáles considera que son las ventajas del aplanamiento? – KevDog

+0

@KevDog: solicitó una "lista de todos los subconjuntos", por lo que parecía adecuado devolver una única matriz aplanada. Es solo un detalle, yo diría que es más importante "mapear" el upto. – tokland

+1

Es mejor usar 'flat_map' ... –

Cuestiones relacionadas