[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 15# taofan712
感觉你已经做到极限了。

TOP

本帖最后由 taofan712 于 2017-3-17 11:43 编辑

回复 16# happy886rr

不,还没有,我从你这道题收获颇丰啊!
我后来有思考过,goto其实还可以减少一个标签,而且如果为了减少字节数,我从你用“set/p=”代替常见的pause,想到不如用ftp或者more,毕竟又少了两三个字符。
这样,九层,最终66个字节吧。

TOP

接下来可以打印字符版 Sirpinsiki 三角形

TOP

回复 18# 523066680
那个Sirpinsiki太难了,我估计只有你跟aa77dd@163.com 兄能实现。

TOP

本帖最后由 523066680 于 2017-3-18 08:26 编辑

回复 19# happy886rr

夸张了 ,没试过字符版,好像可以先从直角开始。
  1. my $floor = 5;
  2. my $s = " "x$floor;
  3. my @line;
  4. for my $n ( 0 .. $floor-1 )
  5. {
  6.     $s=~s/ /*/;
  7.     $line[$n] = $s;
  8. }
  9. for my $n ( $floor .. $floor*$floor - 1 )
  10. {
  11.     $line[$n] = $line[$n%$floor] x ($n/$floor+1);
  12. }
  13. print join("\n", @line);
复制代码

*   
**   
***  
****
*****
*    *   
**   **   
***  ***  
**** ****
**********
*    *    *   
**   **   **   
***  ***  ***  
**** **** ****
***************
*    *    *    *   
**   **   **   **   
***  ***  ***  ***  
**** **** **** ****
********************
*    *    *    *    *   
**   **   **   **   **   
***  ***  ***  ***  ***  
**** **** **** **** ****
*************************



发现差远了,晚点儿补上

TOP

本帖最后由 老刘1号 于 2017-3-17 23:48 编辑

回复 1# happy886rr
兼容WIN7的来了
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. ::CODER BY Old.Liu POWERD BY iBAT
  4. set /p long=Input:
  5. set /a long=long/2
  6. set /a long=long*2+1
  7. set /a half=long/2
  8. set /a i=1
  9. set a=.
  10. for /l %%a in (1 1 !half!) do set "a=!a! "
  11. for /l %%a in (1 1 !i!) do set a=!a!*
  12. echo!a!
  13. if !long! == 1 goto end
  14. :loop
  15. set /a i+=2
  16. set /a half-=1
  17. set a=.
  18. for /l %%a in (1 1 !half!) do set "a=!a! "
  19. for /l %%a in (1 1 !i!) do set a=!a!*
  20. echo!a!
  21. if "!i!" equ "!long!" goto end
  22. goto loop
  23. :end
  24. pause
复制代码

TOP

本帖最后由 happy886rr 于 2017-3-17 23:51 编辑

回复 21# 老刘1号
最后一版正常。

TOP

本帖最后由 老刘1号 于 2017-3-18 00:07 编辑

回复 22# happy886rr


    好的,收到
不用set输出的话……这种题不准备用批写了,太费劲

TOP

回复 17# taofan712


    现在这个时代,代码不仅是给机器看的,其他人也需要看,也需要理解,这样才能一起做成大的项目
过度的精简代码失去的东西比得到的多的多。
这也是为何会有注释,有缩进
编程的最高境界就是能让你写的程序自成文章

TOP

本帖最后由 523066680 于 2017-3-18 09:56 编辑
  1. my @lines = "*";
  2. func( \@lines, 1 );
  3. sub func
  4. {
  5.     my ($ref, $lv) = (shift, shift);
  6.     my @tri;
  7.     my $top = $#$ref + 1;
  8.     grep { push @tri, "$_ $_" } @$ref;
  9.     grep { unshift @tri, " "x$top .$_ ." "x$top } ( reverse @$ref );
  10.     ( $lv <= 3 ) ?
  11.          func( \@tri, $lv+1 ) : print join("\n", @tri);
  12. }
复制代码
  1.                *               
  2.               * *              
  3.              *   *            
  4.             * * * *            
  5.            *       *           
  6.           * *     * *         
  7.          *   *   *   *         
  8.         * * * * * * * *        
  9.        *               *      
  10.       * *             * *      
  11.      *   *           *   *     
  12.     * * * *         * * * *   
  13.    *       *       *       *   
  14.   * *     * *     * *     * *  
  15. *   *   *   *   *   *   *   *
  16. * * * * * * * * * * * * * * * *
复制代码
1

评分人数

TOP

Writing Code That Nobody Else Can Read.
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set level=4
  3. set /a n=100000000,m=1
  4. for /l %%a in (1 1 %level%) do set /a m*=2
  5. set /a a=n+2*m,aa=m-1+n,m=n+m
  6. for /l %%a in (%n% 1 %a%) do set "#%%a= "
  7. set #%m%=*
  8. for /l %%a in (%n% 1 %aa%) do (
  9.     set "s="&set r=*
  10.     for /f "tokens=1* delims==" %%b in ('set #') do set "s=!s!%%c"
  11.     echo;!s!
  12.     set /a b=m-%%a+n,c=m+%%a-n
  13.     for /l %%c in (!b! 1 !c!) do (
  14.         set /a d=%%c-1,e=%%c+1,h=c+1
  15.         for %%i in (!d!) do set f=!#%%i!
  16.         for %%j in (!e!) do set g=!#%%j!
  17.         if "!f!" neq "!g!" (set t=*) else set "t= "
  18.         for %%i in (!d!) do set #%%i=!r!
  19.         set r=!t!
  20.     )
  21.     set #!c!=!t!&set #!h!=*
  22. )
  23. pause
复制代码
2

评分人数

TOP

回复 20# 523066680
  1. '&@(cls&Echo off 2>nul 3>nul)
  2. '&set /p long=输入长度:
  3. '&set /p floor=输入层数:
  4. '&Cscript -nologo -e:vbscript "%~0" "%floor%" "%Long%"
  5. '&Pause&Exit
  6. floor_=WScript.Arguments(0)
  7. long_=WScript.Arguments(1)
  8. For a = 1 To floor_
  9. For i = 1 To long_
  10. For b = 1 To a
  11. For j = 1 To i
  12. Echo=Echo&"*"
  13. Next
  14. For j = i To long_
  15. Echo=Echo&" "
  16. Next
  17. Next
  18. Echo=Echo&vbNewLine
  19. Next
  20. Next
  21. WScript.Echo echo
复制代码

TOP

本帖最后由 523066680 于 2017-3-18 14:29 编辑

回复 28# 老刘1号


    其实我20楼的那个不是标准的,上午想起来不对马上打草稿补了一发~

原版的是有一种递归性质,不管从哪一部分放大看都有相似性,而且越大越密集越好看

https://en.wikipedia.org/wiki/Sierpinski_triangle

TOP

回复 29# 523066680


    酱紫啊……

TOP

返回列表