输出ASCII“ splat”


10

如果朝给定方向扔ASCII鸡蛋,最终将得到大小为nASCII代码。它以一个o(蛋黄)“开始” ,并以给定的方向(由2到n个 组成的“线”)继续*。的*s被一个“空格”分隔,而的s o和所有“线” 被“ space” 的“线” *分隔。

splat的方向可以是的八个方向之一o,例如:

1 2 3
4 o 5
6 7 8

下面是在方向大小为4的ASCII层片的实施例523分别。左边是实际的ASCII图示,而右边是一样的图示,但与“空间”“行”与实际的“线”替换(即-\|取决于方向)只是为了澄清什么是一个意思空间的“线”。

Size 4, direction 5
      *      | | |*
    *        | |*| 
  *   *      |*| |*
o   *       o| |*| 
  *   *      |*| |*
    *        | |*| 
      *      | | |*

Size 4, direction 2
* * * *     * * * *
            -------
 * * *       * * *
            -------
  * *         * *
            -------
   o           o

Size 4, direction 3   
*           *      
            \
* *         *\*    
            \ \
* * *       *\*\*
            \ \ \ 
o * * *     o\*\*\*

挑战

给定n≥1和8个可能的方向之一,编写一个函数或程序,在给定方向上输出大小为n的ASCII代码。

输入输出

允许使用任何一致,合理的输入格式。您不需要像我一样将方向映射到1到8的整数-如果更容易通过其他方式指定方向,请继续。但是,如果不清楚,请说说您做了什么。

输出将包括o*,空格(U + 0020),并产生该ASCII图示换行符(U + 000A)。在任何行上都允许前导,尾随或其他多余的空格。

规则

这是。适用标准规则。

更多例子

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *

Answers:


3

木炭20 18字节

↘EN×*⊕ιM↗oUE¬﹪η²⟲η

在线尝试!链接是详细版本的代码。说明:

↘EN×*⊕ι

画一个对角线的三角形。

M↗o

放鸡蛋。

UE¬﹪η²

对于均匀旋转,水平扩展splat以符合输出要求。此要求与木炭通常的期望不符。在线尝试!(详细)说明没有它的外观。

⟲η

根据需要旋转splat,使用以下代码进行指示:

321
4o0
567

这个37个 31字节的版本通过仅以直角旋转来避免多余的空格:

¿﹪η²G↘←θ*«↘Eθ×*⊕ι↗»oUE¹﹪η²⟲⊗÷η²

在线尝试!链接是详细版本的代码。


2

果冻,37个字节

”*ẋK¥ⱮmṠ©}”oḷ""LḶ⁶ẋƲ;"ṚƊ®¡z⁶K€ZU$A}¡Y

在线尝试!

方向:

[1个2345678][-21个-342-1个3-4]


1

Python 2,185个字节

lambda n,d:'\n'.join(g([(d/4*(n+~j)*' '+('*o'[[j>n-2,j<1][d/4]]+' *'*j)*i).ljust(2*n-1)for j in range(n)for i in(0,1)][1:],d%4))
g=lambda a,n:n and g(map(''.join,zip(*a))[::-1],n-1)or a

在线尝试!

编号从0到7,如下所示:

1 6 0
7 o 5
2 4 3

注意:大多数工作是为(在我的编号系统中)0和生成基本模式4。然后,该函数通过递归g将数组旋转a90度d%4,以生成其他结果。

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.