| 
 
clian76 
中级用户
 
   
 
  
  
积分 363 
发帖 162 
注册 2007-4-22 
状态 离线
 | 
『楼 主』:
 [已结]从随机数字串中找出有多少对一样的数子。
 
使用 LLM 解释/回答一下
  
给出一串随机数字,要求找出里面有几对一样的数字。比如: 
14204 有1对(两个4) 
08448 有2对(4和8) 
93997 有1对 
10257 有0对 
998  有1对 
208  有0对 
4293 有0对 
。。。。。。 
 
最好是不产生临时文件。谢谢!!! 
 
问题已完美解决,非常感谢各位高手!!! 
 
 Last edited by clian76 on 2009-1-10 at 02:44 ] 
 
    
 
  
 |   
 | 
  2009-1-8 00:20 | 
  
 | 
 | 
 
dikex 
高级用户
 
     潜水修练批处理
  
  
积分 788 
发帖 366 
注册 2006-12-31 
状态 离线
 | 
 | 
  2009-1-8 01:14 | 
  
 | 
 | 
 
netbenton 
银牌会员
 
      批处理编程迷
  
 
积分 1916 
发帖 752 
注册 2008-12-28 来自 广西 
状态 离线
 | 
 | 
  2009-1-8 02:35 | 
  
 | 
 | 
 
clian76 
中级用户
 
   
 
  
  
积分 363 
发帖 162 
注册 2007-4-22 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by dikex at 2009-1-8 01:14 AM: 
如果有三个或以上怎么办? 
如: 
1110 
11110  
1110 1对 
11110 2对 
不知道批处理能不能做到这样,如果没办法就让它把全部可能的对子对比出来也行。谢谢!  
 
    
 
  
 |   
 | 
  2009-1-8 13:01 | 
  
 | 
 | 
 
clian76 
中级用户
 
   
 
  
  
积分 363 
发帖 162 
注册 2007-4-22 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by netbenton at 2009-1-8 02:35 AM: 
@echo off 
for /f "skip=15" %%i in (%~n0%~x0) do ( 
setlocal enabledelayedexpansion 
set ru=0 
set v=%%i 
for /l %%i in (1,1,20) do (if defined v (call set "a=!v:~0,1!"&call ...  
谢谢netbenton老师的解答!几句高深的代码已完美做到,非常感谢!!  
 
    
 
  
 |   
 | 
  2009-1-8 13:08 | 
  
 | 
 | 
 
netbenton 
银牌会员
 
      批处理编程迷
  
 
积分 1916 
发帖 752 
注册 2008-12-28 来自 广西 
状态 离线
 | 
 | 
  2009-1-8 14:37 | 
  
 | 
 | 
 
linee 
初级用户
 
  
 
  
  
积分 94 
发帖 49 
注册 2008-12-14 
状态 离线
 | 
 『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
@echo off&setlocal enabledelayedexpansion 
set _str=%random%&set str=!_str! 
set j= 
:loop 
if "%str%" neq "" ( 
	set i=%str:~0,1% 
	if not defined str!i! (set str!i!=1) else set/a str!i!+=1,j=0 
	set str=%str:~1% 
	goto loop 
) 
if defined j ( 
for /f "tokens=1,2delims==" %%i in ('set str')do if %%j gtr 1 set str=%%i&set "strout=!strout!!str:~3,1!和"&set/a j+=%%j/2 
echo %_str% 有!j!对(!strout:~0,-1!) 
) else echo %_str% 有0对 
pause>nul
  
 
    
 
     此帖被 +6 点积分      点击查看详情    | 评分人:【 HAT 】 | 分数: +2 |   时间:2009-1-8 17:36 |  | 评分人:【 clian76 】 | 分数: +4 |   时间:2009-1-8 17:45 |  
  |   
 
 
  
 |   
 | 
  2009-1-8 14:39 | 
  
 | 
 | 
 
clian76 
中级用户
 
   
 
  
  
积分 363 
发帖 162 
注册 2007-4-22 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by linee at 2009-1-8 02:39 PM: 
@echo off&setlocal enabledelayedexpansion 
set _str=%random%&set str=!_str! 
set j= 
:loop 
if "%str%" neq "" ( 
	set i=%str:~0,1% 
	if not defined str!i! (set str ... 
  
linee大侠的代码更详尽,对子的数值也显示出来了,收下,谢谢linee大侠!!学习了!  
 
    
 
  
 |   
 | 
  2009-1-8 16:56 | 
  
 | 
 | 
 
clian76 
中级用户
 
   
 
  
  
积分 363 
发帖 162 
注册 2007-4-22 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by linee at 2009-1-8 02:39 PM: 
@echo off&setlocal enabledelayedexpansion 
set _str=%random%&set str=!_str! 
set j= 
:loop 
if "%str%" neq "" ( 
	set i=%str:~0,1% 
	if not defined str!i! (set str ... 
  
不知道这里能不能去掉标签:loop,把它变成FOR方式,或其它方法,可行吗?  
 
    
 
  
 |   
 | 
  2009-1-8 17:22 | 
  
 | 
 | 
 
linee 
初级用户
 
  
 
  
  
积分 94 
发帖 49 
注册 2008-12-14 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by clian76 at 2009-1-8 17:22: 
 
不知道这里能不能去掉标签:loop,把它变成FOR方式,或其它方法,可行吗?  
这里感觉还是用if goto简单点,用for不好实现吧。  
 
    
 
  
 |   
 | 
  2009-1-8 18:33 | 
  
 | 
 | 
 
clian76 
中级用户
 
   
 
  
  
积分 363 
发帖 162 
注册 2007-4-22 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by linee at 2009-1-8 06:33 PM: 
 
这里感觉还是用if goto简单点,用for不好实现吧。  
这里我想打出多组随机数字串,想把开始转换成用: 
FOR /F %%I IN ('echo %random%^&echo.%random%^&echo.%random%') do ( 
再让程序把这三组随机数字串的对子数和对子数值显示出来。
 
我试了几个小时一直没有成功,希望高手再次出招,也好学习。谢谢!  
 
    
 
  
 |   
 | 
  2009-1-8 18:43 | 
  
 | 
 | 
 
linee 
初级用户
 
  
 
  
  
积分 94 
发帖 49 
注册 2008-12-14 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by clian76 at 2009-1-8 18:43: 
 
这里我想打出多组随机数字串,想把开始转换成用: 
FOR /F %%I IN ('echo %random%^&echo.%random%^&echo.%random%') do ( 
再让程序把这三组随机数字串的对子数 ...  
这样试试,
 @echo off 
FOR /F %%a IN ('echo %random%^&echo %random%^&echo %random%') do ( 
    setlocal enabledelayedexpansion 
    set _str=%%a&set str=!_str! 
    set j= 
    for /l %%x in (1,1,5) do ( 
	if "!str!" neq "" ( 
	    set i=!str:~0,1! 
	    if not defined str!i! (set str!i!=1) else set/a str!i!+=1,j=0 
	    set str=!str:~1! 
    )   ) 
    if defined j ( 
	for /f "tokens=1,2delims==" %%i in ('set str')do if %%j gtr 1 set str=%%i&set "strout=!strout!!str:~3,1!和"&set/a j+=%%j/2 
	echo !_str! 有!j!对(!strout:~0,-1!) 
    ) else echo !_str! 有0对 
    endlocal 
) 
pause&goto:EOF
  
 
    
 
  
 |   
 | 
  2009-1-8 21:06 | 
  
 | 
 | 
 
clian76 
中级用户
 
   
 
  
  
积分 363 
发帖 162 
注册 2007-4-22 
状态 离线
 | 
『第 13 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by linee at 2009-1-8 09:06 PM: 
 
这样试试, 
@echo off 
FOR /F %%a IN ('echo %random%^&echo %random%^&echo %random%') do ( 
    setlocal enabledelayedexpansion 
    set _str=%%a&set str=!_str! 
    set j= 
 ... 
  
有什么办法把变量: 
!_str!  
 !j! 
 !strout:~0,-1! 
拿到endlocal之后,就是这里的PAUSE之后让程序正常显示变量。我试了把endlocal拿到代码最后,这样程序就出错了!我的目的是这里的变量在别的标签里也能用,就是这个FOR之外的地方。  
 
    
 
  
 |   
 | 
  2009-1-8 23:17 | 
  
 | 
 | 
 
netbenton 
银牌会员
 
      批处理编程迷
  
 
积分 1916 
发帖 752 
注册 2008-12-28 来自 广西 
状态 离线
 | 
 | 
  2009-1-9 00:10 | 
  
 | 
 | 
 
netbenton 
银牌会员
 
      批处理编程迷
  
 
积分 1916 
发帖 752 
注册 2008-12-28 来自 广西 
状态 离线
 | 
    『第 15 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by clian76 at 2009-1-8 23:17: 
 
有什么办法把变量: 
!_str!  
 !j! 
 !strout:~0,-1! 
拿到endlocal之后,就是这里的PAUSE之后让程序正常显示变量。我试了把endlocal拿到代码最后,这样程序就 ...  
***把 setlocal enabledelayedexpansion 也拿到外面就可以了 
只是在for里面要注意变量的必要的初始化***
 
***附: 这样也可以产生随机, 我也是刚发现!***
 
@echo off 
setlocal enabledelayedexpansion 
for /f "skip=20" %%i in (%~n0%~x0) do ( 
set ru=0&set a= 
for /l %%i in (0,1,9) do set num%%i=0 
call set number=%%%i 
set v=!number! 
set nu=( 
for /l %%i in (1,1,20) do (if defined v (call set "a=!v:~0,1!"&call set "v=!v:~1!"&set /a num!a!+=1)) 
for /l %%i in (0,1,9) do (set /a ru=num%%i/2+ru&if !num%%i! gtr 1 set nu=!nu!和%%i) 
set nu=!nu!)&set nu=!nu:(和=(!&set nu=!nu:()=! 
echo   	!number!	有 !ru! 对 !nu! 
) 
pause 
endlocal
 
goto :eof
 
%random% 
%random% 
%random%%random% 
%random%%random% 
%random%%random%%random% 
%random%%random%%random% 
%random%%random%%random%%random% 
%random%%random%%random%%random%
 
 Last edited by netbenton on 2009-1-9 at 14:24 ]  
 
    
 
 
 
  
  |  
                  
  
                    精简 
=>    个人 网志      |   
 | 
  2009-1-9 00:47 | 
  
 |