鱼C论坛

 找回密码
 立即注册
查看: 2957|回复: 1

[技术交流] 关于斗地主算法讨论(一)

[复制链接]
发表于 2017-12-14 17:38:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先 我们 需要 判断 手中拿到的牌型, 比如你有多少个9,多少个10 这时候 我们就需要对 手中的牌进行聚合
假设 A, B ,C ,D 分别代表四个花色,Q66代表 小王,K99 代表大王
你现在拿到的牌型如下 "B1", "C4", "A1", "B7", "C8", "C7", "C10", "K99", "B13", "D13", "A2", "B6", "D8", "A3", "D12", "D10"

go语言逻辑处理如下:

  1. package main

  2. import (
  3.         "fmt"
  4.         "strconv"
  5.         "strings"
  6. )

  7. func Rm_duplicateString(list []string) []string {
  8.         var x []string = []string{}
  9.         for _, i := range list {
  10.                 if len(x) == 0 {
  11.                         x = append(x, i)
  12.                 } else {
  13.                         for k, v := range x {
  14.                                 if i == v {
  15.                                         break
  16.                                 }
  17.                                 if k == len(x)-1 {
  18.                                         x = append(x, i)
  19.                                 }
  20.                         }
  21.                 }
  22.         }
  23.         return x
  24. }

  25. func Rm_duplicateInt(list []int) []int {
  26.         var x []int = []int{}
  27.         for _, i := range list {
  28.                 if len(x) == 0 {
  29.                         x = append(x, i)
  30.                 } else {
  31.                         for k, v := range x {
  32.                                 if i == v {
  33.                                         break
  34.                                 }
  35.                                 if k == len(x)-1 {
  36.                                         x = append(x, i)
  37.                                 }
  38.                         }
  39.                 }
  40.         }
  41.         return x
  42. }

  43. func aggregationlist(e []string) (aggregation []map[int]int) {
  44.         var cardstring []string = []string{}
  45.         var cardintsort []int = []int{}
  46.         var cardint []int = []int{}
  47.         for _, v := range e {
  48.                 s := strings.Split(v, "")
  49.                 if len(s[1:]) == 1 {
  50.                         cardstring = append(cardstring, s[1])
  51.                 } else if len(s[1:]) > 1 {
  52.                         cardstring = append(cardstring, strings.Join(s[1:], ""))
  53.                 }
  54.         }
  55.         for _, k := range cardstring {
  56.                 l, _ := strconv.Atoi(k)
  57.                 cardint = append(cardint, l)
  58.         }
  59.         cardintsort = Rm_duplicateInt(cardint)
  60.         for _, o := range cardintsort {
  61.                 count := 0
  62.                 for _, q := range cardint {
  63.                         if q == o {
  64.                                 count = count + 1
  65.                         }
  66.                 }
  67.                 //k := []int{o, count}
  68.                 k := make(map[int]int)
  69.                 k[o] = count
  70.                 aggregation = append(aggregation, k)
  71.         }
  72.         return aggregation
  73. }

  74. func main() {
  75.         a := []string{"B1", "C4", "A1", "B7", "C8", "C7", "C10", "K99", "B13", "D13", "A2", "B6", "D8", "A3", "D12", "D10"}

  76.         fmt.Println(aggregationlist(a))

  77. }
复制代码


*************************************************************************************************

GoSublime r17.11.14-1 9o: type `help` for help and command documentation

[ `go run 10.go` | done: 8.832s ]
        [map[1:2] map[4:1] map[7:2] map[8:2] map[10:2] map[99:1] map[13:2] map[2:1] map[6:1] map[3:1] map[12:1]]
[ F:/mygo/ ] #

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-14 21:21:46 | 显示全部楼层
斗地主是不是还需要积分板?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 02:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表