Các lát chữ cái hình tam giác


15

Cho một số đầu vào ntừ 1đến 26(hoặc 0đến 25), xuất bảng chữ cái đọc từ trái sang phải lên đến và bao gồm chữ cái tương ứng, với a=1, b=2, c=3, .... Vòng xoắn là các chữ cái cũng phải được lặp lại theo chiều dọc tương ứng với vị trí của chúng trong bảng chữ cái. Các số lẻ (khi được chỉ định 1) phải được cân bằng trên đường ngang, trong khi các số chẵn nên xen kẽ giữa việc ưu tiên đỉnh hoặc đáy (bạn có thể chọn hướng nào sẽ đi trước). Nếu bạn đang lập chỉ mục 0, thì trao đổi lẻ / chẵn trong câu trước.

Worded một cách khác - nếu giá trị tự chữ cái của một bức thư ?#, sau đó cần có #bản sao của lá thư trong đầu ra, tất cả trong số họ trong #cột thứ. Các chữ cái này phải được cân bằng đồng đều ở trên và dưới đường kẻ ngang có a. Nếu các chữ cái không thể được cân bằng đồng đều, thì thay thế có chữ "phụ" bên trên và bên dưới dòng đó.

Dưới đây là sáu đầu ra đầu tiên ( n = 1,2,3,4,5,6, được lập chỉ mục 1, chọn thay thế xuống dưới cùng trước), được phân tách bằng các dòng mới, để bạn có thể xem mẫu. Nhận xét giải thích mô hình bắt đầu với #.

a         # On a line by itself

ab
 b        # The "extra" letter is below the horizontal

  c
abc       # The 'c' splits evenly
 bc

   d      # Because the 'b' was below, the extra 'd' must be above
  cd
abcd
 bcd


   de
  cde
abcde     # The 'e' balances
 bcde
    e

   def
  cdef
abcdef
 bcdef
    ef
     f    # Since the 'd' was above, the extra 'f' must be below

(bỏ qua một vài đến n=26)

                       xyz
                      wxyz
                   tuvwxyz
                  stuvwxyz
               pqrstuvwxyz
              opqrstuvwxyz
           lmnopqrstuvwxyz
          klmnopqrstuvwxyz
       hijklmnopqrstuvwxyz
      ghijklmnopqrstuvwxyz
   defghijklmnopqrstuvwxyz
  cdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
 bcdefghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
     fghijklmnopqrstuvwxyz
        ijklmnopqrstuvwxyz
         jklmnopqrstuvwxyz
            mnopqrstuvwxyz
             nopqrstuvwxyz
                qrstuvwxyz
                 rstuvwxyz
                    uvwxyz
                     vwxyz
                        yz
                         z

Quy tắc

  • Bạn có thể chọn xuất ra chữ hoa hoặc chữ thường, nhưng nó phải nhất quán.
  • Đầu ra không thể có khoảng trắng bên ngoài, ngoại trừ một dòng mới tùy chọn.
  • Một chương trình đầy đủ hoặc một chức năng được chấp nhận.
  • Số đầu vào có thể được thực hiện thông qua bất kỳ định dạng phù hợp .
  • Sơ hở tiêu chuẩn bị cấm.
  • Đây là vì vậy tất cả các quy tắc chơi gôn thông thường đều được áp dụng và mã ngắn nhất (tính bằng byte) sẽ thắng.

Câu trả lời:


5

Thạch ,2018 byte

Ḷ&2’×ḶỤØaḣ⁸¤ṫW€UGU

Cổng câu trả lời Python của tôi. Hãy thử trực tuyến.

EDIT: Dennis đã lưu hai byte bằng cách sử dụng (tăng cấp) thay vì Þ(sắp xếp theo)!


8

Con trăn 2 101 99 byte

r=range(input())
for x in sorted(r,key=lambda x:x*-(x&2)):print bytearray([97+i,32][i<x]for i in r)

xsot đã lưu hai byte bằng cách nhận ra x*-(x&2)đủ là một khóa sắp xếp - nửa dưới của hình ảnh kết quả không bị ảnh hưởng do sortedđảm bảo sắp xếp ổn định.


Bạn không thể thả a -để xuất các dòng theo thứ tự ngược lại, mà tôi tin là cho phép?
Neil

Tôi nghĩ rằng x*-(x&2)công việc.
xsot



2

JavaScript (ES6), 127 126 byte

n=>[...Array(n).keys()].sort((a,b)=>a*~-(a&2)-b*~-(b&2)).map(i=>` `.repeat(i)+`abcdefghijklmnopqrstuvwxyz`.slice(i,n)).join`\n`

Sử dụng thủ thuật sắp xếp của @ Lynn. Viết ra toàn bộ bảng chữ cái rẻ hơn hai byte so với tính toán. Chỉnh sửa: Đã lưu 1 byte nhờ @ETHproductions vì tôi quên lưu ý rằng \nthực sự đại diện cho ký tự dòng mới. (Tôi không thích đặt dòng mới theo nghĩa đen trong câu trả lời của mình khi dòng quá dài.)


Lưu hai byte trên bảng chữ cái: btoa`...` nơi ...được thay thế bằng kết quả của atob`abcdefghijklmnopqrstuvwxyzz` . (Ngoài ra, bạn có thể thay thế \nbằng một dòng mới theo nghĩa đen.)
ETHproductions

@ETHproductions Tôi lấy nó mà sẽ sử dụng mã hóa ISO, chứ không phải UTF?
Neil

Có nó sẽ. Chúng tôi có được phép sử dụng ISO-8859-1 thay vì UTF-8 trong JS không?
Sản phẩm ETH

@ETHproductions Có lẽ nhưng tôi dường như không thể làm cho nó hoạt động, vì vậy tôi sẽ không hiển thị nó.
Neil
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.