mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.0 KiB
75 lines
1.0 KiB
package main |
|
|
|
import ( |
|
"./student" |
|
"github.com/01-edu/public/go/lib" |
|
) |
|
|
|
func game23(a, b int) int { |
|
if a > b { |
|
return -1 |
|
} |
|
if a == b { |
|
return 0 |
|
} |
|
if game23(a*2, b) != -1 { |
|
return 1 + game23(a*2, b) |
|
} |
|
if game23(a*3, b) != -1 { |
|
return 1 + game23(a*3, b) |
|
} |
|
return -1 |
|
} |
|
|
|
func nd(a, b int) int { |
|
if a > b { |
|
return -1 |
|
} |
|
if a == b { |
|
return 0 |
|
} |
|
if nd(a*2, b) != -1 { |
|
return 1 + nd(a*2, b) |
|
} |
|
if nd(a*3, b) != -1 { |
|
return 1 + nd(a*3, b) |
|
} |
|
return -1 |
|
} |
|
|
|
func main() { |
|
type node struct { |
|
init int |
|
fin int |
|
} |
|
table := []node{ |
|
{50, 43}, |
|
{13, 13}, |
|
{10, 9}, |
|
{5, 9}, |
|
} |
|
|
|
for i := 0; i < 20; i++ { |
|
table = append(table, node{ |
|
init: lib.RandIntBetween(1, 1000), |
|
fin: lib.RandIntBetween(1, 1000), |
|
}) |
|
} |
|
|
|
for i := 1; i < 100; i++ { |
|
value := node{ |
|
init: 1, |
|
fin: 1, |
|
} |
|
if nd(1, i) > 0 { |
|
value = node{ |
|
init: 1, |
|
fin: i, |
|
} |
|
} |
|
table = append(table, value) |
|
} |
|
for _, arg := range table { |
|
lib.Challenge("Game23", student.Game23, game23, arg.init, arg.fin) |
|
} |
|
}
|
|
|