楽のバッグコレクションで最大の価値を持つアイテムを手に入れよう


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

最大の値を持つアイテム(キー)を取得する方法、つまり、2(5)このBagコレクションから

(オプション)結果が次のようになるように、連続する要素のみをカウントし、連続しないすべての要素を無視するようにBagに指示する方法はありますBag(2(4), 4(2))か?


2
「連続していないものはすべて無視してください」... .oO(値が前と後のどちらかと同じである場合にのみ値を保持します)...<1 2 2 3 2 4 4 2 2> .rotor(3=>-2, :partial) .map: { .[1] if .[1] === .[0] | .[2] }
raiph

回答:


9

最初の質問に答えるために、その方法があります。

say $coll.maxpairs; # 2 => 5

2番目の質問に答えるには、いいえ、できません。に到達する前に値を前処理するロジックのみを考案できますBag

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

* somelogic *の部分は、読者への演習として残しておきます。


Bag私はmaxpairsメソッドの使用に集中していたので、メソッドに出くわしていません。それは、連想のようなリストに適用される一般的な方法であることがわかります。知らなかった。知ってよかった。
Lars Malmsteen

1
おそらくそれはドキュメントの問題に値するでしょう:-)
Elizabeth Mattijsen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.