Added more methods to the ints package.
- Added some statistical (related to summing and countings digits) and math methods (related to powers and square roots).
This commit is contained in:
parent
f6bf5ba60d
commit
73c6048f09
44
ints/math.go
44
ints/math.go
@ -1,5 +1,7 @@
|
|||||||
package ints
|
package ints
|
||||||
|
|
||||||
|
import "math"
|
||||||
|
|
||||||
// Abs returns the absolute value of i.
|
// Abs returns the absolute value of i.
|
||||||
func Abs(i int) int {
|
func Abs(i int) int {
|
||||||
if 0 > i {
|
if 0 > i {
|
||||||
@ -69,3 +71,45 @@ func SubAbs(a, b int) int {
|
|||||||
}
|
}
|
||||||
return b - a
|
return b - a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pow returns the power of base b to the exponent e.
|
||||||
|
func Pow(b, e int) int {
|
||||||
|
if 0 == e {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if 1 == e {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
p := b
|
||||||
|
for e > 1 {
|
||||||
|
p *= b
|
||||||
|
e--
|
||||||
|
}
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pow64 returns the power of base b to the exponent e.
|
||||||
|
func Pow64(b, e int64) int64 {
|
||||||
|
if 0 == e {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if 1 == e {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
p := b
|
||||||
|
for e > 1 {
|
||||||
|
p *= b
|
||||||
|
e--
|
||||||
|
}
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sqrt returns square root of n.
|
||||||
|
func Sqrt(n int) int {
|
||||||
|
return int(math.Sqrt(float64(n)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sqrt64 returns square root of n.
|
||||||
|
func Sqrt64(n int64) int64 {
|
||||||
|
return int64(math.Sqrt(float64(n)))
|
||||||
|
}
|
||||||
|
@ -1,5 +1,33 @@
|
|||||||
package ints
|
package ints
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
// Digit returns the n'th digit of i
|
||||||
|
func Digit(n int, i uint) int {
|
||||||
|
return int(Digit64(int64(n), i))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Digit64 returns the n'th digit of i
|
||||||
|
func Digit64(n int64, i uint) int64 {
|
||||||
|
for i >= 9 {
|
||||||
|
n /= 1000000000
|
||||||
|
i -= 9
|
||||||
|
}
|
||||||
|
for i >= 6 {
|
||||||
|
n /= 1000000
|
||||||
|
i -= 6
|
||||||
|
}
|
||||||
|
for i >= 3 {
|
||||||
|
n /= 1000
|
||||||
|
i -= 3
|
||||||
|
}
|
||||||
|
for i > 0 {
|
||||||
|
n /= 10
|
||||||
|
i--
|
||||||
|
}
|
||||||
|
return n % 10
|
||||||
|
}
|
||||||
|
|
||||||
// Faculty returns the faculty of i.
|
// Faculty returns the faculty of i.
|
||||||
func Faculty(i int) int {
|
func Faculty(i int) int {
|
||||||
if i < 2 {
|
if i < 2 {
|
||||||
@ -16,6 +44,24 @@ func Faculty64(i int64) int64 {
|
|||||||
return i * Faculty64(i-1)
|
return i * Faculty64(i-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsPalindromic returns if the integer n is palindromic (reads the same backwards).
|
||||||
|
func IsPalindromic(n int) bool {
|
||||||
|
if n < 10 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if n%10 == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
s := strconv.Itoa(n)
|
||||||
|
max := (len(s) + 1) / 2
|
||||||
|
for i := 0; i < max; i++ {
|
||||||
|
if s[i] != s[len(s)-i-1] {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Permutations returns all possible permutations of the the set integers.
|
// Permutations returns all possible permutations of the the set integers.
|
||||||
func Permutations(set []int) [][]int {
|
func Permutations(set []int) [][]int {
|
||||||
var n = len(set)
|
var n = len(set)
|
||||||
@ -45,3 +91,23 @@ func Permutations(set []int) [][]int {
|
|||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SumDigits returns the sum of the digits of n.
|
||||||
|
func SumDigits(n int) int {
|
||||||
|
var sum int
|
||||||
|
for n > 0 {
|
||||||
|
sum += n % 10
|
||||||
|
n /= 10
|
||||||
|
}
|
||||||
|
return int(sum)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SumDigits64 returns the sum of the digits of n.
|
||||||
|
func SumDigits64(n int64) int {
|
||||||
|
var sum int64
|
||||||
|
for n > 0 {
|
||||||
|
sum += n % 10
|
||||||
|
n /= 10
|
||||||
|
}
|
||||||
|
return int(sum)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user