Obtén el artículo con el mayor valor en una colección de bolsos en Raku

7
my $coll=bag <1 2 2 3 2 4 4 2 2>;
say $coll; # => Bag(1, 2(5), 3, 4(2))

¿Cómo obtener el artículo (clave) con el mayor valor, es decir, el 2(5)de esta colección de bolsos?

(Opcional) ¿Hay alguna forma de decirle a la Bolsa que cuente solo aquellos elementos que son sucesivos y que no tenga en cuenta todos los que no son sucesivos para que el resultado sea así Bag(2(4), 4(2))?

Lars Malmsteen
fuente
2
"prescindir de lo que no son sucesivos" ... .oO (sólo mantener un valor si es la misma, ya sea como la anterior o la siguiente) ...<1 2 2 3 2 4 4 2 2> .rotor(3=>-2, :partial) .map: { .[1] if .[1] === .[0] | .[2] }
raiph

Respuestas:

9

Para responder a su primera pregunta, hay un método para eso:

say $coll.maxpairs; # 2 => 5

Para responder a su segunda pregunta: no, no puede. Solo puede idear alguna lógica que preprocese los valores antes de llegar al Bag.

 <1 2 2 3 2 4 4 2 2>.map( *somelogic* ).Bag

Dejar la parte * somelógica * como ejercicio para el lector.

Elizabeth Mattijsen
fuente
Habiéndome concentrado en el uso de, Bagno he encontrado el maxpairsmétodo. Resulta que es un método general que se aplica a cualquier lista de tipo asociativo. No lo sabia Bueno saber.
Lars Malmsteen
1
Tal vez eso sea digno de un problema de documentación :-)
Elizabeth Mattijsen