In / Xuất L-ph.us


65

Lấy cảm hứng từ George Gibson's In một Tabula Recta .

Bạn phải in / xuất văn bản chính xác này:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

(Vâng, tôi đã gõ nó bằng tay)

Bạn được phép sử dụng tất cả chữ thường thay vì tất cả chữ hoa.

Tuy nhiên, sự lựa chọn của bạn về trường hợp phải nhất quán trong toàn bộ văn bản.

Quy tắc / Yêu cầu

  • Mỗi bài nộp phải là một chương trình hoặc chức năng đầy đủ. Nếu nó là một hàm, nó phải được chạy bằng cách chỉ cần thêm lệnh gọi hàm vào cuối chương trình. Bất cứ điều gì khác (ví dụ như các tiêu đề trong C), phải được bao gồm.
  • Nếu có thể, hãy cung cấp một liên kết đến một trang web nơi chương trình của bạn có thể được kiểm tra.
  • Chương trình của bạn không được viết bất cứ điều gì STDERR.
  • Lỗ hổng tiêu chuẩn bị cấm.
  • Chương trình của bạn có thể xuất ra trong mọi trường hợp, nhưng nó phải được in (không phải là một mảng hoặc tương tự).

Chấm điểm

Các chương trình được ghi theo byte, theo UTF-8 theo mặc định hoặc một bộ ký tự khác bạn chọn.

Cuối cùng, câu trả lời có ít byte nhất sẽ giành chiến thắng.

Đệ trình

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

# Perl, 43 + 2 (-p flag) = 45 bytes

Bạn cũng có thể đặt tên ngôn ngữ thành một liên kết mà sau đó sẽ hiển thị trong đoạn trích bảng xếp hạng:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

Bảng xếp hạng

Dưới đây là Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.



5
Đầu ra (như giá trị trả về từ hàm) có thể là một mảng các dòng không?
Doorknob

@Doorknob Tôi sẽ nói không.
Rò rỉ Nun

@GeorgeGibson Vâng.
Nữ tu bị rò rỉ

@LeakyNun Một dòng mới có được phép không?
Jakube

Câu trả lời:


61

Excel, 19.604 byte

=CHAR(64+MAX(COLUMN(),ROW()))

Dán công thức này vào A1, sau đó kéo tất cả lên A1:Z26.

Số lượng byte:

  1. Công thức là 27 byte.
  2. Bạn cần sao chép nó 26 ^ 2 lần. 27 * 26 * 26 = 19604.
  3. Tôi và những người khác nghĩ rằng điểm số nên thấp hơn bởi vì bạn không thực sự cần phải gõ lại công thức. Bây giờ tôi nghĩ nó không liên quan - chúng tôi đếm kích thước của chương trình, không phải công việc dành để viết nó.
  4. Để so sánh - hãy xem câu trả lời JS có 28.187 ký tự này - rõ ràng, ai đó đã tạo ra nó thay vì nhập tất cả những thứ này, nhưng nó không thay đổi kích thước của nó.

22
điều này làm tôi cười, bạn nên đăng lên meta sking cách đếm này
Rohan Jhunjhunwala

19
Số lượng hợp lý cho điều này sẽ là loại 45: (1) A1:Z26trong Hộp Tên (bên trái của thanh công thức) [ 7 byte]; (2) gõ =CHAR(64+MAX(COLUMN(),ROW()))+ enter trong thanh công thức [ 30 byte]; (3) gõ Alt E I D Alt E I Rđể điền vào phạm vi đã chọn [ 8 byte]. Tổng cộng 7 + 30 + 8 = 45 .
Joffan

8
Tôi không nghĩ rằng việc đếm tự động hoàn thành là số lượng byte ít hơn. Sau đó, tôi có thể thu nhỏ java của mình xuống bằng cách lập luận tự động hoàn thành netbeans. Tôi nghĩ rằng các biện pháp bằng cách gõ phím 46 tổ hợp phím là công bằng hơn
Rohan Jhunjhunwala

3
@rohan Tôi, đối với một người, sẽ hoàn toàn ổn khi bạn gọi Java + tự động hoàn thành một ngôn ngữ.
John Dvorak

5
@Joffan [A1:Z26]="=CHAR(64+MAX(COLUMN(),ROW()))"là 40 byte và vẫn thanh lịch
Anastasiya-Romanova

39

Vim, 43 byte

:h<_↵jjYZZPqqlmaYp`ajyl:norm v0r♥"↵`ajq25@q

Ở đây đại diện cho Return ( 0x0a) và đại diện cho Ctrl-R ( 0x12).

Không hoàn toàn ngắn như câu trả lời Tabula Recta của tôi, nhưng Mạnh

nhập mô tả hình ảnh ở đây


3
gì. các. Địa ngục. Là. điều này. đỡ đầu ma thuật.
haneefmubarak

1
Bạn đang mở trang trợ giúp nào? Khi tôi làm h<_↵Điều đó đưa tôi đến:help at_t
DJMcMayhem

Tôi đang mở v_b_<_exampletrong Vim 7.4 cho Cygwin.
Lynn

@haneefmubarak Vâng, đó là sự kỳ diệu của Vim.
Chromium

28

Thạch, 6 byte

ØA»'j⁷

Hãy thử nó ở đây. Giá như tôi đã không lười biếng ngày hôm qua và thực hiện thay thế một byte cho j⁷(tham gia theo dòng mới)

ØA      The uppercase alphabet.
  »'    Table of max(x, y).
    j⁷  Join by newlines.

7
Argh, ninja sẽ mất vài phút ... Sự thay thế đó sẽ không giúp ích gì vì chuỗi sẽ rẽ nhánh.
Dennis

Câu hỏi ngu ngốc, nhưng nếu đây là 6 byte, thì nó nằm trong ký tự nào?
Ông Lister

@MrLister: Tôi đã thêm một liên kết đến trang mã Jelly trong tiêu đề của câu trả lời.
Lynn

Tham gia bằng linefeed là được Y.
PurkkaKoodari

@ Pietu1998 Tôi nghĩ rằng Ybài đăng ngày thách thức mặc dù
caird coinheringaahing

17

Brainfuck, 103 96 95 91 87 byte

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

Điều này sử dụng hằng số brainfuck của Esolang cho 64 . Hãy thử trực tuyến!


16

/// , 141 94 92 82 byte

/:/\\\\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://:/\/a#
\/a\///A/#

Dùng thử trực tuyến: Trình diễn

Khá là một ngôn ngữ vui vẻ.

Giải trình:

Rút ngắn mã để chỉ in một hình vuông 4 x 4:

/:/\\\\A//#/:b:c:d://:/\/a#
\/a\///A/#

Sự thay thế đầu tiên thay /:/\\\\A/thế :bằng \\A. Điều này mang lại:

/#/\\Ab\\Ac\\Ad\\A//\\A/\/a#
\/a\///A/#

Sau đó /#/\\Ab\\Ac\\Ad\\A//\\A/thay thế #bằng \Ab\Ac\Ad\A:

/\\A/\/a\Ab\Ac\Ad\A
\/a\///A/\Ab\Ac\Ad\A

Bây giờ /\\A/\/a\Ab\Ac\Ad\A<newline>\/a\//thay thế từng \Atrong mã tiếp theo bằng /aAbAcAdA<newline>/a/, vì vậy điều này dẫn đến:

/A//aAbAcAdA
/a/b/aAbAcAdA
/a/c/aAbAcAdA
/a/d/aAbAcAdA
/a/

Bây giờ phần đầu tiên /A//loại bỏ tất cả As.

abcd
/a/b/abcd
/a/c/abcd
/a/d/abcd
/a/

Năm ký tự đầu tiên abcd<newline>được in. Lệnh tiếp theo /a/b/thay thế abởi b, dẫn đến:

bbcd
/b/c/bbcd
/b/d/bbcd
/b/

Một lần nữa năm ký tự đầu tiên bbcd<newline>được in. Lệnh tiếp theo /b/c/thay thế bbởi c:

cccd
/c/d/cccd
/c/

Một lần nữa năm ký tự đầu tiên cccd<newline>được in. Lệnh tiếp theo /c/d/thay thế cbởi d:

dddd
/d/

Năm ký tự đầu tiên dddd<newline>được in. Và lệnh tiếp theo /d/là không đầy đủ và do đó không làm gì cả.


Chết tiệt, điều này thật thông minh. Công việc tốt đẹp. :) Có ý tưởng nào cho một giải pháp dọc theo những dòng này cho thách thức tabula trực tràng không?
Martin Ender

@MartinEnder Không, chưa. Tôi sẽ xem xét nó vào buổi tối. Kéo dài thời gian nghỉ trưa đã đến một giờ (gấp đôi so với bình thường) vì thử thách này.
Jakube

Tôi đã tìm ra một cái gì đó (với rất nhiều sự giúp đỡ từ ý tưởng của bạn, đặc biệt là cách bạn sửa đổi các hướng dẫn tiếp theo để xử lý một nhân vật khác).
Martin Ender


10

Toán học, 69 65 57 byte

Đã lưu 8 byte do @MartinEnder .

FromCharacterCode[64+Max~Array~{26,26}]~StringRiffle~"
"&

Chức năng ẩn danh. Không có đầu vào và trả về một chuỗi như đầu ra. Về cơ bản chỉ cần char('A' + max(x, y))cho tất cả x , y từ 1 đến 26.


5
Chúc mừng 10k!
Loovjo

9

/// , 348 byte

/|/\/\///v/NNN|u/MMM|t/LLL|s/WXYZ|r/OOO|q/KLMa|p/RRRR|o/QQQQ|n/PPPP|m/SSS|l/EFGc|k/RSTb|j/UUUU|i/TTTT|h/WWW|g/VVV|f/XXXX|e/ZZZZZ|d/YYYYY|c/HIJq|b/UVs
|a/NOPQk/ABCDlBBCDlCCCDlDDDDlEEEElFFFFFFGcGGGGGGGcHHHHHHHcIIIIIIIIIJqJJJJJJJJJJqKKKKKKKKKKqttttMauuuuMavvvvNarrrrrPQknnnnQkooooQkppppRkmmmmmmSTbiiiiibjjjjjbgggggggVs
hhhhhhhWs
ffffffYZ
dddddZ
eeeeeZ

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

Tôi đã sử dụng kỹ thuật tương tự để xây dựng điều này như cho câu trả lời /// của tôi cho thử thách này dựa trên . Tuy nhiên, tôi đã phải sửa tập lệnh CJam vì nó không xử lý chính xác các chuỗi con có thể tự chồng lên nhau.


Tôi thực sự cần học ngôn ngữ này ...
George Gibson

9

Võng mạc , 41 byte

Số lượng byte giả định mã hóa ISO 8859-1. Các nguồn cấp dữ liệu hàng đầu là đáng kể.


26$*Z
{`^[^A].+
$&¶$&
}T0-2`L`_L`^(.)\1+

Giải trình


26$*Z

Đặt chuỗi thành 26 bản sao của Z. Sau đó, {...}Retina hướng dẫn thực hiện hai hướng dẫn còn lại trong một vòng lặp cho đến khi chuỗi ngừng thay đổi.

{`^[^A].+
$&¶$&

Sao y dòng đầu tiên nếu nó không bắt đầu bằng một A.

}T0-2`L`_L`^(.)\1+

Đây là một giai đoạn chuyển ngữ. Nó chỉ được áp dụng nếu chuỗi bắt đầu với ít nhất hai bản sao của cùng một ký tự. Nếu vậy, tất cả ngoại trừ cuối cùng của những nhân vật được giảm. Việc giảm xảy ra bằng cách ánh xạ L(bảng chữ cái in hoa) thành _L(trống theo sau là bảng chữ cái in hoa). "Tất cả trừ cuối cùng" được biểu thị bằng giới hạn -2chỉ cho Retina phiên âm tất cả các ký tự cho đến từ thứ hai đến cuối cùng trong trận đấu.

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


2
Chúc mừng 100k! :)
Yytsi

8

Haskell, 35 byte

a=['A'..'Z']
unlines$(<$>a).max<$>a

8

Python 2, 59 byte

n=0;exec'print bytearray([n+65]*n+range(n+65,91));n+=1;'*26

Kiểm tra nó trên Ideone .


7

R, 58 byte

l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}

Nhờ ưu tiên nhà điều hành, 2:i-1tương đương với 1:(i-1). Sử dụng hằng số tích LETTERShợp có chứa bảng chữ cái in hoa. Mọi thứ khác là khá tự giải thích.
Sử dụng:

> l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

Một người dùng mới có một gợi ý để đánh golf câu trả lời của bạn tại đây
Kritixi Lithos

7

Vừng , 25 byte

0000000: 2829c0 756fc6 aecae2 aecd9c 39e09e 099c63 7d8e3d  ().uo.......9....c}.=
0000015: 65a7c0 39                                         e..9

Hãy thử trực tuyến! Kiểm tra gỡ lỗi để xem mã SBIN được tạo.

Sesos lắp ráp

Tệp nhị phân ở trên đã được tạo bằng cách lắp ráp mã SASM sau.

add 26
jmp
    jmp
        rwd 1, add 1, rwd 1, add 1, fwd 2, sub 1
    jnz
    rwd 2, add 64
    jmp
        fwd 2, add 1, rwd 2, sub 1
    jnz
    fwd 1, sub 1
jnz
fwd 1
jmp
    jmp
        rwd 1, add 1, fwd 1, sub 1
    jnz
    nop
        rwd 1
    jnz
    fwd 1
    jmp
        put, add 1, fwd 1
    jnz
    fwd 1
    jmp
        put, fwd 1
    jnz
    add 10, put, get
    nop
        rwd 1
    jnz
    fwd 1
; jnz (implicit)

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

Chúng tôi bắt đầu bằng cách khởi tạo băng từ ABCDEFGHIJKLMNOPQRSTUVWXYZ. Điều này là như sau.

Viết 26 vào một ô, để lại băng ở trạng thái sau.

                                                       v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0

Miễn là ô dưới đầu dữ liệu khác không, chúng tôi thực hiện như sau.

Sao chép số vào hai ô bên trái và thêm 64 vào bản sao ngoài cùng bên trái.

                                                   v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 26 0 0

Di chuyển bản sao ngoài cùng bên trái đến vị trí ban đầu, sau đó trừ 1 từ bản sao ngoài cùng bên phải.

                                                     v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 90 0

Quá trình dừng lại sau 26 lần lặp, vì lúc đó bản sao ngoài cùng bên phải là 0 . Chúng tôi di chuyển một ô sang bên phải, vì vậy trạng thái cuối cùng của băng sau khi khởi tạo là như sau.

     v
0 0 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Bây giờ chúng tôi đã sẵn sàng để tạo đầu ra, bằng cách lặp lại quy trình sau cho đến khi ô bên dưới đầu dữ liệu bằng không.

Đầu tiên, chúng ta di chuyển nội dung của ô bên dưới đầu dữ liệu một đơn vị sang trái, sau đó di chuyển sang trái cho đến ô cuối cùng có nội dung khác không.

   v
0 65 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Bây giờ, chúng tôi in tất cả các ô, bắt đầu với một ô bên dưới đầu dữ liệu và di chuyển sang phải cho đến khi chúng tôi tìm thấy một ô 0 , tăng từng ô được in sau khi in. Sau khi in A, băng trông như sau.

     v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Bây giờ chúng ta di chuyển sang phải, một lần nữa in tất cả các ô cho đến khi gặp 0 ô. Sau khi in BCDEFGHIJKLMNOPQRSTUVWXYZ, băng trông như sau.

                                                                                  v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Bây giờ, chúng ta viết 10 vào ô hiện tại, in ký tự tương ứng (linefeed) và zero ô với lệnh gọi đến getđầu vào trống, giữ cho băng không thay đổi.

Cuối cùng, chúng tôi di chuyển đến số không khác cuối cùng bên trái, chuẩn bị băng cho lần lặp tiếp theo.

        v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Lặp lại tiếp theo là tương tự. Trước tiên, chúng tôi di chuyển 66 ô sang trái, in cả 66 ô ( BB) và tăng chúng lên 67 , sau đó in các ô khác không còn lại sang phải ( CDEFGHIJKLMNOPQRSTUVWXYZ) và cuối cùng đặt đầu dữ liệu lên 67 , để lại băng như sau .

           v
0 66 66 0 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Sau 24 lần lặp lại và sau khi in ZZZZZZZZZZZZZZZZZZZZZZZZZZvà một nguồn cấp dữ liệu, các băng được để lại ở trạng thái sau.

                                                                                  v
0 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 0 0

Di chuyển đầu dữ liệu sang trái sang ô khác không tiếp theo sẽ để nó ở vị trí hiện tại, do đó, ô bên dưới là 0 và vòng lặp kết thúc.



6

Matlab / Octave, 43 39 byte

Xóa 1 byte nhờ vào ý tưởng của @ beaker về việc sử dụng [...,'']để chuyển đổi sang char.

@()[91-rot90(gallery('minij',26),2),'']

Đây là một hàm ẩn danh trả về một mảng char 2D.

Hãy thử nó trên Ideone .

Giải trình

gallery('minij',...) đưa ra một ma trận trong đó mỗi mục bằng với mức tối thiểu của các chỉ số hàng và cột của nó:

 1     1     1     1  ...
 1     2     2     2
 1     2     3     3
 1     2     3     4
 ...

Điều này được xoay 180 độ với rot90(...,2):

26    25    24    23  ...
25    25    24    23
24    24    24    23
23    23    23    23
...  

Các 91-...hoạt động cung cấp cho các mã ASCII của các chữ cái viết hoa:

65    66    67    68
66    66    67    68
67    67    67    68
68    68    69    68 ...
...

Cuối cùng [...,'']nối theo chiều ngang với một chuỗi rỗng. Điều này có tác dụng chuyển đổi sang char.


1
Cách sử dụng rất thông minh củagallery
Suever

2
Thật tệ phải không gallery('maxij',...)? ;)
Martin Ender

@MartinEnder Hoàn toàn! :-) BTW, tôi đang chờ bản dựng Mathicala ...
Luis Mendo

Bạn đang chờ đợi lâu, đây là một thử thách dựa trên chuỗi. : P
Martin Ender

6

PowerShell v2 +, 76 52 40 byte

65..90|%{-join[char[]](,$_*$i+++$_..90)}

Vòng lặp từ 65đến 89. Mỗi lần lặp, chúng tôi đang xây dựng một mảng bằng cách sử dụng dấu phẩy-nhà điều hành mà bao gồm số lượng hiện tại $_nhân với biến helper hậu tăng lên $i++, nối với một loạt các số lượng hiện tại $_để 90. Điều đó được gói gọn trong một dàn diễn viên char và -joinghép lại thành một chuỗi. Ví dụ, đối với lần lặp đầu tiên, mảng này sẽ tương đương 65..90hoặc toàn bộ bảng chữ cái. Lặp lại thứ hai sẽ là 66+66..90, hoặc toàn bộ bảng chữ cái Blặp đi lặp lại và không A.

Tất cả những thứ còn lại trên đường ống ở cuối chương trình (dưới dạng một mảng) và in ra bàn điều khiển là ẩn (mặc định .ToString()cho một mảng được phân tách thông qua dòng mới, vì vậy chúng tôi nhận được miễn phí).

PS C:\Tools\Scripts\golfing> .\print-the-l-phabet.ps1
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

6

C #, 147 byte

void e(){for(int i=0,j=97;i<26;i++,j++)Console.WriteLine(new string((char)j,i)+new string(Enumerable.Range(j,26-i).Select(n=>(char)n).ToArray()));}

đôi khi tôi tự hỏi tại sao tôi thậm chí cố gắng

chỉnh sửa: sửa nó

Dùng thử trực tuyến


Tôi thực sự không bởi vì tôi cũng đang sử dụng Console sẽ yêu cầu tôi nhập System.Console mà không ai làm.
downrep_nation

xem xét cài đặt j = 97 và tôi có thể (char) j + i + "" có thể hoạt động và ngắn hơn, nhưng tôi chỉ biết java nên tôi không chắc chắn
Rohan Jhunjhunwala

j được sử dụng làm phần bù cho ký tự đầu tiên. nếu tôi làm j = 97 tôi cần phải làm j ++ cũng như vậy
downrep_nation

2
Điều đáng buồn là nó dài hơn ~ 50% so với giải pháp brainfuck
fyrepenguin

1
Điều này không đưa ra câu trả lời đúng khi tôi chạy nó, bạn có thể thêm một liên kết để thử không?
TheLethalCoder

5

MATL, 10 byte

lY2t!2$X>c

Bản demo trực tuyến (Nếu bạn gặp vấn đề với trình thông dịch này, hãy ping tôi trong trò chuyện MATL . Ngoài ra, đây là liên kết TIO trong trường hợp bạn gặp sự cố)

Giải trình

lY2     % Push an array of characters to the stack: 'AB...Z'
t!      % Duplicate and transpose
2$X>    % Take the element-wise maximum between these two (with expansion)
c       % Explicitly convert back to characters
        % Implicitly display the result.

5

Python 2, 76 70 68 byte

a=range(65,91)
i=0
for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a)

Rất giống với câu trả lời của tôi cho câu hỏi liên kết .

Đã lưu 2 byte nhờ @xnor (một lần nữa)!


1
Cũng như trước đây, nó ngắn hơn để biến execthành forsử dụng ký tự hiện tại được lặp lại : for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a).
xnor

Whoa, thật tuyệt: D
ABcDexter

4

Octave, 26 byte

disp([max(L=65:90,L'),''])

Mẫu chạy trên ideone .


Rất đẹp! Tôi tiếp tục quên [...,'']mánh khóe
Luis Mendo

1
@LuisMendo Nó thực sự chỉ tiết kiệm 1 byte, nhưng thật hào nhoáng! : D
cốc

4

05AB1E , 9 byte

Mã số:

AAv¬N×?=¦

Giải trình:

AA         # Push the alphabet twice.
  v        # For each in the alphabet.
   ¬       # Get the first character and
    N×     # multiply by the iteration variable.
      ?    # Pop and print.
       =   # Print the initial alphabet without popping.
        ¦  # Remove the first character of the initial alphabet and repeat.

Sử dụng mã hóa CP-1252 . Hãy thử trực tuyến! .


4

Javascript ES6, 81 byte

x=>[...a='ABCDEFGHIJKLMNOPQRSTUVWXYZ'].map((x,y)=>x.repeat(y)+a.slice(y)).join`
`

Tự giải thích.


Liệu cái gì đó như [... "THƯA"]. Bản đồ sẽ ngắn hơn?
Thị trưởngMonty

Đó là cách tiếp cận ban đầu của tôi, nhưng nó dài hơn 2 byte.
Mama Fun Roll

Đó là cách tiếp cận tôi nghĩ khi tôi thấy thử thách này
MayorMonty

Nói chung, nó tốt hơn để sử dụng replacehơn mapkhi iterating trên chuỗi char-by-char.
Mama Fun Roll

1
Trong a.slice(y)nơi nào biến ađến từ đâu?
gcampbell

4

R, 56 byte

Không có đại diện để bình luận, nhưng câu trả lời @plannapus có thể được đánh xuống một chút để:

for(i in 1:26)cat({L=LETTERS;L[1:i]=L[i];L},"\n",sep="")

dẫn đến cùng một đầu ra:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

Mặc dù, nếu câu trả lời dưới dạng ma trận được cho phép ( ví dụ như ở đây ), chúng ta có thể thực hiện 49 byte:

sapply(1:26,function(l){L=LETTERS;L[1:l]=L[l];L})

Tôi đã để lại nhận xét về câu trả lời của @plannapus chuyển hướng anh ấy đến câu trả lời của bạn
Kritixi Lithos

Điều này là tốt nhưng vẫn còn một cách tiếp cận ngắn hơn
Giuseppe

4

R , 42 41 byte

write(outer(L<-LETTERS,L,pmax),'',26,,'')

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

Các câu trả lời R ngắn tiếp theo vẫn là một chút quá dài kể từ khi nó in ra từng dòng. Tôi đã suy nghĩ về một câu hỏi khác sớm hơn hôm nay và nhận ra một cách tiếp cận ngắn hơn nhiều có thể cho câu hỏi này: Tôi tạo ra ma trận cùng một lúc bằng cách sử dụng outerpmax(tối đa song song) và sau đó in nó (*) trong một bước với write.

(*) về mặt kỹ thuật, chuyển vị của nó, nhưng may mắn thay, nó đối xứng qua đường chéo của nó.


3

Haskell, 53 46 byte

unlines[(i<$['B'..i])++[i..'Z']|i<-['A'..'Z']]

Trả về một chuỗi đơn với L-ph.us.

đi qua các ký tự itừ Ađến Zvà lập danh sách các (length ['B'..i])bản sao itheo sau [i..'Z']. Tham gia các yếu tố với dòng mới ở giữa.


3

Python 3, 71 65 byte

Cảm ơn @LeakyNun cho -6 byte

r=range(26)
for i in r:print(''.join(chr(max(i,x)+65)for x in r))

Một chương trình đầy đủ in ra STDOUT.

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

Chúng ta gán mã ký tự để các chữ cái của bảng chữ cái, từ 0cho Ađến 25cho Z. Chương trình lặp trong khoảng thời gian [0, 25]với bộ đếm dòng i, xác định ký tự hiện tại sẽ được lặp lại và độ dài của phần lặp lại và chỉ mục ký tự x. Bằng cách gọi max(i,x), tất cả các ký tự bên dưới ký tự lặp lại được kẹp vào mã ký tự giống nhau. Thêm 65và gọi chrchuyển đổi mã ký tự kết quả thành tương đương ASCII của chúng; ''.joinnối các ký tự và mỗi dòng được in thành STDOUT.

Hãy thử nó trên Ideone


3

, 12 ký tự / 15 byte

ᶐⓢ⒨Ċ_+ᶐč_)ü⬬

Try it here (Chrome Canary only).

Về cơ bản là một cổng của câu trả lời ES6 của tôi.


Tôi không nhận được ZZZZZZZZZZZZZZZ...điểm mấu chốt. Chỉ nhận được một Z.
cwallenpoole

Bạn đang dùng trình duyệt nào?
Mama Fun Roll


+1 để thoát khỏi điểm số tiêu cực đó. Không hoạt động trong Google Chrome, nhưng nó hoạt động trong FireFox.
Kevin Cruijssen

Đã thử FF, nhưng nó không hoạt động. Ồ tốt Đã xóa -1.
cwallenpoole

3

R, 54 byte

v=L=LETTERS;for(i in 2:26){L[1:i]=L[i];v=cbind(v,L)};v

Giải pháp này sử dụng hằng số tích hợp RLETTERS , ... cũng ... liệt kê các chữ cái viết hoa. Ngoài ra còn có hằng số letterscho chữ thường.


Tôi hơi nông nổi một chút nhưng điều này tạo ra một ma trận, không phải là văn bản chính xác mong muốn (tức là đầu ra mong muốn không nên có tất cả các dấu ngoặc kép, dấu cách, tên gọi, tên gọi, v.v.).
plannapus

3

C, 78 70 67 byte

f(i,j){for(;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}

Mã này sử dụng các kỹ thuật chơi gôn sau đây cho C:

Ngoài ra, quy tắc If it is a function, it must be runnable by only needing to add the function call to the bottom of the program.không cấm hàm được gọi với tham số (nhờ ABcDexter!).

Hãy thử nó trên Ideone

Một phiên bản không được chỉnh sửa (không có bất kỳ cảnh báo nào với gcc) sẽ giống như thế này:

#include <stdio.h>

#define MAX(x, y) (x>y ? x : y)

int main()
{
    for(int i=0; i<26; i++)
    {
        for(int j=0; j<26; j++)
            printf("%c", MAX(i, j) + 'A');
        printf("\n");
    }
    return 0;
}

Lưu 8 byte : f(i,j){for(i=0;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}. Bạn không cần một chương trình đầy đủ, chỉ cần một chức năng thực hiện các hoạt động tương tự mỗi lần nó được gọi (điều này thực hiện).
owacoder

@owacoder Cảm ơn, đã sửa nó.
sigalor

Bạn có thể loại bỏ điều đó i=0;và thực hiện chức năng gọi là f(0,0)?
ABcDexter

1
@ABcDexter Yep, điều đó sẽ hoạt động (quy tắc If it is a function, it must be runnable by only needing to add the function call to the bottom of the program.dường như không cấm điều này, vì nó không cho biết các tham số wheather cho lệnh gọi hàm được cho phép). Dù sao thì tôi maincũng chỉ gọi f(0), vì việc khởi tạo cho vòng lặp thứ hai (vòng lặp với bộ jđếm) là cần thiết.
sigalor

@sigalor Có chính xác. Tôi đã thử bản thân mình trong C, nhưng thấy rằng mã của bạn ngắn hơn :)
ABcDexter

3

Cheddar, 90 byte

(|>26).map(i->String.letters.chars.map((j,k,l)->k<i?l[i]:j).fuse).vfuse.slice(1)

Đó String.letterslà quá dài: /

Phải thêm một .slice(1)vì dòng mới hàng đầu không được phép

Giải trình

(|>26)       // Range from [0, 26)
.map(i->     // Loop through that range
 String.letters.chars // Alphabet array
  .map(               // Loop through alphabet
  (j,k,l) ->          // j = letter, j = index, l = alphabet
    k<i?l[i]:j        // Basically `l[max(k,i)]` 
  ).fuse     // Collapse the array
).vfuse      // Join on newlines

Cheddar, 65 byte (không cạnh tranh)

(|>26).map(i->String.letters.map((j,k,l)->k<i?l[i]:j).fuse).vfuse

Làm việc với các chi nhánh hàng đêm . Không cạnh tranh ... điều đáng buồn là tôi đã có những thay đổi ... chỉ là không bao giờ cam kết; _;


Tôi nghĩ một cái gì đó giống như 65@"90hoạt động cho String.letters
Conor O'Brien
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.