Skip to content

Instantly share code, notes, and snippets.

@subeshb1
Created August 18, 2019 05:00
Show Gist options
  • Save subeshb1/803c9ff00032c3fffd49a04d1381fc4c to your computer and use it in GitHub Desktop.
Save subeshb1/803c9ff00032c3fffd49a04d1381fc4c to your computer and use it in GitHub Desktop.
package main
// CH004 :: Happy Number
import (
"fmt"
"math"
)
func squaredDigitSum(number int) int {
sum := 0
for number != 0 {
sum += int(math.Pow(float64(number%10), 2))
number = number / 10
}
return sum
}
func isHappyNumber(number int) bool {
memo := make(map[int]int)
memo[number] = 1
for nextNumber := squaredDigitSum(number); nextNumber != 1; nextNumber = squaredDigitSum(nextNumber) {
if _, present := memo[nextNumber]; present {
return false
}
memo[nextNumber] = 1
}
return true
}
func main() {
fmt.Println(isHappyNumber(7)) // true
fmt.Println(isHappyNumber(10)) // true
fmt.Println(isHappyNumber(2)) // false
fmt.Println(isHappyNumber(11)) // false
fmt.Println(isHappyNumber(13)) // true
fmt.Println(isHappyNumber(19)) // true
fmt.Println(isHappyNumber(9)) // false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment