编辑代码

func josephusProblem(n: Int, s: Int, m: Int) -> [Int] {
    var prisoners = Array(1...n) // 犯人编号数组
    var currentIndex = s - 1
    var executedPrisoners: [Int] = []

    while prisoners.count > 1 {
        currentIndex = (currentIndex + m - 1) % prisoners.count
        let removedPrisoner = prisoners.remove(at: currentIndex)
        executedPrisoners.append(removedPrisoner)
    }

    return executedPrisoners + prisoners // 加上最后一个幸存者
}

// 获取用户输入
print("请输入犯人总数n:")
guard let n = Int(readLine() ?? "") else {
    fatalError("无效的输入")
}

print("请输入开始计数的位置s:")
guard let s = Int(readLine() ?? "") else {
    fatalError("无效的输入")
}

print("请输入数到的犯人数m:")
guard let m = Int(readLine() ?? "") else {
    fatalError("无效的输入")
}

// 检查n是否小于等于1000
guard n <= 1000 else {
    fatalError("犯人总数n必须小于或等于1000")
}

guard s <= n else {
    fatalError("犯人总数s必须小于或等于n")
}

let result = josephusProblem(n: n, s: s, m: m)
let output = result.map(String.init).joined(separator: " @")
print(output)