49 lines
1.2 KiB
Lua
49 lines
1.2 KiB
Lua
--!nocheck
|
|
|
|
arg0,arg1 = ...
|
|
|
|
-- 8 2-input functions
|
|
local function x1(a, b) return a + b end
|
|
local function x2(a, b) return a - b end
|
|
local function x3(a, b) return b - a end
|
|
local function x4(a, b) return tonumber(tostring(b%1000) .. tostring(math.abs(a%1000))) end
|
|
local function x5(a, b) return tonumber(tostring(b%1337) .. tostring(math.abs(a%1337))) end
|
|
local function x6(a, b) return (a % 1000) * (b % 1000) end
|
|
local function x7(a, b) return (a % 1337) * (b % 1337) end
|
|
local function x8(a, b) return x6(x1(a,b),x2(a,b)) end
|
|
|
|
-- shuffle list to ensure code must emulate our RNG
|
|
local sh = {1,2,3,4,5,6,7,8}
|
|
local r = Random.new(5)
|
|
for i = 1,32 do
|
|
local j = r:NextInteger(1,8)
|
|
local k = r:NextInteger(1,8)
|
|
local t = sh[j]
|
|
sh[j] = sh[k]
|
|
sh[k] = t
|
|
end
|
|
local bf = {}
|
|
bf[sh[1]] = x1
|
|
bf[sh[2]] = x2
|
|
bf[sh[3]] = x3
|
|
bf[sh[4]] = x4
|
|
bf[sh[5]] = x5
|
|
bf[sh[6]] = x6
|
|
bf[sh[7]] = x7
|
|
bf[sh[8]] = x8
|
|
|
|
local function x9(a, b)
|
|
local acc = 393
|
|
local cnt = 1
|
|
-- create and iterate over table in a way that iteration order matters.
|
|
for i = 1, 16 do
|
|
local em = (math.abs(b+acc+cnt) % 8) + 1
|
|
local f = bf[em]
|
|
acc = (acc + f(acc+a, b)) % 10000000
|
|
cnt = cnt + 1
|
|
end
|
|
return acc
|
|
end
|
|
return x9(arg0,arg1)
|
|
|