Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions evens.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
if not TEST then
assert(SMODS.load_file('modutils/init.lua'))()
assert(SMODS.load_file('logic/init.lua'))()
local ModUtils
local EvensHandValidator

if TEST then
ModUtils = require('modutils')
EvensHandValidator = require('logic')
else
ModUtils = assert(SMODS.load_file('modutils/init.lua'))()
EvensHandValidator = assert(SMODS.load_file('logic/init.lua'))()
end

local EvensHand = {
Expand All @@ -11,7 +17,7 @@ local EvensHand = {
}

SMODS.PokerHand {
key = 'EvensHand',
key = 'EvensHand',
mult = EvensHand.mult,
chips = EvensHand.chips,
l_mult = EvensHand.mult_increase_per_level,
Expand All @@ -21,14 +27,13 @@ SMODS.PokerHand {
{ 'C_4', true }, -- 4 of Clubs, scores
{ 'H_6', true }, -- 6 of Hearts, scores
{ 'D_8', true }, -- 8 of Diamonds, scores
{ 'S_T', true } -- 10 of Spades, scores
{ 'S_T', true } -- 10 of Spades, scores
},
evaluate = function (parts, hand)
evaluate = function(parts, hand)
local cardRanksFromHand = ModUtils.cardRanksFromHand(hand)
if (EvensHandValidator.isValidCardRanks(cardRanksFromHand)) then
if EvensHandValidator.isValidCardRanks(cardRanksFromHand) then
return { hand }
end

return {}
end
}
Expand All @@ -53,4 +58,3 @@ if not TEST then
end
end


18 changes: 10 additions & 8 deletions logic/init.lua
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
if not TEST then
assert(SMODS.load_file('utils/init.lua'))()
local Utils
if TEST then
Utils = require('utils')
else
Utils = assert(SMODS.load_file('utils/init.lua'))()
end


EvensHandValidator = {}
local EvensHandValidator = {}

function EvensHandValidator.isValidCardRanks(cardRanksFromHand)
if #cardRanksFromHand ~= 5 then
return false
end

local validCardRanks = {'2', '4', '6', '8', 'T'}
local validCardRanks = { '2', '4', '6', '8', 'T' }
local uniqueCardRanks = {}
local uniqueCardRanksCounted = 0

for _, rank in ipairs(cardRanksFromHand) do
if not Utils.contains(validCardRanks, rank) then
return false
end

-- Track unique values
if not uniqueCardRanks[rank] then
uniqueCardRanks[rank] = true
uniqueCardRanksCounted = uniqueCardRanksCounted + 1
end
end

return uniqueCardRanksCounted == 5
end

Expand Down
4 changes: 2 additions & 2 deletions modutils/init.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ModUtils = {}
local ModUtils = {}

function ModUtils.cardRanksFromHand(hand)
local ranks = {}
Expand All @@ -8,4 +8,4 @@ function ModUtils.cardRanksFromHand(hand)
return ranks
end

return ModUtils
return ModUtils
10 changes: 6 additions & 4 deletions utils/init.lua
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
Utils = {}
local Utils = {}

function Utils.contains(tbl, elem)
for _, v in ipairs(tbl) do
if v == elem then return true end
if v == elem then
return true
end
end
return false
end

function Utils.printTable(tbl)
for k,v in pairs(tbl) do
for k, v in pairs(tbl) do
if type(v) == "table" then
print(k .. " = { ")
Utils.printTable(v)
Expand All @@ -19,4 +21,4 @@ function Utils.printTable(tbl)
end
end

return Utils
return Utils