私の解決策は次のとおりです。
(fn [s]
(map #(first %) (group-by identity s)))
最初の 3 つのテストは成功し、最後のテストは失敗しました。
なぜなら
(group-by identity (range 50)
順不同で結果を返します。しかし、私のソリューションは、group-by 関数の順序付き機能に強く依存しています。つまり、結果マップ内のすべてのキーの順序を維持する必要があります。Docはそれを保証していませんが、これはほとんど真実です。
本当に奇妙なことは次のとおりです。
ご覧のとおり、パラメーターが 32 を超える場合、group-by 関数は間違った順序になります。結果はランダムではありませんが、オーバーフローした要素が最初の要素の後に追加されます。
なんで?
group-by 関数の順序付き機能を維持するにはどうすればよいですか、それともより良い解決策がありますか?