У меня есть карта, организованная следующим образом. Ключ простой термин позволяет сказать целое число, но значение является сложным набором {BB, CC, DD}. Каков наилучший способ найти минимальный CC на карте? До сих пор у меня есть следующиеНайти минимальное значение на карте
-module(test).
-author("andre").
%% API
-export([init/0]).
init() ->
TheMap = build(maps:new(), 20),
io:format("Map: ~p~n", [TheMap]),
AKey = hd(maps:keys(TheMap)),
AValue = maps:get(AKey, TheMap),
maps:fold(fun my_min/3, {AKey, AValue}, TheMap).
build(MyMap, Count) when Count == 0 ->
MyMap;
build(MyMap, Count) ->
NewMap = maps:put(Count, {random:uniform(100), random:uniform(100), random:uniform(100)}, MyMap),
build(NewMap, Count - 1).
my_min(Key, {A,B,C}, {MinKey, {AA,BB,CC}}) ->
if B < BB -> {Key, {A,B,C}};
B >= BB -> {MinKey, {AA,BB,CC}}
end.
Моя карта мала, так что я не слишком беспокоится об использовании AKEY и Avalue найти начальные значения для складки, но мне было интересно, если есть лучший способ, или другая структура данных.
- Спасибо.