From 4ad875c1ec4666245dd3710c6321b21e529c49fe Mon Sep 17 00:00:00 2001 From: shoopea Date: Wed, 8 Dec 2021 20:15:14 +0800 Subject: [PATCH] expirement value_delta --- bot.go | 91 ++++++++++++++++++++++++++---------------------------- version.go | 8 ++--- 2 files changed, 47 insertions(+), 52 deletions(-) diff --git a/bot.go b/bot.go index 26f5b58..f5ac103 100644 --- a/bot.go +++ b/bot.go @@ -128,6 +128,37 @@ func (b *Bot) BotHandlers() { b.bot.Start() } +func botHelp(m *tb.Message) { + msg := "" + msg = fmt.Sprintf("%s/pause - pause the game\r\n", msg) + msg = fmt.Sprintf("%s/unpause - unpause the game\r\n", msg) + msg = fmt.Sprintf("%s/register - register company\r\n", msg) + msg = fmt.Sprintf("%s/deregister - deregister company\r\n", msg) + msg = fmt.Sprintf("%s/delete - delete company\r\n", msg) + msg = fmt.Sprintf("%s/companies - list companies\r\n", msg) + msg = fmt.Sprintf("%s/clients - list clients\r\n", msg) + msg = fmt.Sprintf("%s/give - give time to player\r\n", msg) + msg = fmt.Sprintf("%s/take - take time from player\r\n", msg) + msg = fmt.Sprintf("%s/transfer - transfer time between players\r\n", msg) + msg = fmt.Sprintf("%s/passwd - change passwd\r\n", msg) + msg = fmt.Sprintf("%s/say - send msg to the game\r\n", msg) + msg = fmt.Sprintf("%s/reset - reset the game\r\n", msg) + msg = fmt.Sprintf("%s/start - start the game\r\n", msg) + msg = fmt.Sprintf("%s/ready - set player as ready\r\n", msg) + msg = fmt.Sprintf("%s/players - list players\r\n", msg) + msg = fmt.Sprintf("%s/offline - set player offline\r\n", msg) + msg = fmt.Sprintf("%s/value - value graph\r\n", msg) + msg = fmt.Sprintf("%s/value_delta - delta value graph\r\n", msg) + msg = fmt.Sprintf("%s/busses - busses graph\r\n", msg) + msg = fmt.Sprintf("%s/trains - trains graph\r\n", msg) + msg = fmt.Sprintf("%s/planes - planes graph\r\n", msg) + msg = fmt.Sprintf("%s/version - version\r\n", msg) + msg = fmt.Sprintf("%s/help - this\r\n", msg) + + bot.SendChat(m.Chat.ID, msg) + return +} + func botPause(m *tb.Message) { for userID, cc := range cfg.Clients { if userID == m.Sender.ID { @@ -685,31 +716,6 @@ func botTake(m *tb.Message) { bot.SendChat(m.Chat.ID, fmt.Sprintf("@%s now has %s left.", uStr, cc.TimeLeft.Round(time.Second))) } -func botHelp(m *tb.Message) { - msg := "" - msg = fmt.Sprintf("%s/pause - pause the game\r\n", msg) - msg = fmt.Sprintf("%s/unpause - unpause the game\r\n", msg) - msg = fmt.Sprintf("%s/register - register company\r\n", msg) - msg = fmt.Sprintf("%s/deregister - deregister company\r\n", msg) - msg = fmt.Sprintf("%s/delete - delete company\r\n", msg) - msg = fmt.Sprintf("%s/companies - list companies\r\n", msg) - msg = fmt.Sprintf("%s/clients - list clients\r\n", msg) - msg = fmt.Sprintf("%s/give - give time to player\r\n", msg) - msg = fmt.Sprintf("%s/take - take time from player\r\n", msg) - msg = fmt.Sprintf("%s/transfer - transfer time between players\r\n", msg) - msg = fmt.Sprintf("%s/passwd - change passwd\r\n", msg) - msg = fmt.Sprintf("%s/say - send msg to the game\r\n", msg) - msg = fmt.Sprintf("%s/reset - reset the game\r\n", msg) - msg = fmt.Sprintf("%s/start - start the game\r\n", msg) - msg = fmt.Sprintf("%s/ready - set player as ready\r\n", msg) - msg = fmt.Sprintf("%s/players - list players\r\n", msg) - msg = fmt.Sprintf("%s/version - version\r\n", msg) - msg = fmt.Sprintf("%s/help - this\r\n", msg) - - bot.SendChat(m.Chat.ID, msg) - return -} - func botSay(m *tb.Message) { r := regexp.MustCompile("^\\/say( )+(?P.+)$") if !r.MatchString(m.Text) { @@ -1016,7 +1022,6 @@ func botGraphValue(m *tb.Message) { func botGraphValueDelta(m *tb.Message) { var ( - minZero int maxVal float64 unitFactor float64 unitName string @@ -1041,36 +1046,26 @@ func botGraphValueDelta(m *tb.Message) { vals[coID] = append(vals[coID], pt) } sort.Slice(vals[coID], func(i, j int) bool { return vals[coID][i].X < vals[coID][j].X }) - if len(vals[coID]) > minZero { - minZero = len(vals[coID]) - } } } - logInfoDebug("botGraphValueDelta : got %d values", minZero) - for coID, v := range vals { - for i := len(v) - 1; i > 0; i-- { - v[i].Y = v[i].Y - v[i-1].Y - if math.Abs(v[i].Y) > maxVal { - maxVal = math.Abs(v[i].Y) - } - if v[i].Y == 0 && i < minZero { - minZero = i - } - } - vals[coID] = v - } - for coID, v := range vals { - if minZero > 1 { - vals[coID] = v[minZero:] + if len(v) <= 3 { + delete(vals, coID) } else { - vals[coID] = v[1:] + v0 := v[0].Y + v1 := v[1].Y + v2 := v[2].Y + for i := 3; i < len(v); i++ { + v0 = v1 + v1 = v2 + v2 = v[i].Y + v[i].Y = (v0 + v1 + v2) / 3 + } + vals[coID] = v[3:] } } - logInfoDebug("botGraphValueDelta : removing leading %d values", minZero) - if maxVal > 1000000000 { unitFactor = 1000000000 unitName = "billion" diff --git a/version.go b/version.go index 06eb382..42816aa 100644 --- a/version.go +++ b/version.go @@ -1,6 +1,6 @@ // Code generated by version.sh (@generated) DO NOT EDIT. package main -var githash = "14f65a4" -var buildstamp = "2021-12-08_11:53:51" -var commits = "239" -var version = "14f65a4-b239 - 2021-12-08_11:53:51" +var githash = "c6a235e" +var buildstamp = "2021-12-08_12:15:03" +var commits = "240" +var version = "c6a235e-b240 - 2021-12-08_12:15:03"