Skip to content

Instantly share code, notes, and snippets.

@cloudwu
Created December 27, 2024 11:18
Show Gist options
  • Save cloudwu/fa15de666069efc3583aa4d78487f4e1 to your computer and use it in GitHub Desktop.
Save cloudwu/fa15de666069efc3583aa4d78487f4e1 to your computer and use it in GitHub Desktop.
bool2tri
-- https://x.com/Ziyao233/status/1872575782360649792
local inf <const> = 1/0
local bool2Tri = {
[true] = "true",
[false] = "false",
}
local lut = {
equal = { [inf] = false, [true] = true, [-inf] = false },
["greater-or-eq"] = { [inf] = true, [true] = true, [-inf] = false },
greater = { [inf] = true, [true] = false, [-inf] = false },
["less-or-eq"] = { [inf] = false, [true] = true, [-inf] = true },
less = { [inf] = false, [true] = false, [-inf] = true },
unequal = { [inf] = true, [true] = false, [-inf] = true },
}
for k,v in pairs(lut) do
for k,t in pairs(v) do
v[k] = bool2Tri[t]
end
end
function test(fn, r)
return lut[fn][r == 0 or r * inf]
end
assert(test("equal", 42) == "false")
assert(test("equal", 0) == "true")
assert(test("equal", -42) == "false")
assert(test("greater-or-eq", 42) == "true")
assert(test("greater-or-eq", 0) == "true")
assert(test("greater-or-eq", -42) == "false")
assert(test("greater", 42) == "true")
assert(test("greater", 0) == "false")
assert(test("greater", -42) == "false")
assert(test("less-or-eq", 42) == "false")
assert(test("less-or-eq", 0) == "true")
assert(test("less-or-eq", -42) == "true")
assert(test("less", 42) == "false")
assert(test("less", 0) == "false")
assert(test("less", -42) == "true")
assert(test("unequal", 42) == "true")
assert(test("unequal", 0) == "false")
assert(test("unequal", -42) == "true")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment