Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "fmt"
- type State [10]int
- func (s State) clone() State {
- return s
- }
- func (s *State) iteration() bool {
- if s[3] > 0 && s[5] > 0 {
- s[6]++
- s[3]--
- s[5]--
- return false
- } else if s[2] > 0 && s[6] > 0 {
- s[0]++
- s[1]++
- s[5]++
- s[2]--
- s[6]--
- return false
- } else if s[1] > 0 && s[6] > 0 {
- s[7]++
- s[1]--
- s[6]--
- return false
- } else if s[0] > 0 && s[7] > 0 {
- s[8]++
- s[0]--
- s[7]--
- return false
- } else if s[1] > 0 && s[4] > 0 {
- s[9]++
- s[1]--
- s[4]--
- return false
- } else if s[9] > 0 {
- s[3]++
- s[4]++
- s[9]--
- return false
- } else if s[8] > 0 {
- s[2]++
- s[7]++
- s[8]--
- return false
- } else if s[7] > 0 {
- s[3]++
- s[4]++
- s[7]--
- return false
- } else if s[6] > 0 {
- s[6]--
- return s[6] == 0 && s[1] == 0 && s[2] == 0 && s[3] == 0 && s[4] == 0 && s[5] == 0
- } else if s[5] > 0 {
- s[4]++
- s[5]--
- return false
- } else if s[4] > 0 {
- s[5]++
- s[4]--
- return false
- } else if s[0] > 0 {
- s[1]++
- s[2]++
- s[0]--
- return false
- } else if s[3] > 0 {
- s[3]--
- return false
- }
- s[2]++
- s[4]++
- return false
- }
- func fun(n int) string {
- if n == 0 {
- return "⚪"
- } else if n == 1 {
- return "⚫"
- }
- panic(n)
- }
- func main() {
- var s State = [10]int{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}
- var i int
- for iter := 1; iter < 10000; iter++ {
- if ok := s.iteration(); ok {
- i++
- }
- fmt.Printf("%4d: %3d, %3d, %3d, %3d %s%s%s%s%s%s\n", iter, s[0], s[1], s[2], s[3], fun(s[4]), fun(s[5]), fun(s[6]), fun(s[7]), fun(s[8]), fun(s[9]))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement