Задача Иосифа Флавия

C-like:
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
}
 
Back
Top