Xuất ra một splat ASCII


10

Nếu bạn ném một quả trứng ASCII theo một hướng nhất định, bạn sẽ kết thúc với một biểu tượng ASCII có kích thước n . Nó "bắt đầu" với một o(lòng đỏ) và tiếp tục theo một hướng nhất định với "đường" bao gồm 2 đến n * 's. Các *'được phân tách bằng một "không gian" và ovà tất cả các "dòng" của *' được phân tách bằng "các dòng" của "không gian".

Hướng của splat có thể là một trong tám hướng từ o, ví dụ:

1 2 3
4 o 5
6 7 8

Dưới đây là ví dụ về các sọc ASCII kích thước 4 hướng 5, 23tương ứng. Ở bên trái là ASCII splat thực tế, và bên phải là các ký hiệu tương tự, nhưng với "dòng" của "không gian" thay bằng "đường dây" thực tế (tức là -hay \hoặc |tùy thuộc vào hướng) chỉ cần làm rõ thế nào là một "Dòng" không gian.

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

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

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

Thử thách

Cho n ≥ 1 và một trong 8 hướng có thể, hãy viết một hàm hoặc chương trình xuất ra biểu tượng ASCII có kích thước n theo hướng đã cho.

Đầu vào và đầu ra

Bất kỳ định dạng đầu vào phù hợp, hợp lý đều được cho phép. Bạn không cần ánh xạ chỉ đường tới các số nguyên 1 đến 8 giống như cách tôi đã làm - nếu một số cách khác để xác định hướng dễ dàng hơn, hãy tiếp tục. Nhưng hãy nói những gì bạn đã làm nếu nó không rõ ràng.

Kết quả sẽ bao gồm o, *, không gian (U + 0020) và dòng mới (U + 000A) mà tạo ra splat ASCII. Dẫn đầu, theo dõi, nếu không khoảng trắng thêm được phép trên bất kỳ dòng nào.

Quy tắc

Đây là . Quy tắc chuẩn áp dụng.

Thêm ví dụ

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *

Câu trả lời:


3

Than , 20 18 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

↘EN×*⊕ι

Vẽ một tam giác chéo của splats.

M↗o

Đặt trứng.

UE¬﹪η²

Đối với các phép quay chẵn, mở rộng splat theo chiều ngang để phù hợp với yêu cầu đầu ra. Yêu cầu này không phù hợp với mong đợi thông thường của Char than. Hãy thử trực tuyến! (verbose) cho nó trông như thế nào mà không có.

⟲η

Xoay splat theo yêu cầu, sử dụng mã sau đây để chỉ đường:

321
4o0
567

Đây 37 phiên bản 31-byte tránh khoảng trắng không liên quan bởi chỉ quay ở góc bên phải:

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã.


2

Thạch , 37 byte

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

Hãy thử trực tuyến!

Hướng:

[1234567số 8][-21-342-13-4]


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

Hãy thử trực tuyến!

Việc đánh số là từ 0 đến 7, như sau:

1 6 0
7 o 5
2 4 3

Lưu ý: Hầu hết công việc là tạo các mẫu cơ bản cho (trong hệ thống đánh số của tôi) 04. Sau đó, hàm gxoay mảng a90 độ d%4thông qua đệ quy để tạo ra các kết quả khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.