You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
1.3 KiB
Go

package cses
import "fmt"
func WeirdAlgo(n int) string {
seq := []int{}
for n != 1 {
seq = append(seq, n)
if n%2 == 0 {
n /= 2
} else {
n = n*3 + 1
}
}
seq = append(seq, 1)
return fmt.Sprint(seq)
}
func MissingNumber(n int, numbers []int) int {
if n != len(numbers)+1 {
return -1
}
present := make([]bool, n)
for _, i := range numbers {
if i > n {
return -2
}
present[i-1] = true
}
for i, b := range present {
if !b {
return i + 1
}
}
return -3
}
func Repetitions(dna string) int {
curC := ' '
maxL := 0
curL := 0
for _, c := range dna {
if c == curC {
curL += 1
} else {
curC = c
curL = 1
}
if curL > maxL {
maxL = curL
}
}
return maxL
}
func IncreasingArray(size int, arr []int) int {
moves := 0
for i := 0; i < len(arr)-1; i++ {
if arr[i] > arr[i+1] {
moves += arr[i] - arr[i+1]
}
}
return moves
}
func BeautifulPermutations(n int) string {
result := []int{}
if n <= 3 {
return "NO SOLUTION"
}
if n == 4 {
result = []int{3, 1, 4, 2}
} else {
curr := n
switched := false
for i := 1; i <= n; i++ {
result = append(result, curr)
if curr < 3 && !switched {
curr = n - 1
switched = true
} else {
curr = curr - 2
}
}
}
return fmt.Sprint(result)
}