标题: [数值计算] 【以解决】批处理怎样总结概括规律txt分别列出? [打印本页]
作者: ads350668398 时间: 2014-10-22 06:22 标题: 【以解决】批处理怎样总结概括规律txt分别列出?
本帖最后由 ads350668398 于 2014-10-23 18:17 编辑
157
156
159
157
159
156
156
158
155
136
159
151
159
158
158
137
137
157
152
143
158
158
148
158
159
157
151
151
157
158
159
157
155
147
137
159
156
152
152
159
160
157
156
157
161
156
156
163
159
156
163
161
160
159
157
160
137
137
137
137
137
151
160
161
138
162
163
162
160
159
152
161
158
136
156
156
154
154
162
146
146
155
156
142
162
161
162
153
163
153
155
155
144
144
161
160
162
149
154
163
162
162
149
156
156
156
153
161
146
156
142
162
159
161
161
155
160
142
163
152
157
158
154
161
163
160
147
147
151
155
155
161
160
163
138
161
162
160
158
139
160
141
162
158
158
158
163
137
163
144
161
153
163
137
161
144
163
160
147
163
151
155
155
161
161
160
160
152
160
162
162
163
161
160
146
145
161
146
163
153
158
166
156
146
162
162
161
163
148
148
148
148
166
155
137
159
165
166
166
154
154
所见即所得。
这里就是服务器在一段时间分配给我的外网IP段
我想用批处理来找出最大的 最小的 输出
最多 最少输出
还有什么战士没有想到
以15大头有多少和以13大头和16大头和17和18.。。有多少个
偶数几个
骑术几个
被三整除几个
和的
反正就是所有规律
作者: Batcher 时间: 2014-10-22 12:51
- gawk "NR==1{max=min=$1}NR>1{max=max>$1?max:$1;min=min>$1?$1:min;}END{print \"Max: \"max,\"Min: \"min}" a.txt
复制代码
作者: neorobin 时间: 2014-10-22 14:24
难道楼主在研究 WOW 刷机练级, 一帖总共才一百多字, 错别字一共 5 个词 10 个字
高阶督军的大头棒ID:18866
物品等级: 78
拾取后绑定
单手 单手锤
146 - 220 伤害 速度 2.90
(+ 63.1357 伤害 / 每秒)
+7 耐力
+14 爆击
+28 攻击强度
闪!
作者: CrLf 时间: 2014-10-22 15:42
借用 neorobin 的算法:- @echo off & setlocal enabledelayedexpansion
- set /a "M=1<<31^-1"
- for /f "tokens=1-3 delims=. " %%a in (a.txt) do (
- set /a "#奇数-=~%%a%%2,#偶数+=%%a%%2,#除三+=%%a%%3,#和+=%%a,x=%%a,t=x-#最大,#最大=x-(t&t>>31),p=#最小,p=p+(p-1>>31&M),t=p-x,#最小=x+(t&t>>31)"
- )
- set #
- pause
复制代码
作者: neorobin 时间: 2014-10-22 16:57
呃, 那个 31?????
假设 8 bits == 1 byte 没有变哈(谁知道会不会变呢), 也假设 CPU 也蛮喜欢 1 就是 1 哈(执行算术右移)
其实我(只是我)也没见过 64 位整数的 cmd, 还是想把这个 31 FIND 出来, 肯定会有更短更好更直接的召唤咒语~~~
命令行敲入- for /l %i in (7 8 127) do set /a "_=1<<%i>>%i+1, IMSB=_&%i|~_&IMSB"
- set IMSB
复制代码
作者: CrLf 时间: 2014-10-22 20:27
回复 5# neorobin
木看懂,这是什么意思
作者: neorobin 时间: 2014-10-22 21:03
回复 6# CrLf
MSB (Most significant bit) 在大端序中,是最左端的位, 对于有符号整数, 它 是符号位;
把 最右端的 LSB (Least Significant Bit) 编号为第 0 位, MSB 的位编号就是 存储尺寸位数 - 1
对 32 位整数, MSB 的编号就是 32 - 1 = 31
如果并不知道是多少位的整数, 但是知道是 大端序 和 算术右移, 那么下面的式子
T = 1 << n >> (n + 1) 也可以写成这样: 1<<n>>n>>1
仅在 n == 存储尺寸位数 - 1 时, T 的结果才会是 -1, 而 n 取其他任何值时, T 都将得到 0.
可以将 n 的值在一个范围内测试, 当 T 的值得到 -1 时, 就把对应的 n 值保留下来, 这个保留的值就是 MSB 的编号.
作者: CrLf 时间: 2014-10-22 21:57
回复 7# neorobin
好吧,原来 MSB 是这个意思,我原以为 IMSB 是 I'm SB,呃
作者: neorobin 时间: 2014-10-22 22:39
回复 8# CrLf
我猜 XX拼音 可能不懂那个吧
祖国语言就是强
作者: ads350668398 时间: 2014-10-23 06:54
本帖最后由 ads350668398 于 2014-10-23 07:21 编辑
借用 neorobin 的算法:
CrLf 发表于 2014-10-22 15:42
运行结果
#偶数=185
#和=56821
#奇数=178
#最大=167
#最小=136
#除三=379
请按任意键继续. . .
怎么11打头有几个12打头有几个13打头有几个。。。。(错别字是输入法不好用 不够智能 也侧面反映了 网友是智能的#17)
作者: ads350668398 时间: 2014-10-23 07:01
回复 3# neorobin
歌玩的不是 WOW(至今不知道那是个什么游戏 是不是就是魔兽争霸啊)
歌玩的是BAT的总结和概括
作者: ads350668398 时间: 2014-10-23 07:11
回复 7# neorobin
怎么高深的的东东 俺 俺不会这是头一次听说
方便的话给 普及下 顺便 解决下 俺这难题 谢谢
作者: neorobin 时间: 2014-10-23 13:57
本帖最后由 neorobin 于 2014-10-23 14:15 编辑
回复 12# ads350668398
呃, 我可不会什么高深的东东, 只是存储方面的东东, 以及位运算, 学习这些, 你最好找专门的书籍, 诸如贴吧, 网帖教程类的通常都是粗糙且极片面甚至充斥作者的错误理解于其中的.
下面的代码假设所有的变量名你都是知道是什么意思的~~, 并且是以你给出的一个数字一行的文本文件来处理的- @echo off & setlocal enabledelayedexpansion
-
- set /a "_min = 255, _min_cnt = 1 << 31 ^ -1"
- for /f %%a in (a.txt) do (
-
- set /a "x = %%a"
- set /a "_cnt_!x:~0,2! += 1"
- set /a "_sum += x"
- set /a "_cnt_odd += x & 1"
- set /a "_cnt_even += ~x & 1"
- set /a "_cnt_triple += ^!(x %% 3)"
- set /a "t = _max - x >> 31, _max = t & x | ~t & _max"
- set /a "t = x - _min >> 31, _min = t & x | ~t & _min"
-
- if not defined @%%a (
- for /f "tokens=2 delims=:" %%c in ('find /c "%%a" a.txt') do (
- set /a "x = %%c, # = %%a"
- set /a "t = _max_cnt - x >> 31, _max_cnt = t & x | ~t & _max_cnt, _max_cnt# = t & # | ~t & _max_cnt#"
- set /a "t = x - _min_cnt >> 31, _min_cnt = t & x | ~t & _min_cnt, _min_cnt# = t & # | ~t & _min_cnt#"
- )
- set "@%%a=."
- )
- )
-
- set _
- pause
复制代码
作者: ads350668398 时间: 2014-10-23 18:05
回复 ads350668398
呃, 我可不会什么高深的东东, 只是存储方面的东东, 以及位运算, 学习这些, 你最好找 ...
neorobin 发表于 2014-10-23 13:57
高手终于吃线了#24
作者: ads350668398 时间: 2014-10-23 18:05
本帖最后由 ads350668398 于 2014-10-23 18:21 编辑
@echo off & setlocal enabledelayedexpansion
set /a "_min = 255, _min_cnt = 1 << 31 ^ -1" ::说明255到1之间【1 << 31 ^ -1】括号里面的不知道求指教?
for /f %%a in (a.txt) do (
set /a "x = %%a" 这个指到是吧数据GEI X 的意思
set /a "_cnt_!x:~0,2! += 1" 这里cnt是什么意思?好像是现实前2为数?
set /a "_sum += x" sum+=x?????
set /a "_cnt_odd += x & 1" ?????????
set /a "_cnt_even += ~x & 1" ?????????
set /a "_cnt_triple += ^!(x %% 3)" 我才是除于3吗
set /a "t = _max - x >> 31, _max = t & x | ~t & _max" 什么31是什么意思给我说庆祝
set /a "t = x - _min >> 31, _min = t & x | ~t & _min" ????????
if not defined @%%a ( ????
for /f "tokens=2 delims=:" %%c in ('find /c "%%a" a.txt') do ( ????
set /a "x = %%c, # = %%a" ????
set /a "t = _max_cnt - x >> 31, _max_cnt = t & x | ~t & _max_cnt, _max_cnt# = t & # | ~t & _max_cnt#"???、
set /a "t = x - _min_cnt >> 31, _min_cnt = t & x | ~t & _min_cnt, _min_cnt# = t & # | ~t & _min_cnt#" ????
)
set "@%%a=." ????
)
)
set _ ????
pause
烦请 高手 写完天数 也学学 我的注释 说明省的给一些 新人造成疑惑 在学习的时候打了退堂鼓 好不好吗 【表情:/害羞】
作者: ads350668398 时间: 2014-10-23 18:23
本帖最后由 ads350668398 于 2014-10-23 19:09 编辑
差点被你气晕了 输出结果
_cnt_13=16 13大头的有16个
_cnt_14=27 -------
_cnt_15=87-----
_cnt_16=71-----
_cnt_even=99 奇术个
_cnt_odd=102 偶数
_cnt_triple=61 能除以3的有几个
_max=166 最大
_max_cnt=19 吃线次
_max_cnt#=161 平均?
_min=136 最小
_min_cnt=1 次
_min_cnt#=143 ???
_sum=31170 是和吗??
请按任意键继续. . .
作者: ads350668398 时间: 2014-10-23 19:06
本帖最后由 ads350668398 于 2014-10-23 19:09 编辑
@findstr/n . 101.txt|find /c /v ""
行数
作者: neorobin 时间: 2014-10-23 19:15
本帖最后由 neorobin 于 2014-10-23 19:17 编辑
回复 16# ads350668398
我不是高手. 你比我注册还早, 只是在线时间很少哈
_min_cnt 统计出现最少的数的出现次数(结果是 143 出现最少, 只有 1 次)
开始要给 _min_cnt 一个初始值, 要足够大(比出现最多的那个数的次数还多就行了, 其实只达到数据量的总数也行了),
999 觉得不够大啊 9999 觉得还不够大哈, 99999?, 9999999, 9999999999999999.......
呃, cmd 下最大的数可没有那么大, 而只有 2147483647 这么大.
这个数我记不住, 所以才写成 1 << 31 ^ -1
1 表示成 32 位(cmd 下只用了 32 位)二进制数
0000 0000 0000 0000 0000 0000 0000 0001
左移 31 位 ( 1 << 31 ) 后
1000 0000 0000 0000 0000 0000 0000 0000
再与 -1 做异或运算 (1 << 31 ^ -1)
异或: 对应位相反, 结果的对应位上得 1, 对应位相同, 结果的对应位上得 0 (简作: 同0异1)
1000 0000 0000 0000 0000 0000 0000 0000
1111 1111 1111 1111 1111 1111 1111 1111 ( -1 就是这样的 )
-------------------------------------------------------------------------------------------
0111 1111 1111 1111 1111 1111 1111 1111 ( 也就是 2147483647 )
_max_cnt=19 出现最多的数出现了多少次
_max_cnt#=161 出现最多的数是哪个
_min_cnt=1 出现最少的数出现了多少次
_min_cnt#=143 出现最少的数是哪个
_sum=31170 就是和, 所有数据加在一起的和
作者: ads350668398 时间: 2014-10-23 19:43
回复 18# neorobin
不要谦虚啊 谦虚会使人后退的
作者: ads350668398 时间: 2014-10-23 19:48
其实我之前是非常批处理混的混着混着 。。。。
作者: apang 时间: 2014-10-23 19:53
回复 19# ads350668398
圣人孔子日: 谦虚使人进步,骄傲使人退步
作者: DAIC 时间: 2014-10-23 20:14
回复 20# ads350668398
http://bbs.bathome.net/viewthrea ... p;page=12#pid156411
看得出来,啥也没学会,只剩下混了。
作者: ads350668398 时间: 2014-10-23 21:26
本帖最后由 ads350668398 于 2014-10-23 21:32 编辑
回复 22# DAIC
外
你夸张了吧 我写的那里错了吗#4
我学习的是灵活多变的方法 不是那种死记硬背的十本知识#99
作者: ads350668398 时间: 2014-10-23 23:23
回复 21# apang
那是万恶的旧社会人说的话
作者: apang 时间: 2014-10-23 23:59
回复 24# ads350668398
逗你玩,其实孔圣人没日过那话
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |