舒尔特方格批处理版(5x5标准挑战+8x8极限挑战)
使用方法:
1.记事本另存,编码ansi,文件类型选所有类型,名称:舒尔特方格.bat
2.5x5从01一直找到25/8*8从01一直找到64并计时
上代码:
5x5方格:
点击查看代码
@echo off
setlocal enabledelayedexpansion
title 舒尔特方格5x5
goto :main
:main
echo 舒尔特方格5x5
echo.
echo 5秒后自动开始并计时,按回车键完成!
for /l %%x in (5,-1,1) do (
rem powershell -command "& {write-host %%x -nonewline}"
echo %%x秒
powershell -command "& {start-sleep 1}"
cls
echo 舒尔特方格5x5
echo.
if not %%x==1 (
echo 5秒后自动开始并计时,按回车键完成!
)
)
set key=01020304050607080910111213141516171819202122232425
set lens=25
set /a zeroIdx=!random!%%!lens!
rem echo !zeroIdx!
set /a currentIdx=0
for /l %%a in (1,1,5) do (
set lines=
for /l %%b in (1,1,5) do (
rem 取随机索引
rem 减少取连续数:5/1-4/(0-3)+1/%%4+1,4/1-3/(0-2)+1/%%3+1
rem 索引0随机分配
rem echo !currentIdx!,!zeroIdx!
if !currentIdx!==!zeroIdx! (
rem echo currentidx==zeroidx
set /a idx=0
) else (
set /a divideNum=!lens!-1
if !divideNum!==0 (
set /a idx=0
) else (
set /a idx=!random!%%!divideNum!+1
set /a idx=!idx!*2
)
)
rem echo 索引=!idx!
rem 下一个索引
set /a idx1=!idx!+2
rem echo 下一索引=!idx1!
call call set "o=%%%%key:~%%idx%%,2%%%%"
rem echo 当前值=!o!
set /a lens=!lens!-1
if !idx! equ 0 (
call call set "key=%%%%key:~%%idx1%%%%%%"
rem echo 索引=0,原始值=!key!
) else (
set /a maxidx=!lens!*2
rem echo 最大索引=!maxidx!
if !idx! geq !maxidx! (
set idx=!maxidx!
call call set "key=%%%%key:~0,%%idx%%%%%%"
rem echo 索引值大于等于最大索引,原始值=!key!
) else (
call call set "key=%%%%key:~0,%%idx%%%%%%%%%%key:~%%idx1%%%%%%"
rem echo 索引值小于最大索引,原始值=!key!
)
)
set lines=!lines! !o!
set /a currentIdx=!currentIdx!+1
rem pause
)
echo !lines!
)
echo.
set startTime=
set longTime=
for /f "tokens=*" %%y in ('powershell -command "& {get-date -uformat %%s}"') do (
set startTime=%%y
)
rem echo 开始时间=!startTime!
pause
for /f "tokens=*" %%z in ('powershell -command "& {$d1=get-date -uformat %%s;[bigint]($d1-!startTime!)}"') do (
set longTime=%%z
)
for /f "tokens=*" %%n in ('powershell -command "& {(!longTime!/25).toString('0.##')}"') do (
set spd=%%n
)
echo 总耗时!longTime!秒,速度!spd!秒/数字,棒棒哒!
pause
cls
goto :main
8x8方格:
点击查看代码
@echo off
setlocal enabledelayedexpansion
title 舒尔特方格8x8
goto :main
:main
echo 舒尔特方格8x8
echo.
echo 5秒后自动开始并计时,按回车键完成!
for /l %%x in (5,-1,1) do (
rem powershell -command "& {write-host %%x -nonewline}"
echo %%x秒
powershell -command "& {start-sleep 1}"
cls
echo 舒尔特方格8x8
echo.
if not %%x==1 (
echo 5秒后自动开始并计时,按回车键完成!
)
)
set key=01020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
set lens=64
set /a zeroIdx=!random!%%!lens!
rem echo !zeroIdx!
set /a currentIdx=0
for /l %%a in (1,1,8) do (
set lines=
for /l %%b in (1,1,8) do (
rem 取随机索引
rem 减少取连续数:64/1-63/(0-62)+1/%%63+1,63/1-62/(0-61)+1/%%62+1
rem 索引0随机分配
rem echo !currentIdx!,!zeroIdx!
if !currentIdx!==!zeroIdx! (
rem echo currentidx==zeroidx
set /a idx=0
) else (
set /a divideNum=!lens!-1
if !divideNum!==0 (
set /a idx=0
) else (
set /a idx=!random!%%!divideNum!+1
set /a idx=!idx!*2
)
)
rem echo 索引=!idx!
rem 下一个索引
set /a idx1=!idx!+2
rem echo 下一索引=!idx1!
call call set "o=%%%%key:~%%idx%%,2%%%%"
rem echo 当前值=!o!
set /a lens=!lens!-1
if !idx! equ 0 (
call call set "key=%%%%key:~%%idx1%%%%%%"
rem echo 索引=0,原始值=!key!
) else (
set /a maxidx=!lens!*2
rem echo 最大索引=!maxidx!
if !idx! geq !maxidx! (
set idx=!maxidx!
call call set "key=%%%%key:~0,%%idx%%%%%%"
rem echo 索引值大于等于最大索引,原始值=!key!
) else (
call call set "key=%%%%key:~0,%%idx%%%%%%%%%%key:~%%idx1%%%%%%"
rem echo 索引值小于最大索引,原始值=!key!
)
)
set lines=!lines! !o!
set /a currentIdx=!currentIdx!+1
rem pause
)
echo !lines!
)
echo.
set startTime=
set longTime=
for /f "tokens=*" %%y in ('powershell -command "& {get-date -uformat %%s}"') do (
set startTime=%%y
)
rem echo 开始时间=!startTime!
pause
for /f "tokens=*" %%z in ('powershell -command "& {$d1=get-date -uformat %%s;[bigint]($d1-!startTime!)}"') do (
set longTime=%%z
)
for /f "tokens=*" %%n in ('powershell -command "& {(!longTime!/64).toString('0.##')}"') do (
set spd=%%n
)
echo 总耗时!longTime!秒,速度!spd!秒/数字,棒棒哒!
pause
cls
goto :main

浙公网安备 33010602011771号