无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3007|回复: 2
打印 上一主题 下一主题

批处理显示九宫格

[复制链接]
跳转到指定楼层
1#
发表于 2007-1-13 17:39:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  发一个小玩意出来耍耍:

  1. @echo off

  2. :: 九宫格的含义:
  3. :: 戴九履一,左三右七,二四为肩,六八为足。
  4. :: 换而言之,就是把1~9排成三行三列,横竖斜三个数相加都等于15
  5. :: 首发于:http://www.cn-dos.net/forum/viewthread.php?tid=26647

  6. title 九宫格
  7. mode con cols=40 lines=20
  8. set n1=0
  9. setlocal enabledelayedexpansion

  10. :begin
  11. cls
  12. set n5=5
  13. set str= 1 2 3 4 6 7 8 9
  14. set /a n1+=1
  15. if %n1% gtr 9 exit
  16. call :intercept %n1%
  17. set /a n9=15-%n1%-%n5%
  18. call :intercept %n9%
  19. for %%i in (%str%) do (
  20.     set flag=
  21.     set n2=%%i
  22.     set str_tmp=%str%
  23.     call :intercept !n2!
  24.     set /a n8=15-!n2!-!n5!
  25.     set /a n3=15-!n1!-!n2!
  26.     set /a n7=15-!n8!-!n9!
  27.     set /a n4=15-!n1!-!n7!
  28.     set /a n6=15-!n3!-!n9!
  29.     for %%j in (!n3! !n4! !n6! !n7! !n8!) do call :intercept %%j
  30.     if not "!str!"=="" set flag=1
  31.     set /a sum1=!n3!+!n5!+!n7!
  32.     set /a sum2=!n4!+!n5!+!n6!
  33.     if !sum1! equ 15 if !sum1! equ !sum2! if not defined flag call :result
  34.     set str=!str_tmp!
  35. )
  36. goto begin

  37. :intercept
  38. set str=!str: %1=!
  39. goto :eof

  40. :result
  41. cls
  42. echo.
  43. echo.
  44. echo.
  45. echo            ┌──┬──┬──┐
  46. echo            │ %n1%  │ %n2%  │ %n3%  │
  47. echo            ├──┼──┼──┤
  48. echo            │ %n4%  │ %n5%  │ %n6%  │
  49. echo            ├──┼──┼──┤
  50. echo            │ %n7%  │ %n8%  │ %n9%  │
  51. echo            └──┴──┴──┘
  52. echo.
  53. echo ________________________________________
  54. echo.
  55. echo             按任意键显示下一个
  56. pause>nul
  57. goto :eof
复制代码
2#
发表于 2007-1-14 11:30:15 | 只看该作者
能给个详细的解释么,谢谢
回复

使用道具 举报

3#
 楼主| 发表于 2007-1-14 12:00:08 | 只看该作者
  九宫格代码思路如下:

  既然要求横竖斜三个数字相加都要等于15,则中心位置上的数字只能是3个数字的算术平均值5;然后按照1~9的顺序依次给第1格的变量赋值,则第9格的数值将随着第一格的数值而变化,换而言之,只要第1格的数值确定了,则第9格的数值也就确定了;第1、5、9格的数值确定之后,再把剩余数值中的任意一个赋给第2格的变量,则第8格的数值也就确定了;第1、2、5、8、9格的数值确定之后,按照横竖斜的和都为15的规律,则所有格子里的数值也就确定了,剩余的工作就是检测每个格子的数值是否重复、横竖斜的和是否为15。当所有的条件都符合之后,就显示结果,等待下一次变化。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-27 17:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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