Keluarkan “percikan” ASCII

10

Jika Anda melemparkan telur ASCII ke arah tertentu, Anda akan mendapatkan percikan ASCII dengan ukuran n . Ini "dimulai" dengan satu o(kuning telur), dan berlanjut ke arah tertentu dengan "garis" yang terdiri dari 2 hingga n * . Ini *dipisahkan oleh satu "ruang", dan odan semua "garis" *dipisahkan oleh "garis" dari "ruang".

Arah percikan dapat berupa salah satu dari delapan arah o, misalnya:

1 2 3
4 o 5
6 7 8

Berikut adalah contoh percikan ASCII ukuran 4 dalam arah 5, 2dan 3masing - masing. Di sebelah kiri adalah ASCII percikan yang sebenarnya, dan di sebelah kanan adalah gambar percikan sama tetapi dengan "garis" dari "ruang" diganti dengan yang sebenarnya "garis" (yaitu -atau \atau |tergantung pada arah) hanya untuk memperjelas apa yang dimaksud oleh "garis" ruang.

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

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

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

Tantangan

Diberikan n ≥ 1 dan salah satu dari 8 arah yang mungkin, tulis fungsi atau program yang menampilkan percikan ASCII dengan ukuran n dalam arah yang diberikan.

Masukan dan keluaran

Format input yang konsisten dan masuk akal diizinkan. Anda tidak perlu memetakan arah ke bilangan bulat 1 hingga 8 dengan cara yang sama seperti yang saya lakukan - jika ada cara lain untuk menentukan arah lebih mudah, silakan. Tetapi katakan apa yang Anda lakukan jika tidak jelas.

Output akan terdiri dari o,, *spasi (U + 0020) dan baris baru (U + 000A) yang menghasilkan percikan ASCII. Leading, trailing, jika tidak spasi putih diizinkan pada baris apa pun.

Aturan

Ini adalah . Aturan standar berlaku.

Lebih banyak contoh

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *
ngm
sumber

Jawaban:

3

Arang , 20 18 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

↘EN×*⊕ι

Gambarlah segitiga diagonal percikan.

M↗o

Tempatkan telur.

UE¬﹪η²

Untuk rotasi genap, perluas splat secara horizontal agar sesuai dengan persyaratan output. Persyaratan ini tidak sesuai dengan harapan Charcoal. Cobalah online! (verbose) untuk tampilannya tanpa.

⟲η

Putar percikan sesuai kebutuhan, menggunakan kode berikut untuk petunjuk:

321
4o0
567

Versi 37 byte 31 ini menghindari spasi kosong dengan hanya memutar di sudut kanan:

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode.

Neil
sumber
2

Jelly , 37 byte

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

Cobalah online!

Petunjuk arah:

[12345678][21342134]

Erik the Outgolfer
sumber
1

Python 2 , 185 byte

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

Cobalah online!

Penomorannya dari 0 hingga 7, sebagai berikut:

1 6 0
7 o 5
2 4 3

Catatan: Sebagian besar pekerjaan adalah untuk menghasilkan pola dasar untuk (dalam sistem penomoran saya) 0dan 4. Kemudian fungsi gmemutar array a90 derajat d%4kali melalui rekursi untuk menghasilkan hasil lainnya.

Chas Brown
sumber