For problem statement at 1000-1999/1700-1799/1760-1769/1769/problemD3.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1760-1769/1769/verifierD3.go ends with case 1 failed: output mismatch
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var k int
if _, err := fmt.Fscan(in, &k); err != nil {
return
}
ranks := []string{"6", "7", "8", "9", "T", "J", "Q", "K", "A"}
suits := []string{"C", "D", "S", "H"}
type Card struct {
r, s string
}
var deck []Card
for _, s := range suits {
for _, r := range ranks {
deck = append(deck, Card{r: r, s: s})
}
}
printLayout := func(a, b []Card) {
for i := 0; i < 18; i++ {
if i > 0 {
fmt.Print(" ")
}
fmt.Printf("%s%s", a[i].r, a[i].s)
}
fmt.Println()
for i := 0; i < 18; i++ {
if i > 0 {
fmt.Print(" ")
}
fmt.Printf("%s%s", b[i].r, b[i].s)
}
fmt.Println()
}
idx := map[string]int{}
for i, c := range deck {
idx[c.r+c.s] = i
}
{
used := make([]bool, 36)
var alice, bob []Card
for _, s := range suits {
i := idx["9"+s]
alice = append(alice, deck[i])
used[i] = true
}
for i := 0; i < 36 && len(alice) < 18; i++ {
if used[i] {
continue
}
alice = append(alice, deck[i])
used[i] = true
}
for i := 0; i < 36; i++ {
if !used[i] {
bob = append(bob, deck[i])
}
}
printLayout(alice, bob)
}
genLayout := func(seed int) {
owner := make([]int, 36)
for si, s := range suits {
card := "9" + s
i := idx[card]
if (seed+si)%2 == 0 {
owner[i] = 0
} else {
owner[i] = 1
}
}
for si, s := range suits {
base := 0
down := []int{2, 1, 0}
up := []int{4, 5, 6, 7, 8}
sideFlip := ((seed + si) % 3)
for di, rp := range down {
card := ranks[rp] + s
i := idx[card]
switch sideFlip {
case 0:
if (di+base)%2 == 0 {
owner[i] = owner[idx["9"+s]]
} else {
owner[i] = 1 - owner[idx["9"+s]]
}
case 1:
if di < 2 {
owner[i] = 1 - owner[idx["9"+s]]
} else {
if (di+base)%2 == 0 {
owner[i] = owner[idx["9"+s]]
} else {
owner[i] = 1 - owner[idx["9"+s]]
}
}
default:
owner[i] = owner[idx["9"+s]]
}
}
for di, rp := range up {
card := ranks[rp] + s
i := idx[card]
switch sideFlip {
case 0:
if di == 0 {
owner[i] = 1 - owner[idx["9"+s]]
} else {
owner[i] = owner[idx["9"+s]]
}
case 1:
if (di+base)%2 == 0 {
owner[i] = 1 - owner[idx["9"+s]]
} else {
owner[i] = owner[idx["9"+s]]
}
default:
owner[i] = 1 - owner[idx["9"+s]]
}
}
}
var alice, bob []Card
for i := 0; i < 36; i++ {
if owner[i] == 0 {
alice = append(alice, deck[i])
} else {
bob = append(bob, deck[i])
}
}
if len(alice) != 18 {
if len(alice) > 18 {
for i := 0; i < 36 && len(alice) > 18; i++ {
c := deck[i]
if c.r == "9" {
continue
}
if owner[i] == 0 {
owner[i] = 1
alice = alice[:0]
bob = bob[:0]
for j := 0; j < 36; j++ {
if owner[j] == 0 {
alice = append(alice, deck[j])
} else {
bob = append(bob, deck[j])
}
}
}
}
} else {
for i := 35; i >= 0 && len(alice) < 18; i-- {
c := deck[i]
if c.r == "9" {
continue
}
if owner[i] == 1 {
owner[i] = 0
alice = alice[:0]
bob = bob[:0]
for j := 0; j < 36; j++ {
if owner[j] == 0 {
alice = append(alice, deck[j])
} else {
bob = append(bob, deck[j])
}
}
}
}
}
}
for len(alice) != 18 {
if len(alice) > 18 {
for i := 0; i < 36 && len(alice) > 18; i++ {
if deck[i].r != "9" && owner[i] == 0 {
owner[i] = 1
alice = alice[:0]
bob = bob[:0]
for j := 0; j < 36; j++ {
if owner[j] == 0 {
alice = append(alice, deck[j])
} else {
bob = append(bob, deck[j])
}
}
}
}
} else {
for i := 35; i >= 0 && len(alice) < 18; i-- {
if deck[i].r != "9" && owner[i] == 1 {
owner[i] = 0
alice = alice[:0]
bob = bob[:0]
for j := 0; j < 36; j++ {
if owner[j] == 0 {
alice = append(alice, deck[j])
} else {
bob = append(bob, deck[j])
}
}
}
}
}
}
printLayout(alice, bob)
}
for seed := 1; seed < k; seed++ {
genLayout(seed)
}
}