You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
4.5 KiB
206 lines
4.5 KiB
// 包名
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"encoding/json"
|
|
"./path"
|
|
"./runtime"
|
|
"strconv"
|
|
// "time"
|
|
// "./pk10"
|
|
// "./db"
|
|
)
|
|
|
|
func readJSON(file string) []map[string][]interface{} {
|
|
log := fmt.Println
|
|
jsondata, _ := ioutil.ReadFile(file)
|
|
var user []map[string][]interface{}
|
|
err := json.Unmarshal(jsondata, &user)
|
|
if err != nil {
|
|
log(err)
|
|
return nil
|
|
}
|
|
return user
|
|
}
|
|
// 万能类型转数字。只能先转float64,然后转int
|
|
func w2int(array []interface{}) []int{
|
|
var res []int
|
|
for _, val := range array {
|
|
var temp float64= val.(float64)
|
|
res=append(res,int(temp))
|
|
}
|
|
return res
|
|
}
|
|
|
|
// https://studygolang.com/pkgdoc
|
|
func main() {
|
|
log := fmt.Println
|
|
log(str2arr("asdasd"))
|
|
open()
|
|
return
|
|
|
|
var allArray []map[string][]interface{}
|
|
runtime.Time("加载JSON数据",func () {
|
|
// 遍历文件夹
|
|
var parhArray = path.Output(".\\data")
|
|
// 只用一个文价测试
|
|
str := path.Abs("./"+parhArray[10])
|
|
log("正在读取:",str)
|
|
oneData := readJSON(str)
|
|
if oneData == nil {
|
|
log("load failed")
|
|
return
|
|
}
|
|
for _, item := range oneData {
|
|
allArray = append(allArray,item)
|
|
}
|
|
log("长度: ", len(allArray))
|
|
host := 0
|
|
runtime.Time("遍历所有的数据",func () {
|
|
for _, item := range allArray {
|
|
// var mon int
|
|
// 定义存放开奖类型的数组
|
|
var niu_list []int = w2int(item["type"][0:6])
|
|
// 庄家的牛
|
|
var host_niu int = niu_list[host]
|
|
// 庄家为牛牛时大于其他的牛
|
|
if host_niu == 0 {
|
|
host_niu = 11
|
|
}
|
|
// 赢家的字符串
|
|
var win string = ""
|
|
for i := 0; i < len(niu_list); i++ {
|
|
if i!=host {
|
|
if niu_list[i] > host_niu{
|
|
win += strconv.Itoa(i)
|
|
}
|
|
}
|
|
}
|
|
log(win)
|
|
// 因为item["type"][7]刚取出来时万能类型,先转换成[]interface{},在转[]int
|
|
// var alltype = w2int(item["type"][7].([]interface{}))
|
|
// log(alltype)
|
|
break
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
// https://blog.csdn.net/u010412301/article/details/83894740
|
|
func open(host_v int,downmoney_v []int,cs float64, downpei_v []int, winner_v string) {
|
|
var downmoney = []int{0,0,0,0,0,0}
|
|
var host string= strconv.Itoa(0)
|
|
// 定义所有玩家
|
|
var origin []string = []string{"0","1","2","3","4","5"}
|
|
// 删除庄家位置
|
|
delOne(origin,host)
|
|
var winner string = "123"
|
|
var lose string = ""
|
|
for _, val := range origin {
|
|
var index int = -1
|
|
for i := 0; i < len(winner); i++ {
|
|
// 此时winner[i]是byte类型,不能比较,需要转化成字符串
|
|
if (val == string(winner[i])) {
|
|
index = i
|
|
break
|
|
}
|
|
}
|
|
if index==-1 {
|
|
lose += val
|
|
}
|
|
}
|
|
var temp = map[string]string{"w":winner,"l":lose}
|
|
fmt.Println(winner)
|
|
fmt.Println(lose)
|
|
host_str,_ := strconv.Atoi(host)
|
|
fmt.Println(getWin(downmoney,host_str,temp,[]int{1,1,1,1,1,1}))
|
|
}
|
|
|
|
func getWin(down []int,host int,wl map[string]string,pei []int) (int,map[string]string,int,int) {
|
|
var sum = 0
|
|
var hostsum = down[host];
|
|
var bate = [6]int{0, 0, 0, 0, 0, 0}
|
|
for i, val := range down {
|
|
if i!= host {
|
|
sum+=val
|
|
if sum!=0 {
|
|
bate[i] = hostsum / sum;
|
|
}else{
|
|
bate[i] = 0
|
|
}
|
|
}else{
|
|
bate[i] = -1;
|
|
}
|
|
}
|
|
var win = [6]int{0, 0, 0, 0, 0, 0}
|
|
var warr = str2arrInt(wl["w"])
|
|
var cal = 0
|
|
var summoney = 0
|
|
var money = hostsum
|
|
for _, val := range warr {
|
|
win[val] = down[val] * bate[val] * pei[val]
|
|
money += down[val] * bate[val] * pei[val]
|
|
cal += down[val] * bate[val] * pei[val]
|
|
var intdown = down[val] * bate[val]
|
|
if intdown<0 {
|
|
summoney -= intdown
|
|
}else{
|
|
summoney += intdown
|
|
}
|
|
}
|
|
var larr = str2arrInt(wl["l"])
|
|
for _, val := range larr {
|
|
win[val] = -down[val] * bate[val] * 1 * pei[val];
|
|
money -= down[val] * bate[val] * pei[val]
|
|
var intdown = down[val] * bate[val]
|
|
if intdown<0 {
|
|
summoney -= intdown
|
|
}else{
|
|
summoney += intdown
|
|
}
|
|
}
|
|
var m = money + win[0] + win[1] + win[2] + win[3] + win[4] + win[5]
|
|
var v = wl
|
|
return m,v,cal,summoney
|
|
// fmt.Println(warr)
|
|
// fmt.Println(larr)
|
|
// var win = [0, 0, 0, 0, 0, 0]
|
|
|
|
}
|
|
func str2arrInt(arr string) []int {
|
|
var res []int
|
|
for _, val := range arr {
|
|
valint,_ := strconv.Atoi(string(val))
|
|
res = append(res,valint)
|
|
}
|
|
return res
|
|
}
|
|
func str2arr(arr string) []string {
|
|
var res []string
|
|
for _, val := range arr {
|
|
res = append(res,string(val))
|
|
}
|
|
return res
|
|
}
|
|
|
|
func findOne(array []string,value string) int {
|
|
var res int = -1
|
|
for i := 0; i < len(array); i++ {
|
|
if value == array[i] {
|
|
res = i
|
|
}
|
|
}
|
|
return res
|
|
}
|
|
|
|
func delOne(array []string,value string) []string {
|
|
var res []string
|
|
for i := 0; i < len(array); i++ {
|
|
if value != array[i] {
|
|
res = append(res,array[i])
|
|
}
|
|
}
|
|
return res
|
|
}
|