|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
|
2007-5-1 06:02 |
|
|
zhoushijay
高级用户
    Autowalk
积分 845
发帖 375
注册 2007-3-3
状态 离线
|
|
2007-5-1 06:25 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
不好意思,我的疏忽。。
最后的1234567890也需要代入乘积的。。
num1 和 num 2 的值为提取出来的数值的乘积。
当然你也可以用 其他的变量来表示。
Last edited by flyinspace on 2007-4-30 at 05:30 PM ]
|

知,不觉多。不知,乃求知 |
|
2007-5-1 06:28 |
|
|
lxmxn
版主
       
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
Re flyinspace:
感谢兄发的几个“挑战”系列的贴子,这样是非常有意义的,不仅有利于大家的技术交流,更有利于论坛的发展和人气的提升,特加分鼓励一下。
|
|
2007-5-1 06:30 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
Originally posted by lxmxn at 2007-4-30 05:30 PM:
Re flyinspace:
感谢兄发的几个“挑战”系列的贴子,这样是非常有意义的,不仅有利于大家的技术交流,更有利于论坛的发展和人气的提升,特加分鼓励一下。
呵呵,谢谢斑竹的加分,但我们更期待的是:斑竹精彩的代码回复。
|

知,不觉多。不知,乃求知 |
|
2007-5-1 06:33 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
这一题:
我也没有想到好法子。。本想利用人工演算乘法的方法解决(无奈代码太多,其中甚至包含了(加法,移位,减法))
如此一来,代码实在比较长了。个人对这一题的难度把握错误(而且计算乘法运算的时候,尚有部分数据会有点差错,研究原因中……)
认为此题的难度应该为:☆☆☆
不知各位达人有什么更好的方法没?
|

知,不觉多。不知,乃求知 |
|
2007-5-2 14:02 |
|
|
slore
铂金会员
      
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
|
2007-5-2 15:42 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
嗯。提取的确好简单的。。。
主要是乘法运算不出错的表达很困难。。
两个数相乘。若两个数字的长度小于等于9 则调用自带的来完成。。
但若两个数都大于9。。
感觉人工算法不太好。。
有点想考虑 使用 2进制的方法来表达了。。但用批处理会算死人的。
而且批处理,又有一点搞不好了。
例如: set xx=123123。
不知道如何用最简单的方法修改第二个数字2 为我所需要的数字。。
只会调用函数相互更改。
批处理数组的功能太弱。。
真有点想用c++来解决问题。
|

知,不觉多。不知,乃求知 |
|
2007-5-2 17:11 |
|
|
slore
铂金会员
      
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
set xx=123123
set yy=%xx:~0,1%S%xx:~2,-1%
echo %yy%
pause
晕,最后位不好取,要么获取长度那也麻烦=。=
|
|
2007-5-2 17:19 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
长度可以不用担心。
因为若不指定长度的话。会给出默认值的。
不过我的方法是调用函数获取长度。
|

知,不觉多。不知,乃求知 |
|
2007-5-2 17:21 |
|
|
youxi01
高级用户
   
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
5.1假期没人陪,也上不了网,很郁闷。倒也多出了时间来思考人生的问题(庸庸碌碌、浑浑噩噩),也有了时间来讨论 联盟上的问题,呵呵。
写了一段 很混乱 的代码,欢迎测试指正。
::code by youxi01@cn-dos.net
@ECHO OFF
setlocal enabledelayedexpansion
title 乱序数值的提取与计算
color 1f
set "str1=flyi2121212t2fds654654546654654654654656521d5g615"
set "str2=wo6654541s1545446ffd6551323"
set/a m=0
echo 正在提取str1中的数值...
echo.
echo 提取出的数值有:
echo.
call :GetStr "%str1%"
set Rnum
echo ---------------------------------------
set/a Resstr=1
echo 正在求取str1中各数值之积...
echo.
FOR /F "delims== tokens=2" %%i in ('set Rnum') do call :Multi !Resstr! %%i
set num1=!Resstr!
echo 计算结果为:%num1%
for /l %%i in (1 1 %i%) do set Rnum%%i=
set/a i=0,Resstr=1
echo ---------------------------------------
echo 正在提取str2中的数值...
echo.
echo 提取出的数值有:
echo.
call :GetStr "%str2%"
set Rnum
echo ---------------------------------------
echo 正在求取str2中各数值之积...
FOR /F "delims== tokens=2" %%i in ('set Rnum') do call :Multi !Resstr! %%i
set num2=%Resstr%
echo 计算结果为:%num2%
echo ---------------------------------------
echo 正在比较大小...
echo.
if %num1% lss %num2% (
echo num1 比 num2 小
call :Sub %num2% %num1%) else (
echo num1 比 num2 大
call :Sub %num1% %num2%)
for /f "delims=0 tokens=*" %%i in ("!OKstr!") do echo 它们的差值为:%%i
pause>nul
:GetStr OBJ
set "str=%~1"
set/a i=1
for /l %%i in (0 1 10000) do (
set "Tstr=!str:~%%i,1!"
IF "!Tstr!"=="" call :Check Rnum!i! & goto :eof
IF !Tstr! GEQ 0 IF !Tstr! LEQ 9 (call set Rnum!i!=%%Rnum!i!%%!Tstr!) else (
if defined Rnum!i! call :Check Rnum!i! & set/a i+=1))
goto :EOF
:Check OBJ
for /f "delims=0 tokens=*" %%i in ("!%1!") do set %1=%%i
GOTO :EOF
:Split OBJ num(i)Name CX
set Rstr=%~1
if %Rstr% LEQ 10000 set "%2!%3!=%Rstr%" & goto :eof
set/a %2!%3!=10000%Rstr:~-4%%%10000
set/a %3+=1
call :Split %Rstr:~0,-4% %2 %3
goto :eof
:Multi
set/a m=0,n=0,j=0
set Resstr=
call :Split %1 Snum m
call :Split %2 Snum_ n
for /l %%i in (0 1 %m%) do (
for /l %%j in (0 1 %n%) do (
set/a j=%%i+%%j
set/a ResNum!j!+=!Snum%%i!*!Snum_%%j!))
set/a j+=1,flag=0
for /l %%i in (0 1 %j%) do (
set/a ResNum%%i+=!flag!
if !ResNum%%i! GTR 10000 (
set/a flag=!ResNum%%i:~0,-4!
set ResNum%%i=!ResNum%%i:~-4!) else (
set ResNum%%i=0000!ResNum%%i!
set ResNum%%i=!ResNum%%i:~-4!
set/a flag=0)
set Resstr=!ResNum%%i!!Resstr!)
for /f "delims=0 tokens=*" %%i in ("%Resstr%") do set Resstr=%%i
for /l %%i in (0 1 %j%) do set/a ResNum%%i=0
goto :eof
:Sub MaxNum MinNum
set/a flag1=0,m=0,n=0
call :Split %1 ok m
call :Split %2 ok_ n
for /l %%i in (0 1 %n%) do (
set/a ok%%i-=!ok_%%i!-!flag1!
if !ok%%i! lss 0 (
set/a ok%%i+=10000
set/a flag1=-1) else (set/a flag1=0)
set ok%%i=0000!ok%%i!
set ok%%i=!ok%%i:~-4!)
if !flag1! LSS 0 (
set/a n+=1
set/a ok!n!+=!flag!)
for /l %%i in (0 1 %m%) do set OKstr=!ok%%i!!OKstr!
|
|
2007-5-2 17:39 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
::code by youxi01@cn-dos.net
@ECHO OFF
setlocal enabledelayedexpansion
title 乱序数值的提取与计算
color 1f
set "str1=flyi2121212t2fds654654546654654654654656521d5g615"
set "str2=wo6654541s1545446ffd6551323"
set/a m=0
echo 正在提取str1中的数值...
echo.
echo 提取出的数值有:
echo.
call :GetStr "%str1%"
set Rnum
echo ---------------------------------------
set/a Resstr=1
echo 正在求取str1中各数值之积...
echo.
FOR /F "delims== tokens=2" %%i in ('set Rnum') do call :Multi !Resstr! %%i
set num1=!Resstr!
echo 计算结果为:%num1%
for /l %%i in (1 1 %i%) do set Rnum%%i=
set/a i=0,Resstr=1
echo ---------------------------------------
echo 正在提取str2中的数值...
echo.
echo 提取出的数值有:
echo.
call :GetStr "%str2%"
set Rnum
echo ---------------------------------------
echo 正在求取str2中各数值之积...
FOR /F "delims== tokens=2" %%i in ('set Rnum') do call :Multi !Resstr! %%i
set num2=%Resstr%
echo 计算结果为:%num2%
echo ---------------------------------------
echo 正在比较大小...
echo.
if %num1% lss %num2% (
echo num1 比 num2 小
call :Sub %num2% %num1%) else (
echo num1 比 num2 大
call :Sub %num1% %num2%)
for /f "delims=0 tokens=*" %%i in ("!OKstr!") do echo 它们的差值为:%%i
pause>nul
:GetStr OBJ
set "str=%~1"
set/a i=1
for /l %%i in (0 1 10000) do (
set "Tstr=!str:~%%i,1!"
IF "!Tstr!"=="" call :Check Rnum!i! & goto :eof
IF !Tstr! GEQ 0 IF !Tstr! LEQ 9 (call set Rnum!i!=%%Rnum!i!%%!Tstr!) else (
if defined Rnum!i! call :Check Rnum!i! & set/a i+=1))
goto :EOF
:Check OBJ
for /f "delims=0 tokens=*" %%i in ("!%1!") do set %1=%%i
GOTO :EOF
:Split OBJ num(i)Name CX
set Rstr=%~1
if %Rstr% LEQ 10000 set "%2!%3!=%Rstr%" & goto :eof
set/a %2!%3!=10000%Rstr:~-4%%%10000
set/a %3+=1
call :Split %Rstr:~0,-4% %2 %3
goto :eof
:Multi
set/a m=0,n=0,j=0
set Resstr=
call :Split %1 Snum m
call :Split %2 Snum_ n
for /l %%i in (0 1 %m%) do (
for /l %%j in (0 1 %n%) do (
set/a j=%%i+%%j
set/a ResNum!j!+=!Snum%%i!*!Snum_%%j!))
set/a j+=1,flag=0
for /l %%i in (0 1 %j%) do (
set/a ResNum%%i+=!flag!
if !ResNum%%i! GTR 10000 (
set/a flag=!ResNum%%i:~0,-4!
set ResNum%%i=!ResNum%%i:~-4!) else (
set ResNum%%i=0000!ResNum%%i!
set ResNum%%i=!ResNum%%i:~-4!
set/a flag=0)
set Resstr=!ResNum%%i!!Resstr!)
for /f "delims=0 tokens=*" %%i in ("%Resstr%") do set Resstr=%%i
for /l %%i in (0 1 %j%) do set/a ResNum%%i=0
goto :eof
:Sub MaxNum MinNum
set/a flag1=0,m=0,n=0
call :Split %1 ok m
call :Split %2 ok_ n
for /l %%i in (0 1 %n%) do (
set/a ok%%i-=!ok_%%i!-!flag1!
if !ok%%i! lss 0 (
set/a ok%%i+=10000
set/a flag1=-1) else (set/a flag1=0)
set ok%%i=0000!ok%%i!
set ok%%i=!ok%%i:~-4!)
if !flag1! LSS 0 (
set/a n+=1
set/a ok!n!+=!flag!)
for /l %%i in (0 1 %m%) do set OKstr=!ok%%i!!OKstr!
略略测试了一下。。发现 乘法方面做得不错。。。
但,,计算差值方面有问题。。不能正确计算出两者间的差值。。。
|

知,不觉多。不知,乃求知 |
|
2007-5-2 17:47 |
|
|
youxi01
高级用户
   
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
|
2007-5-2 17:50 |
|
|
youxi01
高级用户
   
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
|
2007-5-2 18:14 |
|
|
flyinspace
银牌会员
    
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第 15 楼』:
使用 LLM 解释/回答一下
正在提取str1中的数值...
提取出的数值有:
Rnum1=21
Rnum2=12
Rnum3=2
Rnum4=65
Rnum5=6521
Rnum6=5
Rnum7=615
---------------------------------------
正在求取str1中各数值之积...
计算结果为:656905977000
---------------------------------------
正在提取str2中的数值...
提取出的数值有:
Rnum1=665
Rnum2=4541
Rnum3=154
Rnum4=5446
Rnum5=6551323
---------------------------------------
正在求取str2中各数值之积...
计算结果为:16592067927276590980
---------------------------------------
正在比较大小...
num1 比 num2 大
它们的差值为:729629386020
你自己看吧。。。这个结果可能么??
|

知,不觉多。不知,乃求知 |
|
2007-5-2 18:23 |
|