ScalaでProject Euler(145)

Problem 98

アナグラムは次のように探します。例えば、CAREをアルファベット順に並べるとACERになります。RACEも同じです。こうして同じになったものがアナグラムです。まずそうやって全ての単語を調べます。groupByを使うと簡単ですね。ScalaのgroupByはソートしなくても使えます。その分効率が悪いとも言えます。

こうしてアナグラムごとにわけておきます。これを平方数についても行います。関数を共通化するために平方数を文字列化します。特にスピードが必要ではないのでよいでしょう。

あとはアナグラムをペアにして、平方数もペアにして、それぞれマッチするか調べます。