package main import ( . "fmt" "math/rand" "time" ) const nsemi = 4 const ntipi = 13 func stampaCarta(x int) { switch c := x % ntipi; c { case 0: Print(" A") case 10: Print(" J") case 11: Print(" Q") case 12: Print(" K") default: Printf("%2d", c + 1) } switch s := x / ntipi; s { case 0: Print("♥"); case 1: Print("◆") case 2: Print("♣") case 3: Print("♠") } } func stampaMazzo(mazzo []int) { for i, carta := range mazzo { stampaCarta(carta) Print(" ") if (i + 1) % ntipi == 0 { Println() } } } func main() { var mazzo []int for i := 0; i < nsemi * ntipi; i++ { mazzo = append(mazzo, i) } seme := int64(time.Now().Nanosecond()) // Stampiamo il seme per un'eventuale futura sessione di debugging Printf("Seme: 0x%016x\n", seme) rand.Seed(seme) for i := 0; i < nsemi * ntipi; i++ { p := i + rand.Intn(nsemi * ntipi - i) mazzo[i], mazzo[p] = mazzo[p], mazzo[i] } stampaMazzo(mazzo) }