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

在控制台打印金字塔

[复制链接]
 楼主| 发表于 2017-3-18 18:41:50 | 显示全部楼层
本帖最后由 happy886rr 于 2017-3-18 18:51 编辑

回复 30# 老刘1号
你画的是有点偏差了,应该这样画(外链图,随时失效)
  1. @echo off
  2. mode con cols=300 lines=80
  3. setlocal enabledelayedexpansion

  4. set "Space=                                                                                                    "
  5. set/a "L=(1<<7)-1"

  6. for /l %%i in (0,1,!L!) do (
  7.         set/a "1/(%%i&1)" 2>NUL || (
  8.                 set/a "SL=(L-%%i)>>1"
  9.                 for %%j in (!SL!) do (
  10.                         set "PreSpace=!Space:~0,%%j!"
  11.                 )
  12.                 for /l %%j in (0,1,!L!) do (
  13.                         set/a "1/((%%i&%%j)-%%j)" 2>NUL && (
  14.                                 set "PreSpace=!PreSpace! "
  15.                         ) || (
  16.                                 set "PreSpace=!PreSpace!*"
  17.                         )
  18.                 )
  19.                 echo;!PreSpace!
  20.         )
  21. )
  22. set/p=LEVEL: 7
复制代码

评分

参与人数 2技术 +2 收起 理由
老刘1号 + 1 666666
523066680 + 1 看上去是数学方法 &amp;amp; 批处理自带混淆

查看全部评分

 楼主| 发表于 2017-3-18 18:43:08 | 显示全部楼层
回复 29# 523066680
Matrix67的方法就是好用。
发表于 2017-3-19 00:59:52 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion
  2. set /a "w=80,h=35,t=w*h,xc=w/2,yc=h/2"
  3. mode %w%,40
  4. for /l %%i in (1 1 !t!) do set "s=!s! "
  5. call :f 0 -16 32 s
  6. echo;!s! &pause &exit

  7. :f xtop ytop hei s
  8. REM 半顶角对边与底角对边比: 1:1 , hei <= 1, 绘 3 点, 否则递归
  9. setlocal
  10. set "s=!%4!"
  11. if %3 leq 1 (
  12.     set /a "a=%1 - 1, d=b=%2 + 1, c= %1 + 1"
  13.     call :d %1 %2 & call :d !a! !b! & call :d !c! !d!
  14. ) else (
  15.     set /a "h=%3 >> 1, a= %1 - h, d=b=%2 + h, c= %1 + h"
  16.     call :f %1 %2 !h! %4 & call :f !a! !b! !h! %4 & call :f !c! !d! !h! %4
  17. )
  18. (
  19. endlocal
  20. set "%4=%s%"
  21. exit /b
  22. )

  23. :d
  24. set /a "i=%1-xc + (%2-yc) * w + 1, L=i-1"
  25. for /f "tokens=1,2" %%a in ("!L! !i!") do (set s=!s:~0,%%a!*!s:~%%b!)
  26. exit /b


复制代码

评分

参与人数 1技术 +1 收起 理由
happy886rr + 1 666

查看全部评分

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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