Compare commits

...

2 Commits

Author SHA1 Message Date
sk 7198f8c99f 十三张花色比牌添加单元测试 2024-12-10 10:46:19 +08:00
sk ee94c94fb7 十三张比牌包含花色 2024-12-10 10:45:53 +08:00
2 changed files with 161 additions and 136 deletions

View File

@ -245,36 +245,35 @@ func (l *Logic) SortMidAndEnd(cards *Group) *Group {
// 不可能 // 不可能
} else if n == 0 { // 逻辑点数相同 } else if n == 0 { // 逻辑点数相同
// 比花色,比三条就行了 // 比花色,比三条就行了
//n, index1, index2 := IndexCompareColorByLogic(c1, c2) n, index1, index2 := IndexCompareColorByLogic(c1, c2)
n = 0
if n == 1 { if n == 1 {
// 花色交换,结束 // 花色交换,结束
//if index1 >= 0 && index2 >= 0 { if index1 >= 0 && index2 >= 0 {
// for k, v := range cards.Head { for k, v := range cards.Head {
// if v == r1[index1] { if v == r1[index1] {
// cards.Head[k] = -1 cards.Head[k] = -1
// break break
// } }
// } }
// for k, v := range cards.Mid { for k, v := range cards.Mid {
// if v == r2[index2] { if v == r2[index2] {
// cards.Mid[k] = -1 cards.Mid[k] = -1
// break break
// } }
// } }
// for k, v := range cards.Head { for k, v := range cards.Head {
// if v == -1 && r2[index2] >= 0 { if v == -1 && r2[index2] >= 0 {
// cards.Head[k] = r2[index2] cards.Head[k] = r2[index2]
// break break
// } }
// } }
// for k, v := range cards.Mid { for k, v := range cards.Mid {
// if v == -1 && r1[index1] >= 0 { if v == -1 && r1[index1] >= 0 {
// cards.Mid[k] = r1[index1] cards.Mid[k] = r1[index1]
// break break
// } }
// } }
//} }
} else if n == 0 { } else if n == 0 {
// 比癞子数 // 比癞子数
if l.LaiZiCount(r1) < l.LaiZiCount(r2) { if l.LaiZiCount(r1) < l.LaiZiCount(r2) {
@ -381,13 +380,12 @@ func (l *Logic) SortMidAndEnd(cards *Group) *Group {
} }
} else if n == 0 { // 点数相同 } else if n == 0 { // 点数相同
// 比花色 // 比花色
//n, index1, index2 := IndexCompareColorByLogic(nHead[:], nMid[:]) n, index1, index2 := IndexCompareColorByLogic(nHead[:], nMid[:])
n = 0
if n == 1 { if n == 1 {
// 交换花色,结束 // 交换花色,结束
//if index1 >= 0 && index2 >= 0 { if index1 >= 0 && index2 >= 0 {
// cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1] cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1]
//} }
} else if n == 0 { } else if n == 0 {
// 比癞子多少 // 比癞子多少
if l.LaiZiCount(r1) < l.LaiZiCount(r2) { if l.LaiZiCount(r1) < l.LaiZiCount(r2) {
@ -426,13 +424,13 @@ func (l *Logic) SortMidAndEnd(cards *Group) *Group {
} }
} else if n == 0 { } else if n == 0 {
// 点数相同比花色 // 点数相同比花色
//n, index1, index2 := IndexCompareColorByLogic(cards.Head[:], cards.Mid[:]) n, index1, index2 := IndexCompareColorByLogic(cards.Head[:], cards.Mid[:])
//if n == 1 { if n == 1 {
// // 交换最大花色的牌 // 交换最大花色的牌
// if index1 >= 0 && index2 >= 0 { if index1 >= 0 && index2 >= 0 {
// cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1] cards.Head[index1], cards.Mid[index2] = cards.Mid[index2], cards.Head[index1]
// } }
//} }
} }
} }
} }
@ -834,10 +832,10 @@ func (l *Logic) CompareHead(c, cs [3]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
// 比癞子数 // 比癞子数
z1, z2 := l.LaiZiCount(c[:]), l.LaiZiCount(cs[:]) z1, z2 := l.LaiZiCount(c[:]), l.LaiZiCount(cs[:])
if z1 < z2 { if z1 < z2 {
@ -869,10 +867,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
case PokersTypeStraightFlush: case PokersTypeStraightFlush:
_, c1 := FindMaxSameColorFlush(c[:], l.LaiZi) _, c1 := FindMaxSameColorFlush(c[:], l.LaiZi)
@ -888,20 +886,20 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
} }
if ch1 && ch2 { if ch1 && ch2 {
// 比花色 // 比花色
//n := CompareColorByLogic(c1, c2) n := CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
} else if !ch1 && !ch2 { } else if !ch1 && !ch2 {
n := CompareLogic(c1, c2) n := CompareLogic(c1, c2)
if n != 0 { if n != 0 {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
} else { } else {
if ch1 { if ch1 {
return -1 return -1
@ -928,10 +926,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
case PokersTypeFullHouse: case PokersTypeFullHouse:
_, c1 := FindMaxGourdCards(c[:], l.LaiZi) _, c1 := FindMaxGourdCards(c[:], l.LaiZi)
@ -946,10 +944,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
case PokersTypeFlush: case PokersTypeFlush:
_, c1 := FindMaxSameColors(c[:], l.LaiZi) _, c1 := FindMaxSameColors(c[:], l.LaiZi)
@ -960,10 +958,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
case PokersTypeStraight: case PokersTypeStraight:
_, c1 := FindMaxFlush(c[:], l.LaiZi) _, c1 := FindMaxFlush(c[:], l.LaiZi)
@ -979,20 +977,20 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
} }
if ch1 && ch2 { if ch1 && ch2 {
// 比花色 // 比花色
//n := CompareColorByLogic(c1, c2) n := CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
} else if !ch1 && !ch2 { } else if !ch1 && !ch2 {
n := CompareLogic(c1, c2) n := CompareLogic(c1, c2)
if n != 0 { if n != 0 {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
} else { } else {
if ch1 { if ch1 {
return -1 return -1
@ -1019,10 +1017,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
case PokersTypeTwoPairs: case PokersTypeTwoPairs:
r1, c1 := FindMaxPairs(c[:], l.LaiZi) r1, c1 := FindMaxPairs(c[:], l.LaiZi)
@ -1053,10 +1051,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
case PokersTypePair: case PokersTypePair:
r1, c1 := FindMaxPairs(c[:], l.LaiZi) r1, c1 := FindMaxPairs(c[:], l.LaiZi)
@ -1077,10 +1075,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, c2) n = CompareColorByLogic(c1, c2)
//if n != 0 { if n != 0 {
// return n return n
//} }
case PokersTypeOne: case PokersTypeOne:
// 乌龙不会有癞子 // 乌龙不会有癞子
@ -1090,10 +1088,10 @@ func (l *Logic) CompareFive(c, cs [5]int) int {
return n return n
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c[:], cs[:]) n = CompareColorByLogic(c[:], cs[:])
//if n != 0 { if n != 0 {
// return n return n
//} }
return 0 return 0
} }
@ -1136,10 +1134,10 @@ func (l *Logic) IsDP(head [3]int, mid, end [5]int) bool {
return n == 1 return n == 1
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, changeMid) n = CompareColorByLogic(c1, changeMid)
//if n != 0 { if n != 0 {
// return n == 1 return n == 1
//} }
// 比癞子数 // 比癞子数
z1, z2 := l.LaiZiCount(r1), l.LaiZiCount(r2) z1, z2 := l.LaiZiCount(r1), l.LaiZiCount(r2)
if z1 < z2 { if z1 < z2 {
@ -1164,10 +1162,10 @@ func (l *Logic) IsDP(head [3]int, mid, end [5]int) bool {
return n == 1 return n == 1
} }
// 比花色 // 比花色
//n = CompareColorByLogic(c1, changeMid) n = CompareColorByLogic(c1, changeMid)
//if n != 0 { if n != 0 {
// return n == 1 return n == 1
//} }
// 比癞子数 // 比癞子数
z1, z2 := l.LaiZiCount(r1), l.LaiZiCount(r2) z1, z2 := l.LaiZiCount(r1), l.LaiZiCount(r2)
if z1 < z2 { if z1 < z2 {
@ -1184,10 +1182,10 @@ func (l *Logic) IsDP(head [3]int, mid, end [5]int) bool {
return n == 1 return n == 1
} }
// 比花色 // 比花色
//n = CompareColorByLogic(head[:], mid[:]) n = CompareColorByLogic(head[:], mid[:])
//if n != 0 { if n != 0 {
// return n == 1 return n == 1
//} }
} }
} }

View File

@ -165,29 +165,6 @@ func TestLogic_CompareHead(t *testing.T) {
l.LaiZi = []int{52, 53} l.LaiZi = []int{52, 53}
data := [][]int{ data := [][]int{
// 比花色的 // 比花色的
//{1, 27, 49, 50, 43, 42, 1},
//{47, 20, 23, 29, 36, 42, -1},
//{0, 2, 18, 31, 21, 29, -1},
//{45, 7, 18, 13, 15, 29, 1},
//{14, 4, 46, 9, 1, 11, -1},
//{7, 3, 24, 43, 50, 44, 1},
//{5, 4, 31, 15, 33, 14, 1},
//{21, 21, 32, 31, 38, 28, 1},
//{47, 38, 49, 30, 34, 23, 1},
//{14, 10, 16, 29, 30, 35, 1},
////
//{0, 52, 8, 7, 8, 9, 1},
//{0, 52, 52, 7, 8, 9, 1},
//{0, 52, 52, 7, 51, 53, 1},
//{0, 52, 51, 7, 51, 53, -1},
//{8, 52, 51, 7, 51, 53, 1},
//{7, 52, 51, 7, 51, 53, 0},
//{7, 9, 22, 22, 7, 53, -1},
//{7, 48, 22, 22, 7, 53, 1},
//{7, 48, 22, 22, 6, 53, 1},
//{7, 48, 22, 22, 20, 53, -1},
// 不比花色
{1, 27, 49, 50, 43, 42, 1}, {1, 27, 49, 50, 43, 42, 1},
{47, 20, 23, 29, 36, 42, -1}, {47, 20, 23, 29, 36, 42, -1},
{0, 2, 18, 31, 21, 29, -1}, {0, 2, 18, 31, 21, 29, -1},
@ -205,10 +182,33 @@ func TestLogic_CompareHead(t *testing.T) {
{0, 52, 51, 7, 51, 53, -1}, {0, 52, 51, 7, 51, 53, -1},
{8, 52, 51, 7, 51, 53, 1}, {8, 52, 51, 7, 51, 53, 1},
{7, 52, 51, 7, 51, 53, 0}, {7, 52, 51, 7, 51, 53, 0},
{7, 9, 22, 22, 7, 53, 1}, {7, 9, 22, 22, 7, 53, -1},
{7, 48, 22, 22, 7, 53, 1}, {7, 48, 22, 22, 7, 53, 1},
{7, 48, 22, 22, 6, 53, 1}, {7, 48, 22, 22, 6, 53, 1},
{7, 48, 22, 22, 20, 53, 1}, {7, 48, 22, 22, 20, 53, -1},
// 不比花色
//{1, 27, 49, 50, 43, 42, 1},
//{47, 20, 23, 29, 36, 42, -1},
//{0, 2, 18, 31, 21, 29, -1},
//{45, 7, 18, 13, 15, 29, 1},
//{14, 4, 46, 9, 1, 11, -1},
//{7, 3, 24, 43, 50, 44, 1},
//{5, 4, 31, 15, 33, 14, 1},
//{21, 21, 32, 31, 38, 28, 1},
//{47, 38, 49, 30, 34, 23, 1},
//{14, 10, 16, 29, 30, 35, 1},
////
//{0, 52, 8, 7, 8, 9, 1},
//{0, 52, 52, 7, 8, 9, 1},
//{0, 52, 52, 7, 51, 53, 1},
//{0, 52, 51, 7, 51, 53, -1},
//{8, 52, 51, 7, 51, 53, 1},
//{7, 52, 51, 7, 51, 53, 0},
//{7, 9, 22, 22, 7, 53, 1},
//{7, 48, 22, 22, 7, 53, 1},
//{7, 48, 22, 22, 6, 53, 1},
//{7, 48, 22, 22, 20, 53, 1},
} }
for _, v := range data { for _, v := range data {
@ -233,6 +233,33 @@ func TestLogic_CompareFive(t *testing.T) {
l := new(Logic) l := new(Logic)
l.LaiZi = []int{52, 53} l.LaiZi = []int{52, 53}
data := [][]int{ data := [][]int{
// 不比花色
//{5, 23, 10, 6, 1, 45, 41, 20, 1, 13, 1},
//{29, 31, 26, 1, 39, 31, 44, 17, 9, 34, -1},
//{24, 26, 9, 10, 0, 16, 30, 7, 37, 3, -1},
//{31, 30, 11, 33, 7, 18, 1, 36, 9, 3, 1},
//// 牌型不同
//{2, 15, 28, 0, 6, 12, 0, 1, 2, 3, -1},
//// 点数不同
//{2, 15, 28, 0, 6, 2, 15, 28, 0, 6, 0},
//{2, 15, 28, 0, 6, 2, 15, 28, 0, 7, -1},
//{0, 13, 4, 17, 6, 0, 13, 4, 17, 5, 1},
//{0, 13, 5, 18, 6, 0, 13, 4, 17, 6, 1},
//{1, 14, 4, 17, 6, 0, 13, 4, 17, 5, 1},
//// 花色不同
//{2, 15, 28, 0, 6, 2, 15, 28, 0, 19, 0},
//{41, 15, 28, 0, 6, 2, 15, 28, 0, 6, 0},
//{2, 15, 28, 0, 6, 2, 15, 28, 13, 6, 0},
//{3, 4, 5, 6, 52, 3, 52, 5, 6, 53, 1},
//{3, 17, 5, 6, 52, 3, 52, 5, 6, 53, -1},
//{3, 4, 5, 6, 7, 16, 52, 18, 19, 53, 1},
//{3, 52, 5, 6, 20, 3, 17, 18, 19, 53, 0},
//{3, 52, 5, 6, 46, 3, 17, 18, 19, 53, 0},
//// 癞子数不同
//{52, 52, 7, 20, 12, 52, 7, 20, 33, 25, -1},
//{52, 33, 7, 20, 12, 52, 7, 20, 33, 25, 0},
// 比花色
{5, 23, 10, 6, 1, 45, 41, 20, 1, 13, 1}, {5, 23, 10, 6, 1, 45, 41, 20, 1, 13, 1},
{29, 31, 26, 1, 39, 31, 44, 17, 9, 34, -1}, {29, 31, 26, 1, 39, 31, 44, 17, 9, 34, -1},
{24, 26, 9, 10, 0, 16, 30, 7, 37, 3, -1}, {24, 26, 9, 10, 0, 16, 30, 7, 37, 3, -1},
@ -246,17 +273,17 @@ func TestLogic_CompareFive(t *testing.T) {
{0, 13, 5, 18, 6, 0, 13, 4, 17, 6, 1}, {0, 13, 5, 18, 6, 0, 13, 4, 17, 6, 1},
{1, 14, 4, 17, 6, 0, 13, 4, 17, 5, 1}, {1, 14, 4, 17, 6, 0, 13, 4, 17, 5, 1},
// 花色不同 // 花色不同
{2, 15, 28, 0, 6, 2, 15, 28, 0, 19, 0}, {2, 15, 28, 0, 6, 2, 15, 28, 0, 19, -1},
{41, 15, 28, 0, 6, 2, 15, 28, 0, 6, 0}, {41, 15, 28, 0, 6, 2, 15, 28, 0, 6, 1},
{2, 15, 28, 0, 6, 2, 15, 28, 13, 6, 0}, {2, 15, 28, 0, 6, 2, 15, 28, 13, 6, -1},
{3, 4, 5, 6, 52, 3, 52, 5, 6, 53, 1}, {3, 4, 5, 6, 52, 3, 52, 5, 6, 53, 1},
{3, 17, 5, 6, 52, 3, 52, 5, 6, 53, -1}, {3, 17, 5, 6, 52, 3, 52, 5, 6, 53, -1},
{3, 4, 5, 6, 7, 16, 52, 18, 19, 53, 1}, {3, 4, 5, 6, 7, 16, 52, 18, 19, 53, -1},
{3, 52, 5, 6, 20, 3, 17, 18, 19, 53, 0}, {3, 52, 5, 6, 20, 3, 17, 18, 19, 53, -1},
{3, 52, 5, 6, 46, 3, 17, 18, 19, 53, 0}, {3, 52, 5, 6, 46, 3, 17, 18, 19, 53, -1},
// 癞子数不同 // 癞子数不同
{52, 52, 7, 20, 12, 52, 7, 20, 33, 25, -1}, {52, 52, 7, 20, 12, 52, 7, 20, 33, 25, -1},
{52, 33, 7, 20, 12, 52, 7, 20, 33, 25, 0}, {52, 33, 7, 20, 12, 52, 7, 20, 33, 25, -1},
} }
for _, v := range data { for _, v := range data {