Beta的雪花


12

挑战

冬季快到了,许多地方都接受了15/16赛季的第一场降雪,那么为什么不突破制雪机并给自己编码一些雪呢?

n通过STDIN 给定整数,请在level上输出ASCII表示Beta的雪花(如下所述)n

Beta的雪花

雪花从0级开始,带有一个x:

x

然后,在每个角上添加以下形状之一:

x
xx

您将上面的形状添加到右上角。对于右下角,将其顺时针旋转90°,对于左下角,顺时针旋转180°,对于左上角,顺时针旋转270°。

如果这样做,您将得到以下形状:

 x x
xx xx
  x
xx xx
 x x

注意形状的方向。继续,使用上述方向规则,将更多形状添加到每个角上,以得到第2级:

  x x x
 xxxxxxx
xx x x xx
 xxx xxx
xx  x  xx
 xxx xxx
xx x x xx
 xxxxxxx
  x x x

请注意,仅将形状添加到x具有两个或更多裸露侧面(称为上方的角)的。

n对于大于1的值,L形可能会重叠,例如:

如果级别0为:

x x

然后,级别1中必须存在重叠(用表示o,请勿o在输出中包括):

 x o x
xxxoxxx
  x x
xxxoxxx
 x o x 

您的任务是输出Beta雪花的ASCII表示形式。

奖金

最短的程序将获得50 rep奖励,如果n为负数,则将雪花(水平n*-1)作为图像或图形输出到屏幕。

您可能有一个用于赏金和主要任务的单独程序。

获奖

以字节为单位的最短程序获胜。


4
伽玛雪花是此的3d版本。
Conor O'Brien

1
@CᴏɴᴏʀO'Bʀɪᴇɴ好吧,这是一个后续挑战的想法;)
Beta Decay

您能阐明2 or more exposed sides规则吗?假设中心0,0然后1,11,-1-1,-1-1,1所有具有2个露出侧面(侧面面朝其他4分)。避免3个以上的开口面以避免填充吗?或者,只有在具有0或1个邻居(基数)的情况下,它才会扩展。
乔纳森·里奇·佩平

如上所述,在中心周围“正方形”的拐角处,例如n = 2的情况下,这也会导致额外的增长(这不是峰值,但在W,NW,N侧都暴露(对于顶部左)。
乔纳森水蛭佩潘

Answers:


8

CJam,88 83 82字节

1]]{{0f+zW%}8*{YYb_m*{~W$m>fm>}%z:z8Ybff=__1m>\1fm>]:zWf%(\:..|}4*..|}q~*" x"ff=N*

在这里测试。

我认为我可以在检测拐角位置方面节省很多。但是至少我终于知道下一次迭代的样子:

N = 3

   x x x x   
  xxxxxxxxx  
 xx x x x xx 
xx xxxxxxx xx
 xxx x x xxx 
xx xxx xxx xx
 xxx  x  xxx 
xx xxx xxx xx
 xxx x x xxx 
xx xxxxxxx xx
 xx x x x xx 
  xxxxxxxxx  
   x x x x   

N = 4:

    x x x x x    
   xxxxxxxxxxx   
  xx x x x x xx  
 xx xxxxxxxxx xx 
xx xx x x x xx xx
 xxx xxxxxxx xxx 
xx xxx x x xxx xx
 xxx xxx xxx xxx 
xx xxx  x  xxx xx
 xxx xxx xxx xxx 
xx xxx x x xxx xx
 xxx xxxxxxx xxx 
xx xx x x x xx xx
 xx xxxxxxxxx xx 
  xx x x x x xx  
   xxxxxxxxxxx   
    x x x x x    

从这些角度看,它们似乎比我预期的要规则得多,并且直接生成它们的某种分析解决方案可能要短得多。


1

Python 2,269字节

不将形状放在每个角上,而是根据坐标确定角色是否在雪花中。

首先生成一个角,然后镜像到整个雪花。

i=input()
d=2*i+1
s=[x[:]for x in[[0]*d]*d]
s[0][0]=1
if i:s[1][1]=1
for j in range(2,d):
 for v in range(j+1):s[j][v]=s[v][j]=(j+v)%3!=1and j+v<d+i if v>j/2 else j%2==1or j%4+v%2in[0,3]
for l in[l[:0:-1]+l for l in s[:0:-1]+s]:print''.join(['X'if n else' 'for n in l])
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.