找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 45364|回复: 9

[游戏娱乐] 批处理算24点

[复制链接]
发表于 2008-6-18 21:59:33 | 显示全部楼层 |阅读模式
  1. @echo off&color 1f&mode con cols=50 lines=5
  2. setlocal enabledelayedexpansion
  3. title 批处理算24 by zw19750516
  4. set "code=+ - * /"&set n=1
  5. :begin
  6. cls&echo.&echo  请输入第%n%个(0-9内的)整数,请不要在数字前加0。
  7. echo.&set /p num%n%= 请在这里输入:
  8. echo !num%n%!|findstr "[^0-9]">nul&&goto wrong
  9. set str=!num%n%!
  10. if "!str:~,1!" equ "0" if "!str:~1!" neq "" goto wrong
  11. if !str! gtr 9 goto wrong
  12. set num=%num% !num%n%!&set /a n+=1
  13. if %n% neq 5 goto begin
  14. set num=%num:~1%
  15. cls&echo.&echo  你输入的四个数是:%num%
  16. echo.&echo  请稍候,正在运算中...&ping /n 2 127.1>nul
  17. :again
  18. set str=&set var=1234&set /a x+=1,n=4
  19. if %x% equ 2000 cls&echo.&echo  对不起,没有算出来,或者这四个数算不出24。&pause>nul&goto :eof
  20. :lp
  21. set /a a=%random%%%%n%,m=%random%%%4+1
  22. set a=!var:~%a%,1!
  23. set var=!var:%a%=!
  24. for /f "tokens=%m% delims= " %%i in ("%code%") do set b=%%i
  25. :add
  26. if %n% equ 1 set "b="
  27. set str=%str%!num%a%!%b%&set /a n-=1
  28. if %n% neq 0 goto lp
  29. set /a a=%str%
  30. if %a% neq 24 goto again
  31. cls&echo.&echo  计算结果为:%str%=24
  32. pause>nul&goto :eof
  33. :wrong
  34. cls&echo.&echo  输入的数不合要求,请正确输入。&ping /n 2 127.1>nul&goto begin
复制代码
可惜就是不能正确处理除法,要正确处理除法将会很复杂。
发表于 2011-6-12 16:27:36 | 显示全部楼层
本帖最后由 523066680 于 2011-6-12 16:32 编辑

我做了C语言版本的,引入分数处理形式,这样就可以处理3/7这样的无理数了。
凡是数字都化成两部分,分子分母。
批处理的版本在百度贴吧有个人写的代码很短,主要是递归(他那个递归真直接啊) ,也是分数机制。
不过为了避免输出重复的答案,他也选择只输出一个运算结果(哈,还有超越的空间)
http://www.bathome.net/viewthread.php?tid=4711
作者:liuzhaonan11



至今没有见到批处理算24点,包括无理数处理,而且 全结果无重复 输出的。   有挑战性。
发表于 2011-6-12 18:55:16 | 显示全部楼层
liuzhaonan11果然是高手...
发表于 2012-10-16 23:06:35 | 显示全部楼层
娱乐娱乐  快乐就行
发表于 2014-1-23 17:03:49 | 显示全部楼层
谢谢分享。
发表于 2014-1-23 17:04:17 | 显示全部楼层
谢谢分享。
发表于 2014-2-12 17:32:47 | 显示全部楼层
我做了C语言版本的,引入分数处理形式,这样就可以处理3/7这样的无理数了。

3/7 这貌似不是无理数吧?
conset.exe支持浮点运算,功能比set更强大
发表于 2014-9-11 12:09:22 | 显示全部楼层
谢谢分享。
发表于 2014-9-26 12:19:05 | 显示全部楼层
感谢分享!!!!
发表于 2024-3-14 16:44:57 | 显示全部楼层
可惜就是不能正确处理除法,要正确处理除法将会很复杂。
batman 发表于 2008-6-18 21:59



    脚本不对,输入6437 也会给结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 20:21 , Processed in 0.020031 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表