Bảng chữ cái chéo


66

Không có đầu vào, nhiệm vụ của bạn là tạo ra các mục sau:

a
 b
  c
   d
    e
     f
      g
       h
        i
         j
          k
           l
            m
             n
              o
               p
                q
                 r
                  s
                   t
                    u
                     v
                      w
                       x
                        y
                         z

Bất thường, nhiệm vụ của bạn là tạo từng chữ cái trong bảng chữ cái, với các khoảng trắng trước nó bằng với vị trí của nó trong bảng chữ cái trừ đi một chữ cái.

Nếu bạn in cái này, nó phải xuất hiện như trên. Khoảng trắng bên ngoài không ảnh hưởng đến ngoại hình, cũng như một dòng mới, được cho phép. Bạn có thể sử dụng tất cả chữ thường hoặc tất cả chữ hoa.

Bạn cũng có thể trả về hàm này từ một hàm theo các quy tắc thông thường, dưới dạng một chuỗi với dòng mới hoặc danh sách các chuỗi.

Đây là , vì vậy câu trả lời ngắn nhất bằng byte thắng!


Các không gian cần phải là không gian ASCII thực hay tôi có thể cung cấp đầu ra như thế a<VERTICAL-TAB>b<VERTICAL-TAB>c...nào không? Nếu có một số ký tự backspace trong đó thì sao? Miễn là kết quả hình ảnh là như nhau?
Chấn thương kỹ thuật số

@DigitalTrauma miễn là nó xuất hiện giống nhau, tôi không quan tâm bạn sử dụng loại khoảng trắng nào.
Stephen

Tôi có thể sử dụng các tab thay vì dấu cách không?

@ yamboy1 hmm, có lẽ là không. Hầu hết các tab được đặt thành một số lượng lớn các khoảng trắng - nếu đường chéo của bạn trông giống như có 4khoảng trắng trước đó b, nó sẽ không trông rất chéo. Nếu nó trông giống như độ dốc là ~ -1thì tốt thôi.
Stephen

không ảnh hưởng đến ngoại hình bao gồm có thêm một không gian hàng đầu hoặc 2?
MildlyMilquetoast

Câu trả lời:


87

Than , 2 byte

↘β

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

Làm sao?

 β - the lowercase alphabet
↘  - direction

Chính xác là loại thử thách mà Char than được thiết kế ban đầu.


4
Ngôn ngữ phù hợp :)
Stephen

2
Điều này nhắc nhở tôi, có lẽ tôi nên làm việc trên Crayon thêm một chút nữa ... Tôi tin rằng đây ↘"abc ... xyz"qsẽ là chương trình làm việc ngắn nhất. ( Hãy thử trực tuyến! ) ↘``26O;)qSẽ hoạt động (bắt đầu bằng một backtick; với mỗi I trong 0 ... 25, hãy bật I ẩn, tăng backtick và đầu ra), nhưng nó gây ra lỗi "stack stack" vì một số lý do .. .
Sản phẩm ETH

2
2 byte?! Trong mã hóa là mũi tên SOUTH EAST một byte?
Wyck

6
@Wyck Char than (lưu ý: đầu cơ) sử dụng trang mã tùy chỉnh, có thể được nén thành các hướng dẫn 1 byte. Điều đó hợp pháp cho Code Golf. codegolf.meta.stackexchange.com/questions/9428/ từ
Draco18s

14
@StephenS, tôi nghĩ bạn có nghĩa là ngôn ngữ dưới cùng bên phải :)
Wossname

18

C, 45 byte

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

Cảm ơn @Dennis vì đã tiết kiệm 5 byte!


9
Hoạt động trên máy của tôi ™
Lemon phá hủy

Tôi nghĩ rằng bạn phải khởi tạo hoặc thiết lập lại itại một số điểm. Ít nhất là trên TIO, f()chỉ hoạt động một lần .
Dennis

@Dennis Ah, bạn nói đúng. Đã sửa lỗi đó.
Doorknob

f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}tiết kiệm một vài byte.
Dennis

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}cho 41 byte - đảm bảo chạy nó trên thiết bị đầu cuối thực tế (vâng, điều này được cho phép )
NieDzejkob

13

05AB1E , 14 8 6 byte

-2 byte nhờ @Emigna

AvyNú»

Làm thế nào nó hoạt động

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

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

Phiên bản gốc, 14 byte

26FNð×N65+ç«}»

Bạn có thể lưu thêm 2 byte với AvyNú».
Emigna

@Emigna: Cảm ơn! Sẽ chỉnh sửa nó trong.
Neil A.

ƶcó vẻ rất hoàn hảo, nhưng nó không phải là :(.
Magic Octopus Urn

Λcó lẽ chưa có sẵn tại thời điểm đó, nhưng 26A3Λtiết kiệm một byte.
Kevin Cruijssen

1
@MagicOctopusUrn ₂A3Λthậm chí còn ngắn hơn.
Kevin Cruijssen

12

JavaScript (ES6), 60 59 byte

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

Hàm đệ quy trả về một chuỗi có dòng mới.


1
Whoa, thật là lén lút. Chuyển đổi một số trong phạm vi 10 thành 36 thành một số trong một cơ sở kỳ lạ. Chưa hiểu tại sao cơ sở phải tăng quá.
Steve Bennett

2
@SteveBennett Đúng, nhưng n.toString(++n)+f(n)ngắn hơn một byte n.toString(36)+f(n+1).
Sản phẩm ETH

1
Bạn có thể làm f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""trong 55.
Arnauld

1
Lưu một byte với một số ES8 : "".padEnd(n-10)+n.toString(++n).
Xù xì

1
@Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):sdường như được cho phép.
Shaggy

12

Ruby , 28 byte

26.times{|a|puts" "*a<<97+a}

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

Giải trình:

Toán tử << trên một chuỗi trong Ruby thực hiện thủ thuật, như được giải thích trong Tài liệu

  • str << số nguyên → str

  • str << obj → str

Nối các đối tượng có liên quan đến đối tượng đã cho str. Nếu đối tượng là một Integer, nó được coi là một mật mã và được chuyển đổi thành một ký tự trước khi ghép.


12

R, 38 37 36 byte

write(intToUtf8(diag(65:90),T),1,26)

(Việc sử dụng writeđược lấy cảm hứng từ câu trả lời của @ Giuseppe .)


3
Tôi thề tôi đã thử nó nhưng không thể làm cho nó hoạt động! Làm tốt. Bạn có thể lưu 1 byte bằng cách sử dụng 65:90, vì chữ hoa được cho phép.
dùng2390246

@ user2390246 Cảm ơn bạn đã chỉ ra!
Sven Hohenstein

bạn có thể sử dụng 1thay vì ""cạo một byte khác.
Giuseppe

@Giuseppe Cảm ơn bạn đã chỉ ra!
Sven Hohenstein

11

Vim, 29 byte

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

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

Có nghĩa là nhấn phím quay lại

<Esc> có nghĩa là nhấn phím thoát

Cái này hoạt động ra sao?

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters

Hãy thử trực tuyến! Bạn có thể sử dụng điều này để chứng minh điều đó (V dựa trên Vim và chủ yếu là tương thích ngược trừ khi mặc định tự động mặc định tắt). Ngoài ra, ít quan trọng hơn, bạn đã bỏ lỡ +lời giải thích trong đó đã ném tôi trong một giây.
nmjcman101

Cảm ơn @ nmjcman101! Tôi đã cố gắng tìm một số cách để thử vim trực tuyến và không bao giờ biết rằng về V
jmriego

Bạn có thể sử dụng thay vì <Esc>. Nó có vẻ tốt hơn một chút theo ý kiến ​​của tôi.
Thuật sĩ lúa mì

Bạn có thể lưu một byte nếu bạn làm {thay vìgg
DJMcMayhem

Bạn có thể sử dụng 2↵ thay vì và có thể Y thay vì y $
GB

11

Python 2 , 36 byte

n=65;exec"print'%*c'%(n,n);n+=1;"*26

Điều này tận dụng khoảng trắng bên ngoài không ảnh hưởng đến quy tắc xuất hiện .

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

Phiên bản thay thế, 38 byte

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

Điều này tạo ra đầu ra chính xác từ thông số kỹ thuật thách thức.

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


Làm thế nào %*cthậm chí làm việc?
Rò rỉ Nun

%*<identifier>có hai đối số: chiều dài để đệm nó và điều thực tế để thay thế. Một số printftriển khai thậm chí còn có nhiều tính năng tối nghĩa hơn, chẳng hạn như %1$<identifier>tôi đã sử dụng ở đây .
Dennis


8

Bash thuần khiết, 13

echo {a..z}^K^H

Ở đây ^K^Hlà các thẻ dọc và các ký tự điều khiển ASCII backspace. Kết xuất xxdcủa tập lệnh này như sau - sử dụng xxd -rđể tạo lại tập lệnh thực tế:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}là một mở rộng cú đúp bash tiêu chuẩn để sản xuất a b c ... z(tách không gian)
  • các ^Ktab dọc xuống con trỏ xuống một dòng vào vị trí tương đương
  • các ^Hphím lùi di chuyển con trỏ trở lại một để xóa không gian tách

Hãy thử trực tuyến . coltacđược sử dụng trong phần chân trang để hiển thị chính xác trong cửa sổ trình duyệt, nhưng điều này là không cần thiết trong một thiết bị đầu cuối thông thường.


Nếu các ký tự điều khiển không chính thống ở trên trong đầu ra quá nhiều cho bạn, thì bạn có thể làm điều này:

Bash + tiện ích chung, 24

echo {a..z}^K^H|col -x|tac

Ở đây ^K^Hlà các thẻ dọc và các ký tự điều khiển ASCII backspace. Kết xuất xxdcủa tập lệnh này như sau - sử dụng xxd -rđể tạo lại tập lệnh thực tế:

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

Hãy thử trực tuyến . Trình duyệt dọc và backspace có thể được hiển thị ẩn bởi trình duyệt của bạn, nhưng chúng ở đó (vô hình trên chrome, hiển thị trên firefox).

  • col -x tái hiện đầu vào sao cho các ký tự điều khiển vui nhộn được thay thế bằng dấu cách và dòng mới để cho cùng một kết quả trực quan
  • đối với một số lý do colđầu ra dòng theo thứ tự ngược lại. tacsửa nó

Điều đó thật tuyệt :) (và cảm ơn meta và @Dennis đã gợi ý cách sắp xếp câu trả lời trên codegolf theo hoạt động thay vì điểm số, để có câu trả lời tốt hơn được đưa ra thay vì các đoạn mã codegolf (rất nhàm chán) được xây dựng trong đó: codegolf.meta.stackexchange. com / câu hỏi / 10127 / Nhận )
Olivier Dulac

Nhiều thiết bị đầu cuối hiển thị ^Knhư con trỏ lên, đó là hành vi colphải được mô phỏng ở đây.
Neil

@ Không, điều đó có ý nghĩa - coltrang này gọi VT là "nguồn cấp dữ liệu ngược". xterm, gnome-terminal và OSX terminal đều rơi xuống một dòng mặc dù ...
Chấn thương kỹ thuật số

8

Brain-Flak , 124, 116 , 106 byte

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

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

Giải trình:

Câu trả lời này lạm dụng Stack Chiều cao Nilad , nhưng theo một cách mới mà tôi chưa từng sử dụng trước đây, điều mà tôi khá tự hào. Ngoài ra, câu trả lời không quá thông minh.

Vì vậy, phân tích các ký tự được sử dụng trong nghệ thuật ASCII này, thực sự có ba giá trị thường được sử dụng:

  • 32 (không gian),

  • 64 (thêm 64 vào N để lấy chữ cái thứ N của bảng chữ cái) và

  • 10 (dòng mới)

Cũng như 26. (số vòng lặp) Và những con số này được đẩy ở các vị trí khác nhau, vì vậy chúng tôi thực sự không thể sử dụng lại các giá trị trung gian để làm cho số lượng lớn nhỏ hơn. Và đẩy tất cả cho những con số này là một con số khổng lồ 86 byte:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

Điều này thật kinh khủng. Vì vậy, đây là cách chúng tôi làm cho nó thuận tiện hơn. Cách tiếp cận rõ ràng là đẩy một chồng 32lên nhau, điều này làm cho 32đoạn trích của chúng ta trở thành: (<>({})<>)64đoạn trích của chúng ta trở thành (<>({})({})<>). Nếu chúng ta kết hợp lần đẩy 32 ban đầu với lần đẩy 26 ban đầu , chúng ta có thể tiết kiệm được 8 byte khoảng. (golf đầu tiên của tôi).

Nhưng đây là nơi mà tôi thực sự tự hào khi tham gia. Vì chúng tôi không sử dụng ngăn xếp thay thế cho bất cứ điều gì khác, chúng tôi cũng có thể chơi golf xuống số 10. Để làm điều này, chúng tôi sẽ đẩy 4 số tùy ý lên ngăn xếp ngay khi bắt đầu chương trình. Vì chúng tôi cũng đẩy 32, điều này làm tăng giá trị của []nilad, lên 5, giúp cho 10đoạn trích của chúng tôi thuận tiện hơn nhiều. Và may mắn cho chúng tôi, nó thực sự cho phép chúng tôi chơi golf đẩy 32 và 26 xuống!

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

Trở thành

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

Vì vậy, đây là một lời giải thích chi tiết:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}

7

V , 15 13 11 byte

¬azòÙr klDj

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

Giải trình

¬az         ' Insert a-z
   ò        ' Recursively
    Ù       ' Duplicate current line down
     r      ' Replace the first character with a ' '
       kl   ' Move up a line and right
         D  ' Delete from here to the end
          j ' Move back down

7

Google Sheets, 67 65 byte

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= ArrayFormula (IF (ROW (A1: Z) = COLUMN (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))

Làm rõ rằng mọi khoảng trắng sẽ làm, tôi đã sử dụng các ô trống rõ ràng

Đầu ra

Hãy cho tôi biết nếu điều này không được tính, nếu tôi đã hiểu nhầm số byte hoặc nếu tôi đã làm hỏng một số nghi thức vì đây là bài viết đầu tiên của tôi ở đây.

Chỉnh sửa: Hóa ra tôi có thể lưu 2 byte bằng cách bỏ "" vì các trang tính của Google sẽ chấp nhận giá trị if trống.


1
Chào mừng bạn đến với PPCG :) Có vẻ tốt! Tốt công việc đánh bại câu trả lời Google Sheets khác!
Stephen

7

APL (Dyalog) , 9 7 byte SBCS

-2 byte nhờ gợi ý của ngn.

↑⍨∘-⌸⎕A

[Dùng thử trực tuyến!] [TIO-j3o0ipjy]

⎕A chữ hoa A lph.us

 giữa mỗi cặp (phần tử, danh sách các chỉ mục), chèn hàm ngầm định sau:

↑⍨ từ phần tử (chữ cái) mất

 các…

- phủ định chỉ số số ký tự, nghĩa là nhiều ký tự từ phía sau, đệm ở mặt trước có khoảng trắng.

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


Đẹp. Nỗ lực J của tôi dài hơn một chút. Có một bản dịch của các động từ này sang J?
Giô-na

@Jonah Động từ: is {.is i.Adverbs: ¨is "0and is ~.
Adám

Cảm ơn. Có vẻ như bản dịch J mất một chút ngắn gọn:(a.{~97+i.26){."0~-1+i.26
Jonah

@ Adám đầu ra không như yêu cầu; gợi ý: sử dụng để xuất ra một ma trận thích hợp và lưu 2 byte
ngn

@ngn Bạn cũng có thể trả về (Mới) một danh sách các chuỗi. Nhưng tôi sẽ điều tra. Chỉnh sửa: Ồ vâng, tất nhiên!
Adám

6

Octave, 25 19 hay 12? byte

[diag(65:90)+32 '']

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

Giải pháp khác được đề xuất bởi @LuisMendo (12 byte) mà tôi đã thử nghiệm nó trong phiên bản Windows của Octave:

diag('a':'z')

Giải trình:

Tạo ma trận đường chéo của a:z.


@LuisMendo Trong tio tôi không thể tạo ra kết quả tương tự. Đó là một biểu thức, có thể được đánh giá, tạo ra kết quả mong muốn :)
rahnema1

Giải pháp được đề xuất bởi Luis dường như hoạt động trên TIO ngay bây giờ ... Có thể là phiên bản mới của Octave?
Stewie Griffin

Hay phiên bản mới của tio!?
rahnema1

6

Java 8, 72 71 70 61 byte

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

-1 byte bằng cách xuất ra bảng chữ cái viết hoa thay vì chữ thường.
-1 byte bằng cách in trực tiếp, thay vì trả về Chuỗi nhiều dòng.
-8 byte nhờ @ OliverGrégoire bằng cách sử dụng printftrực tiếp để thoát khỏi String s="";. Và cũng -1 byte bằng cách thay đổi ()->thành o->.

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


Việc thực hiện ngây thơ ngắn hơn tôi nghĩ. Bạn có thể lưu một byte bằng c=65(hoặc 64thực tế) để bạn không cần số có 3 chữ số. Có thể trả về một mảng thay vì chuỗi giúp bạn tiết kiệm bất kỳ byte nào khi bạn có thể loại bỏ +"\n"?
TheLethalCoder

@TheLethalCoder À, không biết chúng tôi được phép xuất bảng chữ cái in hoa. Lướt qua điều đó. Cảm ơn. Và bạn có ý nghĩa gì khi xuất ra một mảng? Giống như một mảng của mảng?
Kevin Cruijssen

1
@TheLethalCoder Bất kỳ mẹo nào đều được chào đón, cảm ơn. Nhưng trong trường hợp này nó sẽ không ngắn hơn. :)
Kevin Cruijssen

1
@Winter Về đề xuất đầu tiên của bạn, điều đó vẫn đang được thảo luận trong bài đăng này , nhưng đánh giá bằng số phiếu tôi đoán nó thực sự được cho phép kể từ bây giờ. Đối với lần thứ hai tôi không chắc chắn .. Cảm giác giống như gian lận / bẻ cong các quy tắc, đặc biệt là sau những cuộc thảo luận sôi nổi trong các bình luận của bài đăng và câu trả lời này .
Kevin Cruijssen

1
62 byte: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}sử dụng cùng một ý tưởng như trong một thử thách khác .
Olivier Grégoire

5

Thạch ,  10  9 byte

-1 byte nhờ Dennis (tránh giảm dần Jbằng cách sử dụng phạm vi thấp hơn 26Ḷ, trực tiếp)

26Ḷ⁶ẋżØaY

Một chương trình đầy đủ in kết quả.

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

( ØaJ’⁶ẋżđối với 7 là một liên kết đơn âm trả về danh sách danh sách các danh sách các ký tự, nhưng nó giống như [["a"],[" ","b"],[" ","c"],...]có thể không được chấp nhận.)

Tuy nhiên, tôi sẽ không ngạc nhiên nếu có một cách ngắn hơn mà tôi không nghĩ tới!

Làm sao?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)

Tôi thậm chí còn cho phép [["a"],[" ","b"],[" "," ","c"],...]vì một danh sách các ký tự là một định nghĩa thay thế cho một chuỗi, nhưng một tuple dường như không phù hợp :)
Stephen

Yeah đó là những gì tôi nghĩ.
Jonathan Allan

1
... Lưu ý rằng ở trên mỗi "..."danh sách là một danh sách các ký tự, vì vậy thực sự là [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]vì Jelly không có chuỗi, chỉ có danh sách.
Jonathan Allan

26Ḷ⁶ẋżØaYtiết kiệm một byte.
Dennis

ØaJ’⁶ẋżcho 7, cho phiên bản thay thế của bạn.
Leaky Nun


5

Alice , 22 20 byte

52E&waq'a+q&' d&o]k@

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

Mặc dù đầu ra là một chuỗi, nhưng hóa ra chế độ thứ tự không phải là cách để thực hiện thử thách này.

Giải trình

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

Giải pháp trước

["za/?rO&
' !]\"ohkw@/

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

Tôi đã trải qua khoảng mười giải pháp 23 byte trước khi tôi có thể tìm thấy giải pháp này.

Giải trình

Chương trình này sử dụng băng để theo dõi số lượng không gian cần xuất. Các chế độ Cardinal và ordinal sử dụng cùng một băng, nhưng chúng có các đầu băng riêng biệt. Hai chế độ có cách hiểu khác nhau về những gì họ nhìn thấy trên băng và chương trình khai thác triệt để sự khác biệt đó.

Các lệnh được thực hiện theo thứ tự sau:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate

5

Brainfuck, 103 byte

>-<-----[[<+>->>+++>-<<<]>++]<<<<<<<<<[-]>>>-[<[-]<[-]<[>+>+<<-]>>[<<+>>-]<[>>>>.<<<<-]<+>>>>.+>>.<<<-]

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

Vị trí của các biến là một cách ngẫu hứng.

Giải trình

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]

5

Google Sheets, 69 byte

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

Không có gì phức tạp ở đây. Bí quyết duy nhất là sử dụng ArrayFormulaROW(A1:A26)trả về 26 giá trị khác nhau cho JOINhàm. Đầu ra trông như thế này:

Đầu ra


Tôi nghĩ Excel 2016 có thể làm điều tương tự TEXTJOINnhưng tôi không thể nhập các công thức mảng trong phiên bản trực tuyến và chỉ có 2013. Công thức nên là thế này:

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

Nhập nó dưới dạng một công thức mảng ( Ctrl+ Shift+ Enter) sẽ thêm dấu ngoặc nhọn { }ở cả hai bên, đưa nó lên 67 byte. Bất cứ ai có thể xác minh nó hoạt động đều được chào đón để sử dụng nó như câu trả lời của riêng họ.


5

Hạt giống , 6014 byte

Tôi không nghĩ rằng điều này sẽ giành được bất kỳ giải thưởng nào, nhưng chỉ để giải trí, đây là một giải pháp trong Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Nó dịch sang chương trình Befunge sau:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v


4

Thêm ++ , 1069 byte

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

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

Vâng. Đó là mã hóa cứng. Tôi chắc chắn có một cách tốt hơn, và nếu bạn muốn tìm nó, hãy tiếp tục, nhưng cách này có vẻ hoạt động tốt nhất vì Add ++ rất khó để làm việc với bộ nhớ.


4

R , 59 49 47 byte

-10 byte nhờ djhurio

-2 byte nhờ Sven Hohenstein

write("diag<-"(matrix("",26,26),letters),"",26)

In ra thiết bị xuất chuẩn. Bị ruồng bỏ bởi người dùng2390246

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


Bạn có thể thay thế 26^2bằng 676để lưu một byte.
Doorknob

2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 byte)
djhurio

Với cùng số lượng byte, bạn có thể in ma trận bằng cách sử dụngcat(m,fill=27)
JAD

1
@djhurio "Với cùng số lượng byte"
JAD

1
@Giuseppe Lệnh "diag<-"(x, y)tương tự như diag(x) <- y. Giá trị không được gán cho một biến nhưng được trả về.
Sven Hohenstein

4

> <> , 46 44 42 byte

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

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

Giải trình

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

Đây là một cách lấy hoàn toàn khác với 46 byte trước đây của tôi vì vậy tôi cũng đã đưa TIO vào một byte duy nhất. 46 byte Hãy thử trực tuyến!

Dưới đây là một liên kết đến bài nộp của Emigna, đó là câu trả lời> <> đầu tiên nhưng tôi tin rằng câu trả lời của tôi đủ khác (và tiết kiệm một vài byte) để đảm bảo câu thứ hai.

Câu trả lời của Emigna


Và bây giờ chúng ta bị trói. Tốt nhất nếu bạn chơi golf một hoặc hai byte để chắc chắn;)
Emigna

@Emigna, tôi nghĩ rằng 3 byte đã lưu là đủ: o đoán tôi còn một số việc phải làm :)
Teal pelican

4

Haskell , 66 65 58 57 45 43 byte

Cảm ơn @nimi@maple_shaft vì đã lưu 12 14 byte.

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

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


1
Bạn sẽ nhận được số điểm tương tự nhưng đôi khi bạn có thể sử dụng <$thay vì sao chép:(' '<$[1..(fromEnum n-97)])
maple_shaft

2
Bạn có thể thay đổi đề xuất của @ maple_shaft thành (' '<$['b'..n]).
nimi

Vì các chức năng không tên được cho phép, không cần cho f=.
nimi

2
Btw, cùng số byte : ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi

4

PHP, 23 byte

Lưu ý: sử dụng mã hóa IBM-850.

<?=join(~¶,range(a,z));

Chạy như thế này:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

Giải trình

Tạo một mảng gồm tất cả các ký tự của bảng chữ cái, nối nó với một tab dọc dưới dạng keo.


4

Brainfuck , 80 byte

++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++[->[<<<.>>>->+<]>+[-<+>]<<<.+<<.>>>]

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

Định dạng:

++++++++[>+>++++
>++++++++>+++<<<
<-]>++>>+>++[->[
<<<.>>>->+<]>+[-
<+>]<<<.+<<.>>>]

Sử dụng hàm tạo nhân đơn giản để đặt một số hằng vào bộ nhớ, sau đó lặp lại quá trình in N khoảng trắng sau đó 'A' + Ncho N = 0..25.

Chú thích:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]

4

RProgN 2 , 5 byte

aS`\x0B.

\ x0B là một tab dọc

Điều này chỉ cần lấy bảng chữ cái chữ thường, tách nó và nối nó với các tab dọc. Điều này tạo ra hiệu ứng dự định trên một số Thiết bị đầu cuối Bash.

Chạy kịch bản

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.