conf = {
num=10000 -- finish after accepting 1000 deals
}
-- accept only the deals in which :
function filter()
local Wovercaalls1H = (((W:hcp() >= 8 and W:spades() >= 5)
-- 1NT overcall
or (W:hcp() >= 15)
-- natural 2-level overcalls
or (W:hcp() >= 10 and W:clubs() >= 5)
or (W:hcp() >= 10 and W:diamonds() >= 5)
or (W:hcp() >= 10 and W:hearts() >= 5)
-- weak/preemptive action
or (W:hcp() <= 9 and W:clubs() >= 6)
or (W:hcp() <= 9 and W:diamonds() >= 6)
or (W:hcp() <= 9 and W:hearts() >= 6)
or (W:hcp() <= 9 and W:spades() >= 6)))
local Wovercalls1S = (((W:hcp() >= 15)
-- natural 2-level overcalls
or (W:hcp() >= 10 and W:clubs() >= 5)
or (W:hcp() >= 10 and W:diamonds() >= 5)
or (W:hcp() >= 10 and W:hearts() >= 5)
or (W:hcp() >= 10 and W:spades() >= 5)
-- weak/preemptive action
or (W:hcp() <= 9 and W:clubs() >= 6)
or (W:hcp() <= 9 and W:diamonds() >= 6)
or (W:hcp() <= 9 and W:hearts() >= 6)
or (W:hcp() <= 9 and W:spades() >= 6)))
local Wdoubles1S = ((W:hcp() >= 12
and W:spades() <= 2
and (
W:hearts() >= 3
or W:clubs() >= 3
or W:diamonds() >= 3
)))
local Wdoubles1H = ((W:hcp() >= 12
and W:hearts() <= 2
and (
W:spades() >= 3
or W:clubs() >= 3
or W:diamonds() >= 3
)))
local Sopens1H = (S:hearts() >= 5 and S:hcp() >= 11 and S:hcp() <= 21)
local Sopens1S = (S:spades() >= 5 and S:hcp() >= 11 and S:hcp() <= 21)
local NforcingNTover1H = (N:hcp() >= 6 and N:hcp() <= 12 and N:hearts() <= 2 and N:spades() <= 3)
local NForcingNTover1S = (N:hcp() >= 6 and N:hcp() <= 12 and N:spades() <= 2 )
local Eopens = E:hcp() >= 12
local Epreempts = ((E:hcp() <= 10 and E:clubs() >= 6)
or (E:hcp() <= 10 and E:diamonds() >= 6)
or (E:hcp() <= 10 and E:hearts() >= 6)
or (E:hcp() <= 10 and E:spades() >= 6))
local Epasses = (not Eopens) and (not Epreempts)
local seat1 = ((N:spades() + E:hearts() + S:diamonds() + W:clubs()) % 2 == 0)
if seat 1 then
return
(
(
Sopens1H and (not Wovercaalls1H) and (not Wdoubles1H) and NforcingNTover1H
)
or
(
Sopens1S and (not Wovercaalls1S) and (not Wdoubles1S) and NForcingNTover1S
)
)
end
--or
if not seat1 then
(Epasses and
((
Sopens1H and not Wovercaalls1H and not Wdoubles1H and NforcingNTover1H
)
or
(
Sopens1S and not Wovercaalls1S and not Wdoubles1S and NForcingNTover1S
)))
end
end
-- for each accepted deal, calculate number of tricks in NT by S:
function stats()
--local shapeN5332 = N:pattern(function(a, b, c, d) return a == 5 and b == 3 and c==3; end)
--local shapeN4432 = N:pattern(function(a, b, c, d) return a == 4 and b == 4 and c==3; end)
--local shapeN4333 = N:pattern(function(a, b, c, d) return a == 4 and b == 3 and c==3; end)
local shapem32 = N:shape(function(s, h, d, c) return d == 3 and c==2; end)
local shapem23 = N:shape(function(s, h, d, c) return d == 2 and c==3; end)
local shapem34 = N:shape(function(s, h, d, c) return d == 3 and c==4; end)
local shapem43 = N:shape(function(s, h, d, c) return d == 4 and c==3; end)
local shapem24 = N:shape(function(s, h, d, c) return d == 2 and c==4; end)
local shapem42 = N:shape(function(s, h, d, c) return d == 4 and c==2; end)
local shapem53 = N:shape(function(s, h, d, c) return d == 5 and c==3; end)
local shapem35 = N:shape(function(s, h, d, c) return d == 3 and c==5; end)
local shapem52 = N:shape(function(s, h, d, c) return d == 5 and c==2; end)
local shapem25 = N:shape(function(s, h, d, c) return d == 2 and c==5; end)
local shapem54 = N:shape(function(s, h, d, c) return d == 5 and c==4; end)
local shapem45 = N:shape(function(s, h, d, c) return d == 4 and c==5; end)
local shapem51 = N:shape(function(s, h, d, c) return d == 5 and c==1; end)
local shapem15 = N:shape(function(s, h, d, c) return d == 1 and c==5; end)
local shapem33 = N:shape(function(s, h, d, c) return d == 3 and c==3; end)
local shapem44 = N:shape(function(s, h, d, c) return d == 4 and c==4; end)
local shapem55 = N:shape(function(s, h, d, c) return d == 5 and c==5; end)
local shapem66 = N:shape(function(s, h, d, c) return d == 6 and c==6; end)
local shapem56 = N:shape(function(s, h, d, c) return d == 5 and c==6; end)
local shapem65 = N:shape(function(s, h, d, c) return d == 6 and c==5; end)
local shapem46 = N:shape(function(s, h, d, c) return d == 4 and c==6; end)
local shapem64 = N:shape(function(s, h, d, c) return d == 6 and c==4; end)
local shapem36 = N:shape(function(s, h, d, c) return d == 3 and c==6; end)
local shapem63 = N:shape(function(s, h, d, c) return d == 6 and c==3; end)
local shapem26 = N:shape(function(s, h, d, c) return d == 2 and c==6; end)
local shapem62 = N:shape(function(s, h, d, c) return d == 6 and c==2; end)
local shapem16 = N:shape(function(s, h, d, c) return d == 1 and c==6; end)
local shapem61 = N:shape(function(s, h, d, c) return d == 6 and c==1; end)
local shapem46 = N:shape(function(s, h, d, c) return d == 4 and c==6; end)
local shapem64 = N:shape(function(s, h, d, c) return d == 6 and c==4; end)
local shape7plus = N:shape(function(s, h, d, c) return d > 6 or c > 6; end)
local c = N:clubs()
local d = N:diamonds()
local h = N:hearts()
count( "c0", c==0)
count ("c1", c==1)
count ("c2", c==2)
count ("c3", c==3)
count ("c4", c==4)
count ("c5", c==5)
count ("c6", c==6)
count ("c7+", c>6)
count( "d0", d==0)
count ("d1", d==1)
count ("d2", d==2)
count ("d3", d==3)
count ("d4", d==4)
count ("d5", d==5)
count ("d6", d==6)
count ("d7+", d>6)
count( "h0", h==0)
count ("h1", h==1)
count ("h2", h==2)
count ("h3", h==3)
count ("h4", h==4)
count("h5+", h>4)
count("shapem32=",shapem32 or shapem23)
--count("shapem23=",shapem23)
count("shapem34=",shapem34 or shapem43)
--count("shapem43=",shapem43)
count("shapem24=",shapem24 or shapem42)
--count("shapem42=",shapem42)
count("shapem35=",shapem35 or shapem53)
--count("shapem53=",shapem53)
count("shapem45=",shapem45 or shapem54)
--count("shapem54=",shapem54)
count("shapem15=",shapem15 or shapem51)
--count("shapem51=",shapem51)
count("shapem25=",shapem25 or shapem52)
--count("shapem52=",shapem52)
count("shapem33=",shapem33)
count("shapem44=",shapem44)
count("shapem55=",shapem55)
count("shapem66=",shapem66)
count("shapem56=",shapem56 or shapem65)
--count("shapem65=",shapem65)
count("shapem36=",shapem36 or shapem63)
--count("shapem63=",shapem63)
count("shapem26=",shapem26 or shapem62)
--count("shapem62=",shapem62)
count("shapem16=",shapem16 or shapem61)
--count("shapem61=",shapem61)
count("shapem46=",shapem46 or shapem64)
--count("shapem64=",shapem64)
count("shape7plus=", shape7plus)
local nt = tricks(N, "NT")
count("nt =7", nt>6)
end