package main
import "fmt"
func main() {
arr1 := []interface{}{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
arr2 := []interface{}{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
arr3 := []interface{}{1, 2, 3, 4, 5, 6, 7}
fmt.Println(Josephus(arr1, 1))
fmt.Println(Josephus(arr2, 2))
fmt.Println(Josephus(arr3, 3))
}
func Josephus(items []interface{}, k int) []interface{} {
result := make([]interface{}, 0)
index := 0
for len(items) > 0 {
index = (index + k - 1) % len(items) // Находим индекс
result = append(result, items[index]) // Добавляем жертву в результат
items = append(items[:index], items[index+1:]...) // Убираем жертву из списка
}
return result
}