Golang Dump

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
}
Next:
Prime Riddle
Previous:
Le Programmer Boyfriend
Tags:
Geeking