0

Map[Location,Player] としてモデル化されたゲーム ボードがあります。いくつかの計算のために、それを Map[Player,Set[Location]] に変換したかったのです。例として、キーと値の両方に記号を単純化して使用する場合、これを変換したいと思います。

Map('a -> 'X, 'b -> 'O, 'c -> 'X, 'd -> 'O)

これに:

Map('O -> Set('b, 'd), 'X -> Set('a, 'c))

(この質問を書いているときに、以下に投稿された1つの解決策を思いつきました。それについてのコメントをいただければ幸いです。他にもっと良い方法があるのではないでしょうか?)

4

3 に答える 3

2

グループ化した後、次を使用できますmapValues

m.groupBy(_._2).mapValues(_.keySet)
于 2013-04-02T20:51:50.963 に答える
1

質問を書いているときにかなりエレガントな解決策を思いついたので、自分自身に答えてください:

grid.groupBy(_._2).map(x => x._1 -> x._2.keySet)

より良い方法があれば聞いてみたいと思います。

于 2013-04-02T20:27:59.583 に答える
-1
m.foldLeft(Map.empty[Symbol, Set[Symbol]].withDefaultValue(Set.empty)) { case (acc, (k, v)) => acc.updated(v, acc(v) + k) }
于 2013-04-02T20:42:49.330 に答える