Files
codekata-golang/09_special_dpythagorean_triplet/main.go
2020-10-22 14:04:57 +08:00

67 lines
968 B
Go

package main
import (
"fmt"
)
func main() {
got := SplitIntegerIntoThree(1000)
product := 0
for _, v := range got {
if IsPythagoreanTriplet(v) {
fmt.Println("Pythagorean triplet ", v)
product = GetProduct(v)
break
}
}
fmt.Println("product:", product)
}
func SplitIntegerIntoThree(src int) [][]int {
var ret [][]int
x := 1
for {
left1 := src - x
if left1 < x {
break
}
y := x + 1
for {
var r []int
r = append(r, x)
left2 := left1 - y
if left2 < y+1 {
break
}
r = append(r, y)
r = append(r, left2)
ret = append(ret, r)
y++
}
x++
}
return ret
}
func IsPythagoreanTriplet(ns []int) bool {
if len(ns) != 3 {
return false
}
var squares []int
for _, v := range ns {
squares = append(squares, v*v)
}
if squares[0]+squares[1] == squares[2] {
return true
}
return false
}
func GetProduct(ns []int) int {
product := 1
for _, v := range ns {
product = product * v
}
return product
}