go-demo
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

// 包名
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
}