Salida de un "splat" ASCII

10

Si arrojas un huevo ASCII en una dirección determinada, terminas con un splat ASCII de tamaño n . "Comienza" con una o(la yema), y continúa en una dirección dada con "líneas" que consisten en 2 hasta n * 's. Los *'s están separados por un "espacio", y las oy todas las "líneas" de *están separadas por "líneas" de "espacio".

La dirección del splat puede ser cualquiera de las ocho direcciones desde o, por ejemplo:

1 2 3
4 o 5
6 7 8

Aquí hay ejemplos de símbolos ASCII de tamaño 4 en direcciones 5, 2y 3respectivamente. A la izquierda es el splat ASCII real, y de la derecha es el mismo splat pero con las "líneas" de "espacio" sustituido con "líneas" reales (es decir, -o \o |dependiendo de la dirección) sólo para aclarar lo que se entiende por una "línea" de espacio.

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

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

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

Desafío

Dado n ≥ 1 y una de las 8 direcciones posibles, escriba una función o programa que genere el símbolo ASCII de tamaño n en la dirección dada.

Entrada y salida

Se permite cualquier formato de entrada coherente y razonable. No necesita asignar direcciones a los enteros 1 a 8 de la misma manera que lo hice yo; si alguna otra forma de especificar la dirección es más fácil, continúe. Pero di lo que hiciste si no está claro.

La salida consistirá o, *, espacios (U + 0020) y saltos de línea (U + 000A) que producen el splat ASCII. Se permiten espacios en blanco iniciales, finales y de otro modo en cualquier línea.

Reglas

Este es el . Aplican reglas estándar.

Más ejemplos

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *
ngm
fuente

Respuestas:

3

Carbón , 20 18 bytes

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

Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:

↘EN×*⊕ι

Dibuja un triángulo diagonal de símbolos.

M↗o

Coloca el huevo.

UE¬﹪η²

Para rotaciones uniformes, expanda el splat horizontalmente para que coincida con el requisito de salida. Este requisito no coincide con las expectativas habituales de Charcoal. Pruébalo en línea! (detallado) para ver cómo se ve sin.

⟲η

Gire el splat según sea necesario, utilizando el siguiente código para obtener instrucciones:

321
4o0
567

Esta versión de 37 31 bytes evita espacios en blanco extraños al girar solo en ángulos rectos:

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

Pruébalo en línea! El enlace es a la versión detallada del código.

Neil
fuente
2

Jalea , 37 bytes

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

Pruébalo en línea!

Direcciones:

[1234 45 56 67 78][-21-34 42-13-4 4]

Erik el Outgolfer
fuente
1

Python 2 , 185 bytes

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

Pruébalo en línea!

La numeración es de 0 a 7, como sigue:

1 6 0
7 o 5
2 4 3

Notas: La mayor parte del trabajo es generar los patrones básicos para (en mi sistema de numeración) 0y 4. Luego, la función ggira la matriz a90 grados d%4por recursión para generar los otros resultados.

Chas Brown
fuente