本帖最后由 neorobin 于 2011-4-25 01:47 编辑
各位的算法, 我没有仔细研究, 粗略看了下发现大家都用了些一样的技巧或方法,
我写的有些长, 想了下, 下面两段 | for /l %%i in (40 -1 1) ... | | for %%i in (!ind!) ...COPY |
可以整合在一起, ind 和 cnt 两个变量省去了, (另外用位运算对 8 求商和余数只是看起来酷点呵, 没什么实质): | for /l %%i in (0 1 39) do ( | | set /a "rem=%%i&7, rand=!random!%%(40-%%i)*4 | | for %%p in (!rand!) do set get=!nums:~%%p,3! | | set /a "val=get&0xff, lineOffs=(%%i>>3)-(val>>3), colOffs=(%%i&7)-(val&7) | | set "offs=!offs!!lineOffs!:!colOffs! " | | for %%v in (!val!) do set new=!new!!str:~%%v,1! | | if #!rem!==#7 set new=!new!!nl!& set offs=!offs!!nl! | | for %%a in (!get!) do set nums=!nums:%%a,=! | | )COPY |
|