32 lines
563 B
Batchfile
32 lines
563 B
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
set "prison=41" %== Number of prisoners ==%
|
|
set "step=3" %== The step... ==%
|
|
set "survive=1" %== Number of survivors ==%
|
|
call :josephus
|
|
|
|
set "prison=41"
|
|
set "step=3"
|
|
set "survive=3"
|
|
call :josephus
|
|
pause
|
|
exit /b 0
|
|
|
|
%== The Procedure ==%
|
|
:josephus
|
|
set "surv_list="
|
|
for /l %%S in (!survive!,-1,1) do (
|
|
set /a "m = %%S - 1"
|
|
for /l %%X in (%%S,1,!prison!) do (
|
|
set /a "m = (m + step) %% %%X"
|
|
)
|
|
if defined surv_list (
|
|
set "surv_list=!surv_list! !m!"
|
|
) else (
|
|
set "surv_list=!m!"
|
|
)
|
|
)
|
|
echo !surv_list!
|
|
goto :EOF
|