[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 7# CrLf

一样无异议.

JUST I THINK SO

对于max(a,b)和min(a,b), set /a 有这样一些实现:
min
a+(b-a)&(b-a>>31)
(a-b>>31)&a|(b-a>>31)&b
(a-b>>31)&a|~(a-b>>31)&b

max
a-(a-b)&(a-b>>31)
(a-b>>31)&b|(b-a>>31)&a
(a-b>>31)&b|~(a-b>>31)&a

大胆把大师级代码修改玩一下, 未定义的变量被看作 0 , 确实不能忘了, 呃, 我不想用除法!, 假设文档中并无负数. 以下
  1. @echo off & setlocal enabledelayedexpansion
  2. set /a "M=1<<31^-1"
  3. for /f "tokens=1-3 delims=. " %%a in (a.txt) do (
  4.     set /a "x=%%c,t=x-max[%%a.%%b],max[%%a.%%b]=x-(t&t>>31),p=min[%%a.%%b],p=p+(p-1>>31&M),t=p-x,min[%%a.%%b]=x+(t&t>>31)"
  5. )
  6. for /f "delims=max[]" %%a in ('set max[') do (
  7. echo %%a.!min[%%a]!.0-%%a.!max[%%a]!.255
  8. )
  9. pause
复制代码
1

评分人数

    • CrLf: 可能是该思路下的最优方案了吧PB + 10 技术 + 1

TOP

返回列表