Chuỗi lục giác ASCII


13

Vấn đề

Vẽ một chuỗi hình lục giác xdài, mỗi cạnh có ychiều dài

Đầu vào

x - chiều dài của chuỗi <= 50

y - chiều dài của mỗi bên <= 50

Ví dụ

x=1,y=1

 _
/ \
\_/

x=4,y=1

 _   _
/ \_/ \_
\_/ \_/ \
  \_/ \_/

x=3,y=2

  __      __
 /  \    /  \
/    \__/    \
\    /  \    /
 \__/    \__/
    \    /
     \__/

Quy tắc

  • Câu trả lời hợp lệ ngắn nhất tính bằng byte thắng.

  • Hàng đầu và dấu vết mới cho phép.

  • Trailing trắng cho phép.



2
Chờ đợi câu trả lời Hexagony bắt buộc ...
LLlAMnYP


@ user202729 Nếu bạn viết một cái bây giờ, chúng tôi không bao giờ phải tìm hiểu điều gì xảy ra.
LiefdeWen

Dòng đầu tiên trong Hexagony . Rõ ràng cần phải tăng kích thước cạnh cho phần còn lại.
dùng202729

Câu trả lời:


8

Than , 34 byte

NθFN«M∧﹪ι²⊗θ↓P×_θ←↖θ→↗θ×_θ↓↘θ←P↙θ↗

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Lấy các tham số trong kích thước thứ tự, đếm. Giải trình:

Nθ

Nhập kích thước hình lục giác.

FN«

Lặp lại số lượng hình lục giác đầu vào.

M∧﹪ι²⊗θ↓

Trên các hình lục giác thay thế, di chuyển xuống toàn bộ hình lục giác, sao cho hình lục giác tiếp theo được vẽ ở phía dưới bên phải thay vì phía trên bên phải.

P×_θ

Vẽ đáy.

←↖θ

Vẽ phía dưới bên trái.

→↗θ

Vẽ phía trên bên trái.

×_θ

Vẽ đỉnh.

↓↘θ

Vẽ phía trên bên phải.

←P↙θ

Vẽ phía dưới bên phải.

Giả sử hình lục giác tiếp theo nằm ở phía trên bên phải.


4

Python 2 , 254 224 byte

def f(n,w):
 a=w*2
 for j in range(1+w*3):print''.join([[[' ',[' /'[i%w==-j%w],' \\'[i%w==~-j%w]][i/a+~-j/w&1]][(j>0)*(i/w>=(j>a))*((i/w/n<2)or(n%-2<~-j/w<3-n%2))],' _'[(j+i/w%4/2*w)%a<(i<n*a)]][i/w%2]for i in range(-~n*a)])

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


Python 2 , 264 229 byte

def f(n,w):
 c=2*w;r=[[' ']*(-~n*c)for _ in' '*(1+w*3)]
 for i in range(w):
  for j in range(n):a=i+j*2*w;b=j%2*w;r[b][w+a],r[c+b][w+i+j*c],r[b+w-i][a],r[b+c-i][a+c],r[b+w-~i][a],r[b-~i][a+c]=r'__//\\'
 for l in r:print''.join(l)

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


@ovs Cảm ơn rất nhiều :)
TFeld


3

SOGL V0.12 , 32 31 byte

ā.{e╚øΚe╔*ο⁴↔±┼┼╬±fe«*If2%e*I╬5

Hãy thử nó ở đây!

Giải trình:

ā                              push an empty array - the canvas
 .{                            repeat input times
   e╚                            push a diagonal the length of the variable E (by default: next input)
     øΚ                          prepend a line to it
       e╔*ο                      push ["_"*E]
           ⁴                     copy that diagonal
            ↔±                   and reverse it horizontally
              ┼┼                 add the 3 parts together
                ╬±               and palindromize vertically - one hexagon is finished
                  fe«*I          push counter*E*2 + 1 (the counter is 0-based)
                       f2%e*I    push counter%2 * E + 1
                             ╬5  at [counter*E*2+1; counter%2*E+1] insert the hexagon in the canvas

3

Befunge, 230 228 225 byte

+&#92#<*:0< vp93*p92+1*3:p91:&+1p
>1+:29g-!#@_>:1-19g+:19g/1-:2*49p2%!2*:1+59p19g*\19g%+69p01v
,>*19g3*79g-1-69g-!2*49g1+0g2%*79g69g-!49g0g2%*++4g,1+:39g-v
^^3*!-*g95g91+1g96!-g95%4p04p01:`\g90p05`0::/g91:p97%*4g91:_$55+
 \/_

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


1

JavaScript (ES6), 215 byte

Đưa đầu vào theo cú pháp currying (y)(x).

y=>(F=(x,c=!(p=y-1,w=x*y*2+y,a=[...(' '.repeat(w++)+`
`).repeat(3*y+1)],g=(d,k)=>k!=y?g(d,-~k,a[p+=d]='_\\/'[c%3]):c++))=>x--?F(x,g(1),g(w+1),p++,g(w-1),g(-1),p+=w,g(~w),p--,g(1-w),p+=(c/6&1?w:-w)*y-w+y*2):a.join``)

Bản giới thiệu


0

Canvas , 25 byte

ø╶{╷⁷«×¹2%⁷×╵⁷⇵_× ⁷/∔×╬│╋

Hãy thử nó ở đây!

Giải thích (một số ký tự đã được thay đổi để trông không gian):

ø╶{╷⁷«×¹2%⁷×╵⁷⇵_× ⁷/∔×╬│╋
ø                          push an empty canvas
 ╶{                        for 1..input
   ╷                         decrease (so this starts with 0)
    ⁷«×                      multiply by X*2; X coordinate of new hexagon done
       ¹2%                   push 0-indexed counter%2
          ⁷×                 multiply by X
            ╵                and increment; Y coordinate done
             ⁷⇵              push ceil(X/2), saving the remainder
               _×            repeat "_" that many times
                  ⁷/         push " " and an ASCII diagonal with size X
                    ∔        prepend verticall the space before the diagonal
                              done so there's space for the underscores
                     ×       and append the underscores horizontally to the diagonal
                      ╬│     quad-palindromize with Y overlap of 1
                              and X overlap of the remainder taken before
                        ╋    and at the before defined coords ((I-1)*X*2; (i%2)*X + 1)
                              insert the hexagon in the canvas
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.