Nhận vật phẩm có giá trị lớn nhất trong bộ sưu tập Túi trong Raku


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

Làm thế nào để có được vật phẩm (chìa khóa) có giá trị lớn nhất, tức là 2(5)từ bộ sưu tập Túi này?

(Tùy chọn) Có cách nào để bảo Bag chỉ đếm những yếu tố kế tiếp nhau và bỏ qua tất cả những yếu tố không liên tiếp để kết quả sẽ có Bag(2(4), 4(2))?


2
"Bỏ qua tất cả những gì không liên tiếp" ... .oO (chỉ giữ một giá trị nếu nó giống với cái trước hoặc cái sau) ...<1 2 2 3 2 4 4 2 2> .rotor(3=>-2, :partial) .map: { .[1] if .[1] === .[0] | .[2] }
raiph

Câu trả lời:


9

Để trả lời câu hỏi đầu tiên của bạn, có một phương pháp cho điều đó:

say $coll.maxpairs; # 2 => 5

Để trả lời câu hỏi thứ hai của bạn: không, bạn không thể. Bạn chỉ có thể nghĩ ra một số logic sẽ xử lý trước các giá trị trước khi đến Bag.

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

Rời khỏi phần * somelogic * như một bài tập cho người đọc.


Tập trung vào việc sử dụng Bagtôi không bắt gặp maxpairsphương pháp. Nó chỉ ra rằng đó là một phương pháp chung áp dụng cho bất kỳ danh sách giống như liên kết. Không biết điều đó. Tốt để biết.
Lars Malmsteen

1
Có lẽ đó là giá trị của một vấn đề tài liệu :-)
Elizabeth Mattijsen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.