30 lines
1 KiB
Text
30 lines
1 KiB
Text
% ...
|
|
println(missing14=[[O:O=5 in Occ]:Occ in [occurrences([P[I]:P in P1]):I in 1..4]]),
|
|
|
|
% variant using sorting the occurrences
|
|
println(missing15a=[C:C=_ in [sort2(Occ).first():Occ in [occurrences([P[I]:P in P1]):I in 1..4]]]),
|
|
|
|
% transpose instead of array index
|
|
println(missing15b=[C:C=_ in [sort2(O).first():T in transpose(P1),O=occurrences(T)]]),
|
|
|
|
% extract the values with first
|
|
println(missing15c=[sort2(O).first():T in transpose(P1),O=occurrences(T)].map(first)),
|
|
|
|
println(missing15d=[sort2(O).first().first():T in transpose(P1),O=occurrences(T)]),
|
|
|
|
println(missing15e=[S[1,1]:T in transpose(P1),S=sort2(occurrences(T))]).
|
|
|
|
% return a map with the elements and the number of occurrences
|
|
occurrences(List) = Map =>
|
|
Map = new_map(),
|
|
foreach(E in List)
|
|
Map.put(E, cond(Map.has_key(E),Map.get(E)+1,1))
|
|
end,
|
|
Perms2 = Perms,
|
|
foreach(P in P1) Perms2 := delete(Perms2,P) end,
|
|
println(missing16=Perms2),
|
|
|
|
nl.
|
|
|
|
% sort a map according to values
|
|
sort2(Map) = [K=V:_=(K=V) in sort([V=(K=V): K=V in Map])]
|