package main import ( "fmt" "log" ) func checkGuess(guess [4]int, ans [4]int) (int, int) { cntX, xntY := 0, 0 for i := 0; i < 4; i++ { if guess[i] == ans[i] { cntX++ } for j := 0; j < 4; j++ { if i != j && guess[i] == ans[j] { xntY++ } } } return cntX, xntY } func main() { answers := [][4]int{} for a := 0; a < 10; a++ { for b := 0; b < 10; b++ { for c := 0; c < 10; c++ { for d := 0; d < 10; d++ { if a != b && a != c && a != d && b != c && b != d && c != d { answers = append(answers, [4]int{a, b, c, d}) } } } } } check := make([]bool, len(answers)) var x, y int for i := 0; i < len(answers); i++ { if check[i] { continue } // Guess fmt.Printf("%d %d %d %d\n", answers[i][0], answers[i][1], answers[i][2], answers[i][3]) fmt.Scan(&x, &y) if x == 4 { log.Println("Correct guess!") break } for j := 0; j < len(answers); j++ { if check[j] { continue } cntX, cntY := checkGuess(answers[i], answers[j]) if cntX != x || cntY != y { check[j] = true } } } }