标题: [游戏娱乐] 批处理算24点 [打印本页]
作者: batman 时间: 2008-6-18 21:59 标题: 批处理算24点
- @echo off&color 1f&mode con cols=50 lines=5
- setlocal enabledelayedexpansion
- title 批处理算24 by zw19750516
- set "code=+ - * /"&set n=1
- :begin
- cls&echo.&echo 请输入第%n%个(0-9内的)整数,请不要在数字前加0。
- echo.&set /p num%n%= 请在这里输入:
- echo !num%n%!|findstr "[^0-9]">nul&&goto wrong
- set str=!num%n%!
- if "!str:~,1!" equ "0" if "!str:~1!" neq "" goto wrong
- if !str! gtr 9 goto wrong
- set num=%num% !num%n%!&set /a n+=1
- if %n% neq 5 goto begin
- set num=%num:~1%
- cls&echo.&echo 你输入的四个数是:%num%
- echo.&echo 请稍候,正在运算中...&ping /n 2 127.1>nul
- :again
- set str=&set var=1234&set /a x+=1,n=4
- if %x% equ 2000 cls&echo.&echo 对不起,没有算出来,或者这四个数算不出24。&pause>nul&goto :eof
- :lp
- set /a a=%random%%%%n%,m=%random%%%4+1
- set a=!var:~%a%,1!
- set var=!var:%a%=!
- for /f "tokens=%m% delims= " %%i in ("%code%") do set b=%%i
- :add
- if %n% equ 1 set "b="
- set str=%str%!num%a%!%b%&set /a n-=1
- if %n% neq 0 goto lp
- set /a a=%str%
- if %a% neq 24 goto again
- cls&echo.&echo 计算结果为:%str%=24
- pause>nul&goto :eof
- :wrong
- cls&echo.&echo 输入的数不合要求,请正确输入。&ping /n 2 127.1>nul&goto begin
复制代码
可惜就是不能正确处理除法,要正确处理除法将会很复杂。
作者: 523066680 时间: 2011-6-12 16:27
本帖最后由 523066680 于 2011-6-12 16:32 编辑
我做了C语言版本的,引入分数处理形式,这样就可以处理3/7这样的无理数了。
凡是数字都化成两部分,分子分母。
批处理的版本在百度贴吧有个人写的代码很短,主要是递归(他那个递归真直接啊) ,也是分数机制。
不过为了避免输出重复的答案,他也选择只输出一个运算结果(哈,还有超越的空间)
http://www.bathome.net/viewthread.php?tid=4711
作者:liuzhaonan11
至今没有见到批处理算24点,包括无理数处理,而且 全结果无重复 输出的。 有挑战性。
作者: CrLf 时间: 2011-6-12 18:55
liuzhaonan11果然是高手...
作者: web 时间: 2012-10-16 23:06
娱乐娱乐 快乐就行
作者: qq554931202 时间: 2014-1-23 17:03
谢谢分享。
作者: qq554931202 时间: 2014-1-23 17:04
谢谢分享。
作者: dengyuli 时间: 2014-2-12 17:32
我做了C语言版本的,引入分数处理形式,这样就可以处理3/7这样的无理数了。
3/7 这貌似不是无理数吧?
conset.exe支持浮点运算,功能比set更强大
作者: hnldwhm52 时间: 2014-9-11 12:09
谢谢分享。
作者: pkcc110 时间: 2014-9-26 12:19
感谢分享!!!!
作者: GNGW 时间: 2024-3-14 16:44
可惜就是不能正确处理除法,要正确处理除法将会很复杂。
batman 发表于 2008-6-18 21:59
脚本不对,输入6437 也会给结果
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |