Tôi đang sử dụng Scala 2.9 và muốn xây dựng danh sách dựa trên một số thao tác.kiểu chức năng để nhân hai danh sách với Scala
Hãy xem xét những điều sau đây, tôi có hai danh sách đơn giản:
val l1 = List(2,3) val l2 = List(List(4,5,6),List(7,8,9))
Các hành vi tôi muốn là như sau, một hoạt động với cả hai danh sách, như thế này:
(2*4)+(3*7) (2*5)+(3*8) (2*6)+(3*9)
Và tôi muốn để có kết quả là một danh sách khác có các giá trị này:
29,34,39
Tôi đã cố gắng giải quyết bằng mã nguồn ở trên. Tôi có lẽ đang nghĩ về điều này một cách hoàn toàn sai, nhưng tôi đang cố gắng để tìm ra một giải pháp thanh lịch.
val lr = (l1,l2).zipped.map((t1:Int, t2:List[Int]) => ... ) println (lr) // should print List(29, 34, 39)
Tuy nhiên, tôi thậm chí không chắc chắn nếu tôi đang ở đúng cách hoặc làm thế nào nên tôi liên tục. Bất cứ ai có thể nghĩ ra một giải pháp thanh lịch cho vấn đề của tôi?
Điều này có thể hiển nhiên đối với bạn và những người khác, nhưng nó có thể đơn giản hóa suy nghĩ của bạn để nhận ra rằng đây là phép nhân ma trận, nơi bạn đã làm phẳng một trong các ma trận ('l1'.) Nếu bạn biểu diễn nó là 'val l1 = List (List) (1), Danh sách (2)) 'và chuyển đổi' l2' (hoặc ngược lại, tùy thuộc vào cách bạn đang đại diện cho ma trận của bạn) nó có thể nhiều hơn hiển nhiên. –