Board logo

标题: [数值计算] [已解决]求助批处理6659四个数值计算24点 [打印本页]

作者: GNGW    时间: 2024-3-14 14:43     标题: [已解决]求助批处理6659四个数值计算24点

本帖最后由 GNGW 于 2024-3-18 13:52 编辑

6、6、5、9 四个数字,每个数字出现了几次,在运算过程中,就只能使用这几个数字几次,且不能使用其他数字,加减乘除随意组合,运算优先级随意搭配,总之在运算过程中,只能用2次6 ,1次5,1次9,并且不能使用其他数,计算最终结果是24(请用batch批处理脚本代码实现)
作者: semiuel    时间: 2024-3-14 17:05

很久以前网上下载的批处理算24点的脚本,忘记出处了。
  1. @echo off
  2. setlocal enableextensions enabledelayedexpansion
  3. title 批处理算24点
  4. echo 批处理算24点&echo.
  5. :loop
  6. set /p "n=输入四个数用空格分开: "
  7. set /a "lzn=0"
  8. for %%i in (!n!) do set /a "lzn+=1"&set /a "lz!lzn!z=%%i,lz!lzn!m=1,lz!lzn!s=%%i"
  9. call:liuzhaonan11 lz
  10. if not errorlevel 1 echo 结果: 没有答案
  11. goto loop
  12. 原理说明:使用有理数进行计算,选择算式中最先结合的两数和它们之间的运算,并递归.
  13. :liuzhaonan11
  14. setlocal
  15. set "f1=+"&set "f2=-"&set "f3=*"&set "f4=/"
  16. for /l %%i in (1,1,!%1n!) do for /l %%j in (1,1,!%1n!) do if %%i neq %%j (
  17. for /l %%k in (1,1,4) do (
  18. setlocal
  19. if %%k leq 2 set /a "z=%1%%jz*%1%%im!f%%k!%1%%jm*%1%%iz,m=%1%%jm*%1%%im"
  20. if %%k equ 3 set /a "z=%1%%jz*%1%%iz,m=%1%%jm*%1%%im"
  21. if %%k equ 4 set /a "z=%1%%jz*%1%%im,m=%1%%jm*%1%%iz"
  22. if !%1n! equ 2 (
  23. set /a "t=!z!-24*!m!"
  24. if !t! equ 0 if !m! neq 0 echo 结果: !%1%%js! !f%%k! !%1%%is! = 24&exit /b 1
  25. ) else (
  26. set "s=(!%1%%js! !f%%k! !%1%%is!)"&set /a "n=0"
  27. for /l %%l in (1,1,!%1n!) do if %%l neq %%i if %%l neq %%j (
  28. set /a "n+=1"&set "%1!n!z=!%1%%lz!"&set "%1!n!m=!%1%%lm!"&set "%1!n!s=!%1%%ls!"
  29. )
  30. set /a "n+=1"&set "%1!n!z=!z!"&set "%1!n!m=!m!"&set "%1!n!s=!s!"
  31. set "%1n=!n!"&call%0 %1
  32. if errorlevel 1 exit /b 1
  33. )
  34. endlocal
  35. )
  36. )
  37. exit /b 0
复制代码

作者: semiuel    时间: 2024-3-14 17:09

有可能脚本出自本论坛,反正我是看不懂。
作者: Batcher    时间: 2024-3-18 13:57

回复 3# semiuel


http://bbs.bathome.net/thread-4711-1-1.html
作者: GNGW    时间: 2024-3-18 14:05

回复 4# Batcher


    感谢回复,已经找到此帖代码,您帮忙看下这贴 http://www.bathome.net/thread-68649-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2