42 lines
945 B
Plaintext
42 lines
945 B
Plaintext
function main($n=0,$k=0,$s=0) {
|
|
#n - number of prisoners
|
|
#k - kill every k'th prisoner
|
|
#s - number of survivors
|
|
|
|
write-host "`nn=$n k=$k s=$s" #show arguments
|
|
|
|
#Error Checking (Optional)
|
|
try {
|
|
if ([int]$n -lt 0){write-host "[n`<0] " -nonewline;$errors++}
|
|
if ([int]$k -lt 0){write-host "[k`<0] " -nonewline;$errors++}
|
|
if ([int]$s -lt 0){write-host "[s`<0] " -nonewline;$errors++}
|
|
if ([int]$s -gt [int]$n){write-host "[s`>n] " -nonewline;$errors++}
|
|
if ($errors -gt 0) {"";return}
|
|
} catch {"Oops! I found a string input.";return}
|
|
|
|
$dead = @(0) * $n+1
|
|
$nn=$n
|
|
$p=-1
|
|
while ($n -ne $s){
|
|
$found=0
|
|
while ($found -ne $k){
|
|
if ($p++ -eq $nn) { $p=0 }
|
|
if ($dead[$p] -ne 1) {$found++}
|
|
}
|
|
$dead[$p]++
|
|
$killed+="$p "
|
|
$n--
|
|
}
|
|
for($i=0;$i -le $nn-1;$i++){
|
|
if ($dead[$i] -ne 1) {$survived+="$i "}
|
|
}
|
|
write-host "Killed: $killed"
|
|
write-host "Survived: $survived"
|
|
return
|
|
}
|
|
|
|
main 5 2 1
|
|
main 41 3 1
|
|
main 41 3 3
|
|
main 2 -3 4
|