Random Golang dump.
Prime factors:
func factorise(x int) []int {
var factors []int
for i:=2;x>1; {
if(x%i !=0){i++; continue}
factors = append(factors,i)
x/=i
}
return factors
}
Lowest Common Multiple and Highest Common Factor by the Euclidean Algorithm.
func hcf(x int, y int) int{
if(y==0){return x}
return hcf(y, x%y)
}
func lcm(x int, y int) int{
return x*y / hcf(x,y)
}
(Iterated) Fast Growing Hierarchy for finite levels:
func fgh(level int, x int) int{
if level == 0 {return x + 1}
return ifgh(level-1, x, x)
}
func ifgh(level int, x int, its int) int{
if its == 1 {return fgh(level, x)}
return ifgh(level, fgh(level, x), its-1)
}
Recamán’s sequence:
func recaman(max int) []int{
steps := []int{0}
for i:=1;i<max;i++{steps=append(steps,recamanstep(i,steps))}
return steps
}
func recamanstep(jump int, steps []int) int{
x:=steps[len(steps)-1]
if(x-jump<0){return x+jump}
for _,y := range steps {if(y==x-jump){return x+jump}}
return x-jump;
}
Ackermann-Péter function:
func ackermann(x int, y int) int{
if(x==0){return y+1}
if(y==0){return ackermann(x-1,1)}
return ackermann(x-1,ackermann(x,y-1))
}
Hailstone sequence down until 1:
func collatzSteps(x int) []int{
var steps = []int{x}
for x!=1{
if(x%2==0){x=x/2}else{x=3*x+1}
steps=append(steps,x)
}
return steps
}
Fibonacci sequence:
func fibonacci(x int) int{
if(x==0){return 1}
if(x==1){return 1}
return fibonacci(x-1)+fibonacci(x-2)
}
Factorial:
func factorial(x int) int{
if(x==0){return 1}
return x*factorial(x-1)
}
Apply map to each element of slice:
func mapSlice[X any, Y any](x []X, f func(X) Y) []Y{
var y []Y
for i:=0;i<len(x);i++{
y=append(y,f(x[i]))
}
return y
}
Sum and product:
func sum(x []int) int{
sum:=0
for i:=0;i<len(x);i++{sum+=x[i]}
return sum
}
func product(x []int) int{
sum:=0
for i:=0;i<len(x);i++{sum+=x[i]}
return sum
}