package main import ( . "fmt" . "math/rand" . "sort" ) func main() { perms := [][]int{} for a := 0; a < 5; a++ { for b := 0; b < 5; b++ { if a == b { continue } for c := 0; c < 5; c++ { if a == c || b == c { continue } for d := 0; d < 5; d++ { if a == d || b == d || c == d { continue } for e := 0; e < 5; e++ { if a == e || b == e || c == e || d == e { continue } perms = append(perms, []int{a, b, c, d, e}) } } } } } Shuffle(len(perms), func(i, j int) { perms[i], perms[j] = perms[j], perms[i] }) xxs := [][]int{} for a := 0; a <= 9; a++ { for b := a + 1; b <= 9; b++ { for c := b + 1; c <= 9; c++ { for d := c + 1; d <= 9; d++ { for e := d + 1; e <= 9; e++ { xs := []int{a, b, c, d, e} xxs = append(xxs, xs) } } } } } Shuffle(len(xxs), func(i, j int) { xxs[i], xxs[j] = xxs[j], xxs[i] }) for xxi, xs := range xxs { ccc := make([]int, 60) omits := [][]int{} for pi, p := range perms { ok := true for _, omp := range omits { for i, pp := range p { if omp[i] == pp { ok = false break } } } if !ok { continue } for _, j := range p { Print(xs[j]) } Println() fin := false cnt := 0 mm := make([]int, 60) for i := 0; i < 30; i++ { var hi, bi int Scan(&hi, &bi) if i == 0 && hi == 5 && bi == 0 { fin = true } if pi == 0 { ccc[hi+bi]++ } mm[hi*10+bi]++ if hi != 5 && hi+bi == 5 { cnt++ } } if fin { return } if cnt == 0 { break } if cnt == 1 && mm[5] > 0 { omits = append(omits, p) } } nnn := make([]int, 10) for _, x := range xs { nnn[x]++ } txxs := xxs[xxi+1:] Slice(txxs, func(i, j int) bool { var c1, c2 int for _, x := range txxs[i] { c1 += nnn[x] } for _, x := range txxs[j] { c2 += nnn[x] } return ccc[c1] > ccc[c2] }) } }