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("无效的输入")
}
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)