Виведіть ASCII "splat"


10

Якщо ви кинете яйце ASCII в заданому напрямку, ви закінчите вказівкою ASCII розміром n . Він "починається" з одного o(жовток) і продовжується в заданому напрямку "лініями", що складаються з 2 до n * 's. У *«и відокремлені один від одного одним" простір ", а oй все" лінії " *» S відокремлені один від одного "ліній" "простору".

Напрямок бризки може бути будь-яким з восьми напрямків o, наприклад:

1 2 3
4 o 5
6 7 8

Ось приклади ASCII знаків розміру 4 в напрямках 5, 2і 3відповідно. Зліва фактичне ASCII знак, а праворуч той же знак , але з «лініями» «простору» замінені фактичними «лініями» (тобто -або \або в |залежності від напрямку) тільки уточнити , що мається на увазі під "лінія" простору.

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

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

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

Виклик

Враховуючи n ≥ 1 та один із 8 можливих напрямків, напишіть функцію або програму, яка виводить ASCII-знак розміру n у заданому напрямку.

Вхід і вихід

Дозволений будь-який послідовний, розумний формат введення. Не потрібно відображати вказівки до цілих чисел 1 до 8 так само, як я це робив - якщо інший спосіб задати напрямок простіше, продовжуйте. Але скажіть, що ви зробили, якщо це не ясно.

Вихід буде складатися з o, *, простору (U + 0020) і нового рядка (U + 000A) , які виробляють ASCII знак оклику. Ведучий, трейлінг, інакше додаткове пробіл дозволено в будь-якій лінії.

Правила

Це . Діють стандартні правила.

Більше прикладів

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *

Відповіді:


3

Вугілля деревне , 20 18 байт

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

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Пояснення:

↘EN×*⊕ι

Намалюйте діагональний трикутник шлейфів.

M↗o

Помістіть яйце.

UE¬﹪η²

Для рівномірних обертів розгорніть шнур горизонтально, щоб відповідати вимогам виходу. Ця вимога не відповідає звичайним очікуванням деревного вугілля. Спробуйте в Інтернеті! (дослівне) для того, як це виглядає без.

⟲η

Обертайте значок як потрібно, використовуючи наступний код для вказівки:

321
4o0
567

Ця 37 -байтна версія дозволяє уникнути сторонніх пробілів, обертаючись лише під прямим кутом:

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

Спробуйте в Інтернеті! Посилання на багатослівну версію коду.



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за допомогою рекурсії для отримання інших результатів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.