\begingroup

给定一个大于或等于 2 的整数,输出类似于具有该边长的等距透视立方体环的 ASCII 艺术。

2、3 的预期输出如下所示。您可以想象其余部分。您也可以将第一个例子视为 1 的输出,将第二个例子视为 2 的输出,等等。

这是,最短的代码获胜。您的输出可能包含任何不影响图像呈现的额外空格。

2

   / \ / \
  |\ /|\ /|
  | | | | |
 / \|/ \|/ \
|\ /|   |\ /|
| | |   | | |
 \|/ \ / \|/
  |\ /|\ /|
  | | | | |
   \|/ \|/

3
                     
     / \ / \ / \     
    |\ /|\ /|\ /|    
    | | | | | | |    
   / \|/ \|/ \|/ \   
  |\ /|       |\ /|  
  | | |       | | |  
 / \|/         \|/ \ 
|\ /|           |\ /|
| | |           | | |
 \|/ \         / \|/ 
  |\ /|       |\ /|  
  | | |       | | |  
   \|/ \ / \ / \|/   
    |\ /|\ /|\ /|    
    | | | | | | |    
     \|/ \|/ \|/     

\endgroup

1

  • \begingroup
    我认为一些 ascii-art 挑战与此非常相似,但我找不到任何现成的例子。
    \endgroup


    – 


最佳答案
4

\begingroup

4.2.2,573 572字节

h;s!.! / \\!g;x;s/.//;s/./  /g;G;s/\n//p
s! /!|/!g;y|\\/|/\\|;s/$/|/p;h
s!\\ /! | !gp
x;s! /|!|/ !g;:a;s!$!\\!;s! |!/ !p
s/  \\/   /;s!/  !   !;y!/\\!\\/!;:e
s!|\\ /|!|   |!;s/ | /   /;te;s! \\!|\\!;s/$/|/p
s!\\ /! | !gp
s!| | |!|\\|/ !;s!! \\|/ !
/^ *  |/ta;:b;s/\n.*//
s!/  !/ \\!
s/^|/ /;s! \? \\|!/ \\|!2p
y|\\/|/\\|;s!/! !;s!\\ $!!;s!/ !/|!;s! \\!|\\!;p
s!\\ /! | !gp
s!| | |! \\|/ !g;T;s! | |!\\|/!;t
G;s/ *| | /  /g;s/   |/\\/
T;s/^\( *\\\).*\n\1/&/;Tb
s/\n.*//;:z;s!/    !/ \\ /!;tz;p
y!/\\!\\/!;s!/! !;s!\\ $!!;s!/ \\!/|\\!gp
s!\\ /! | !gp
s!| | ! \\|/!g;s/|$//;:

将任何一元字符作为输入。适用于 2 个或更多输入。基本上它只是在完成每一行后将其输出。测试用例中输出之间的小“驼峰”是输入 0 的输出;如果您想查看没有换行符的输出,您可以删除输入中的多余换行符。

这里尝试一次输出三行:

字节

h;s!.! / \\!g;x;s/.//;s/./  /g;G;s/\n//p
s! /!|/!g;y|\\/|/\\|;s/$/|/p;h
s!\\ /! | !gp
x;s! /|!|/ !g;:a;s!$!\\!;s! |!/ !p
s!/ \\|!    !g;x;s/|.*//;G;s!..\(.*\)\n\1!\1|\\ /|!
s!      / \\!|\\ /|!
s/.*/&\n&\n&/
s!|\\ /|!| | |!3g
T;s! | | |!/ \\|/ !3;Tr
s!| | |! \\|/ \\!3;bh
:a;p;s/^  //mg;s!/  \||  !&    !mg;:h;/^  /ta
:r;s/ |\n.*/ |/
s!| | | \( *\) | | |!&\n \\|/ \\\1/ \\|/!;be
:k;s/^/  /gm;s!\\    !\\!;s!|    !|!g
:e;s!\n[^\n]*$!&&!;G;s![^ \n]! !23g
T;s!\n\( *\)\n\1!!;t;s/\n *\n *//p;tk
:;s!\\    !\\ / \\!;t;p;s/^/  /gm;s/|  .*//gm;s!/ \\.*$!/!
:q;s/....$/&&/mg

这个还不起作用(最后一行立方体被证明特别难以测量)但这样做可能会使打高尔夫变得更容易。

\endgroup

\begingroup

,41字节

NθF²F³Fθ«F³M∨μ¹✳⁺×⁴ι×μ⁻¹κP↑”{⊟∨÷IDR▶#⟲⁹⁰e

链接为代码的详细版本。使用替代输入方案,其中输入是立方体数量的六分之一。说明:

Nθ

输入整数。

F²F³

对六个方向中的每一个方向重复上述操作,这六个方向表示为两个主要方向(右和左)和三个次要方向(-600+60度)。

Fθ«

重复给定的整数次数。

F³M∨μ¹✳⁺×⁴ι×μ⁻¹κ

移至下一个立方体。

P↑”{⊟∨÷IDR▶#⟲⁹⁰e

输出立方体。立方体以向上的方向输出,以避免意外覆盖上方的立方体。考虑到要输出 12 个字符,使用 14 字节压缩字符串似乎比尝试使用绘图命令更有效。

每次内循环移动的方向分别为:

  • N、N、NE、E(逆序)
  • 嗯,嗯,嗯,嗯
  • 东, 东南, 南, 南
  • S、S、SW、W(逆序)
  • 大,大,大,大
  • 西、西北、北、北

\endgroup

\begingroup

,79 字节

{`0:"\\/|"(3|=8*x).[;;&;+5 4#4\3947690525]/(x+x+!'4 5)+\+-4+9\,/1_'x#'",EA$"}

按顺时针顺序一次插入一个六边形:

\endgroup

\begingroup

JavaScript(ES6),182 字节

逐个字符地构建输出。

n=>(y=h=n*6-2,p=n*2-1,g=x=>y?` |/\\
`[X=w-x-p,s=y>h/2,c=x-p>4&X>4,~x?x--<p|X<0|y>4&y<h-3&c?0:`1302203${y<h&y!=4*c}1010`[y%3*4+(X+y%3*!s*2&3)]:(p-=y--%3&&2*s-1,x=w,4)]+g(x):"")(w=p*4)

\endgroup