Вывести ASCII «сплат»


10

Если вы бросите яйцо ASCII в заданном направлении, вы получите знак ASCII размера n . Он «начинается» с единицы o(желток) и продолжается в заданном направлении «линиями», состоящими от 2 до n * . Символы *"s" разделены одним "пробелом", а " oи" все строки *"s" разделены "строками" "space".

Направление знака может быть любым из восьми направлений 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 -байтовая версия 37 позволяет избежать посторонних пробелов, вращая только под прямым углом:

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

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


2

Желе , 37 байт

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

Попробуйте онлайн!

Направления:

[12345678][-21-342-13-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помощью рекурсии, чтобы получить другие результаты.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.