Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,32 @@
var josephus = Fn.new { |n, k, m|
if (k <= 0 || m <= 0 || n <= k || n <= m) Fiber.abort("One or more parameters are invalid.")
var killed = []
var survived = List.filled(n, 0)
for (i in 0...n) survived[i] = i
var start = k - 1
while (true) {
var end = survived.count - 1
var i = start
var deleted = 0
while (i <= end) {
killed.add(survived.removeAt(i-deleted))
if (survived.count == m) return [survived, killed]
deleted = deleted + 1
i = i + k
}
start = i - end - 1
}
return [survived, killed]
}
var triples = [ [5, 2, 1], [41, 3, 1], [41, 3, 3] ]
for (triple in triples) {
var n = triple[0]
var k = triple[1]
var m = triple[2]
System.print("Prisoners = %(n), Step = %(m), Survivors = %(m)")
var sk = josephus.call(n, k, m)
System.print("Survived : %(sk[0])")
System.print("Kill order : %(sk[1])")
System.print()
}