package main
import (
"fmt"
"math"
"strconv"
)
func main() {
all := 1
for all < 21 {
fmt.Println(keepdo(0,0,all))
all++
}
}
func keepdo(i int,sum int, ma int) (bool, int, string){
if i>= ma {
return square_check(sum), sum, ""
}
try := 1
for try < 10 {
sumc := sum +try*try
check, s,ss := keepdo(i+1,sumc, ma)
if check {
return check, s, strconv.Itoa(try) + ss
}
try++
}
return false, sum, ""
}
func square_check(a int) bool {
var int_root int = int(math.Sqrt(float64(a)))
return (int_root * int_root) == a
}
Это очень наивное решение. Должно сработать. Пожалуйста, дайте мне знать, если какие-либо улучшения
https://play.golang.org/p/drVPaE0R71I