Wyprowadza „ikonę” ASCII

10

Jeśli rzucisz jajko ASCII w danym kierunku, otrzymujesz ikonę ASCII o rozmiarze n . „Zaczyna się” od jednego o(żółtko) i kontynuuje w danym kierunku z „liniami” składającymi się z 2 do n * . Te *są oddzielone jedną „spacją”, a owszystkie „linie” z nich *są oddzielone „liniami” z „przestrzeni”.

Kierunek ikona może być jednym z ośmiu kierunków o, na przykład:

1 2 3
4 o 5
6 7 8

Oto przykłady ikonami ASCII o wielkości 4 w kierunkach 5, 2a 3odpowiednio. Po lewej stronie jest rzeczywista ikona ASCII, a po prawej stronie jest taka sama ikona ale z „linii” w „przestrzeni” zastąpiono rzeczywistych „linii” (czyli -czy \lub |w zależności od kierunku) po prostu wyjaśnić, co rozumie się przez „linia” przestrzeni.

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

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

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

Wyzwanie

Biorąc pod uwagę n ≥ 1 i jeden z 8 możliwych kierunków, napisz funkcję lub program, który generuje ikonę ASCII o rozmiarze n w danym kierunku.

Wejście i wyjście

Dowolny spójny, rozsądny format wejściowy jest dozwolony. Nie musisz mapować wskazówek dojazdu do liczb całkowitych od 1 do 8 w taki sam sposób, jak ja - jeśli jakiś inny sposób określania kierunku jest łatwiejszy, kontynuuj. Ale powiedz, co zrobiłeś, jeśli nie jest to jasne.

Dane wyjściowe będą składać się z o, *spacji (U + 0020) i nowych linii (U + 000A), które wytwarzają ikonę ASCII. Wiodące, końcowe, w przeciwnym razie dozwolone są dodatkowe białe znaki w dowolnej linii.

Zasady

To jest . Obowiązują standardowe zasady.

Więcej przykładów

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *
ngm
źródło

Odpowiedzi:

3

Węgiel drzewny , 20 18 bajtów

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

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

↘EN×*⊕ι

Narysuj ukośny trójkąt ikon.

M↗o

Umieść jajko.

UE¬﹪η²

Aby uzyskać równomierne obroty, rozwiń ikonę poziomo, aby dopasować ją do wymagań wyjściowych. Ten wymóg nie spełnia zwykłych oczekiwań Węgla. Wypróbuj online! (pełne), jak to wygląda bez.

⟲η

Obróć ikonę zgodnie z wymaganiami, używając następującego kodu wskazówek:

321
4o0
567

Ta 37 -bajtowa wersja 37 pozwala uniknąć obcych białych znaków, obracając się tylko pod kątem prostym:

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

Wypróbuj online! Link jest do pełnej wersji kodu.

Neil
źródło
2

Galaretka , 37 bajtów

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

Wypróbuj online!

Kierunki:

[12)3)45678][-2)1-3)42)-13)-4]

Erik the Outgolfer
źródło
1

Python 2 , 185 bajtów

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

Wypróbuj online!

Numeracja wynosi od 0 do 7, jak następuje:

1 6 0
7 o 5
2 4 3

Uwagi: Większość pracy polega na generowaniu podstawowych wzorców dla (w moim systemie numeracji) 0i 4. Następnie funkcja gobraca tablicę o a90 stopni d%4poprzez rekurencję, aby wygenerować inne wyniki.

Chas Brown
źródło