From 9516ec4c20dde0e514ea95ef90c0b187b84675bc Mon Sep 17 00:00:00 2001 From: govolokatliai Date: Mon, 30 Dec 2024 07:23:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E6=8E=92=E7=8F=AD?= =?UTF-8?q?=E7=9A=84=E5=88=86=E9=85=8D=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/assignments.go | 43 ++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/handler/assignments.go b/handler/assignments.go index 22853eb..50f82bf 100644 --- a/handler/assignments.go +++ b/handler/assignments.go @@ -72,26 +72,27 @@ func generateTable() (*[7][]string, error) { } } - //分配剩下的所有女生到女生片区 - for c, i := range female { - if i.Arranged != true { - table[c%4] = append(table[c%4], i.Name) + + //为剩下的片区分配负责人 + for _, i := range male { + if i.Access < model.FRESH { + table[fewest(table)] = append(table[fewest(table)], i.Name) i.Arranged = true } } - //为男生分配负责人 - for c, i := range male { - if i.Access < model.FRESH { - table[(c%3)+4] = append(table[(c%3)+4], i.Name) + //分配剩下的所有女生到女生片区 + for _, i := range female { + if i.Arranged != true { + table[fewestF(table)] = append(table[fewestF(table)], i.Name) i.Arranged = true } } //分配剩下的所有男生 - for c, i := range male { + for _, i := range male { if i.Arranged == false { - table[c%7] = append(table[c%7], i.Name) + table[fewest(table)] = append(table[fewest(table)], i.Name) } } fmt.Printf("today:%v\n", today) @@ -117,3 +118,25 @@ func readTableData(m *[]*model.Member) error { } return nil } + +// 找出人数最少的片区 +func fewest(a [7][]string) int { + b := min(len(a[0]), len(a[1]), len(a[2]), len(a[3]), len(a[4]), len(a[5]), len(a[6])) + for i := range len(a) { + if b == len(a[i]) { + return i + } + } + return -1 //error +} + +// 找出人数最少的女生片区 +func fewestF(a [7][]string) int { + b := min(len(a[0]), len(a[1]), len(a[2]), len(a[3])) + for i := range len(a) - 3 { + if b == len(a[i]) { + return i + } + } + return -1 //error +}