From d33bdfea626158621cc6b30b7e2f0fabe2d73879 Mon Sep 17 00:00:00 2001 From: Connor Olding Date: Fri, 8 Jun 2018 02:46:00 +0200 Subject: [PATCH] add argsort function --- util.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/util.lua b/util.lua index 735c047..a127fe3 100644 --- a/util.lua +++ b/util.lua @@ -8,6 +8,7 @@ local min = math.min local pairs = pairs local random = math.random local select = select +local sort = table.sort local sqrt = math.sqrt local function signbyte(x) @@ -153,6 +154,14 @@ local function rbool() return 0.5 >= random() end +local function argsort(t, comp, out) + comp = comp or function(a, b) return a < b end + out = out or {} + for i=1, #t do out[i] = i end + sort(out, function(a, b) return comp(t[a], t[b]) end) + return out +end + return { signbyte=signbyte, boolean_xor=boolean_xor, @@ -173,4 +182,5 @@ return { argmax2=argmax2, rchoice2=rchoice2, rbool=rbool, + argsort=argsort, }