L- 파벳 인쇄 / 출력


65

George Gibson의 Print a Tabula Recta에서 영감을 얻었 습니다 .

이 정확한 텍스트를 인쇄 / 출력해야합니다.

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

(예, 직접 입력했습니다)

모든 대문자 대신 모든 소문자를 사용할 수 있습니다.

그러나 사례 선택은 전체 텍스트에서 일관성이 있어야합니다.

규칙 / 요구 사항

  • 각 제출물은 전체 프로그램 또는 기능이어야합니다. 함수 인 경우 프로그램 맨 아래에 함수 호출을 추가하기 만하면 실행 가능해야합니다. 다른 것 (예 : C의 헤더)이 포함되어야합니다.
  • 가능하면 프로그램을 테스트 할 수있는 사이트에 대한 링크를 제공하십시오.
  • 프로그램은에 아무 것도 쓰지 않아야합니다 STDERR.
  • 표준 허점 은 금지되어 있습니다.
  • 프로그램은 어떤 경우에도 출력 할 수 있지만 인쇄해야합니다 (어레이 또는 이와 유사한 것이 아님).

채점

프로그램은 기본적으로 UTF-8 또는 선택한 다른 문자 세트로 바이트 단위로 점수가 매겨집니다.

결국 가장 적은 바이트를 가진 답이 이길 것입니다.

제출물

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

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

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

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

언어 이름을 링크로 만들어 리더 보드 스 니펫에 표시 될 수도 있습니다.

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

리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.



5
출력 (함수의 반환 값)이 행의 배열 일 수 있습니까?
손잡이

@Doorknob 나는 아니오라고 말할 것입니다.
Leaky Nun

@GeorgeGibson 네.
Leaky Nun

@LeakyNun 후행 줄 바꿈이 허용됩니까?
Jakube

답변:


61

Excel, 19,604 바이트

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

에이 수식을 붙여 A1넣은 다음 위로 끕니다 A1:Z26.

바이트 수 :

  1. 수식은 27 바이트입니다.
  2. 26 ^ 2 번 복사해야합니다. 27 * 26 * 26 = 19604.
  3. 나와 다른 사람들은 공식을 반복해서 입력 할 필요가 없기 때문에 점수가 낮아야한다고 생각했습니다. 나는 그것이 관련이 없다고 생각합니다-우리는 프로그램의 크기를 세어 보았습니다.
  4. 비교를 위해- 이 28,187 문자 JS 답변을보십시오 -분명히, 누군가이 모든 것을 입력하는 대신 생성했지만 크기는 변경되지 않습니다.

22
이것은 나를 웃게했다, 당신은 이것을 계산하는 방법 메타 메타에 게시해야한다
Rohan Jhunjhunwala

19
이에 대한 공정한 수는 45 개입니다. (1) A1:Z26이름 상자에 입력 (공식 막대의 왼쪽) [ 7 바이트]; (2) =CHAR(64+MAX(COLUMN(),ROW()))수식 입력 줄에 + enter를 입력하십시오 [ 30 바이트]; (3) Alt E I D Alt E I R선택한 범위 [ 8 바이트] 를 채우려면 입력 하십시오 . 7 + 30 + 8 = 45 .
Joffan

8
자동 완성을 더 적은 양의 바이트로 간주한다고 생각하지 않습니다. 그런 다음 netbeans autcomplete를 주장하여 Java를 확실히 축소 할 수 있습니다. 나는 키 스트로크에 의한 측정 46 키 스트로크가 더 공정하다고 생각합니다
Rohan Jhunjhunwala

3
@rohan I은 Java + 자동 완성 언어를 호출하면 완벽하게 좋습니다.
John Dvorak

5
@Joffan [A1:Z26]="=CHAR(64+MAX(COLUMN(),ROW()))"은 40 바이트이며 여전히 우아합니다
Anastasiya-Romanova 秀

39

Vim, 43 바이트

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

여기서는 Return ( 0x0a)을 나타내고 Ctrl-R ( 0x12)을 나타냅니다 .

내 Tabula Recta 답변만큼 짧지는 않지만…

여기에 이미지 설명을 입력하십시오


3
뭐. 그만큼. 지옥. 입니다. 이. 신 이시여 마법.
haneefmubarak

1
어떤 도움말 페이지를 열었습니까? 내가 할 때 h<_↵그것은 나를 데려옵니다:help at_t
DJMcMayhem

v_b_<_exampleCygwin을 위해 Vim 7.4에서 열었 습니다.
Lynn

@haneefmubarak 네, Vim의 마법입니다.
Chromium

28

젤리, 6 바이트

ØA»'j⁷

여기에서 시도하십시오. 어제 게으르지 않았고 (1 줄 j⁷바꿈)에 대한 1 바이트 대안을 구현 한 경우 ...

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

7
Argh, 닌자 몇 분 ... 체인이 포크 한 이후로 그 대안은 도움이되지 않았을 것입니다.
Dennis

바보 같은 질문이지만, 이것이 6 바이트라면 어떤 문자 세트가 있습니까?
Mr Lister

@ MrLister : 답변 제목에 Jelly 코드 페이지에 대한 링크를 추가했습니다.
Lynn

줄 바꿈으로 조인은 Y입니다.
PurkkaKoodari

@ Pietu1998 생각 Y포스트 그래도 도전을 날짜
coinheringaahing 케어 드


16

/// , 141 94 92 82 바이트

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

온라인으로 사용해보십시오 : 데모

꽤 재미있는 언어입니다.

설명:

4x4 정사각형 만 인쇄하는 단축 코드 :

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

첫 번째 교체 /:/\\\\A/:로 대체 됩니다 \\A. 이것은 다음을 제공합니다.

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

그럼 /#/\\Ab\\Ac\\Ad\\A//\\A/대체 #와 함께 \Ab\Ac\Ad\A:

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

이제 후속 코드에서 /\\A/\/a\Ab\Ac\Ad\A<newline>\/a\//각각을 \A로 대체 /aAbAcAdA<newline>/a/하므로 결과는 다음과 같습니다.

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

이제 첫 번째 부분 /A//은 모든 As를 제거합니다 .

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

처음 다섯 문자 abcd<newline>가 인쇄됩니다. 다음 명령 /a/b/a로 대체 되어 다음 b과 같은 결과가 나타납니다.

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

다시 처음 다섯 문자 bbcd<newline>가 인쇄됩니다. 다음 명령 /b/c/은 다음으로 대체 b됩니다 c.

cccd
/c/d/cccd
/c/

다시 처음 다섯 문자 cccd<newline>가 인쇄됩니다. 다음 명령 /c/d/은 다음으로 대체 c됩니다 d.

dddd
/d/

처음 다섯 문자 dddd<newline>가 인쇄됩니다. 그리고 다음 명령 /d/은 불완전하므로 아무 것도하지 않습니다.


젠장, 이것은 영리하다. 잘 했어. :) tabula recta challenge에 대한 이러한 라인을 따르는 솔루션에 대한 아이디어가 있습니까?
Martin Ender

@MartinEnder 아니요. 아직 없습니다. 저녁에 볼게요. 이 도전으로 인해 점심 시간은 이미 한 시간 (보통 2 배)까지 연장되었습니다.
Jakube

나는 무언가를 알아 냈습니다 (당신의 아이디어, 특히 후속 명령을 수정하여 한 문자 씩 처리하는 방법)에 많은 도움을 받았습니다.
Martin Ender


10

Mathematica, 69 65 57 바이트

@MartinEnder 로 인해 8 바이트가 저장 되었습니다 .

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

익명의 기능. 입력을받지 않고 문자열을 출력으로 반환합니다. 기본적으로 char('A' + max(x, y))모든 x , y 는 1에서 26까지입니다.


5
10k 축하합니다!
Loovjo

9

/// , 348 바이트

/|/\/\///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

온라인으로 사용해보십시오!

나는 이것을 기반으로 한 도전에 대한 /// 답변과 동일한 기술을 사용 했습니다 . 그러나 CJam 스크립트 는 자신과 겹칠 수있는 하위 문자열을 올바르게 처리하지 못했기 때문에 수정 해야 했습니다.


나는 정말로이 언어를 배울 필요가있다.
George Gibson

9

레티 나 , 41 바이트

바이트 수는 ISO 8859-1 인코딩을 가정합니다. 선행 줄 바꿈이 중요합니다.


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

설명


26$*Z

문자열을의 26 개 사본으로 설정하십시오 Z. 그런 다음 {...}Retina에게 문자열 변경이 중지 될 때까지 나머지 두 명령을 루프에서 수행하도록 지시합니다.

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

로 시작하지 않으면 첫 번째 줄을 복제하십시오 A.

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

이것은 음역 단계입니다. 문자열이 동일한 문자의 사본 두 개 이상으로 시작하는 경우에만 적용됩니다. 그렇다면 마지막 문자를 제외한 모든 문자가 감소합니다. 감소는 L(대문자 알파벳)을 _L(공백 다음에 대문자 알파벳) 에 매핑하여 발생합니다 . "마지막을 제외한 모든 것"은 -2Retina에게 모든 문자를 매치에서 마지막으로 두 번째로만 음역하도록 지시 하는 한계로 표시됩니다 .

온라인으로 사용해보십시오!


2
100k 축하합니다! :)
Yytsi

8

하스켈, 35 바이트

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

8

파이썬 2, 59 바이트

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

Ideone에서 테스트하십시오 .


7

R, 58 바이트

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

연산자 우선 순위 덕분에 2:i-1와 같습니다 1:(i-1). LETTERS알파벳이 대문자로 포함 된 내장 상수 를 사용합니다 . 다른 모든 것은 설명이 필요 없습니다.
용법:

> 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

새로운 사용자가 답변 골프에 대한 제안을 가지고 여기에
Kritixi LITHOS에게

7

Sesos , 25 바이트

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

온라인으로 사용해보십시오! 확인 디버그를 생성 sbin에 코드를 볼 수 있습니다.

Sesos 어셈블리

위의 바이너리 파일은 다음 SASM 코드를 조합하여 생성되었습니다.

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)

작동 원리

테이프를로 초기화하여 시작합니다 ABCDEFGHIJKLMNOPQRSTUVWXYZ. 이것은 다음과 같습니다.

테이프를 다음 상태로 유지하면서 셀에 26 을 씁니다 .

                                                       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

데이터 헤드 아래의 셀이 0이 아닌 한 다음을 수행합니다.

왼쪽의 두 셀에 숫자를 복사하고 가장 왼쪽 사본에 64 를 추가 하십시오.

                                                   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

가장 왼쪽 복사본을 원래 위치로 이동 한 다음 가장 오른쪽 복사본에서 1 을 뺍니다 .

                                                     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

가장 오른쪽 사본이 그때까지 0 이므로 프로세스는 26 번의 반복 후에 중지됩니다 . 셀을 오른쪽으로 이동하므로 초기화 후 테이프의 최종 상태는 다음과 같습니다.

     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

이제 데이터 헤드 아래의 셀이 0이 될 때까지 다음 프로세스를 반복하여 출력을 생성 할 준비가되었습니다.

먼저 데이터 헤드 아래의 셀 내용을 한 단위 왼쪽으로 이동 한 다음 0이 아닌 내용이있는 마지막 셀까지 왼쪽으로 이동합니다.

   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

이제 데이터 헤드 아래의 셀부터 시작하여 0 셀 을 찾을 때까지 오른쪽으로 이동하여 모든 셀을 인쇄 한 다음 인쇄 한 각 셀을 인쇄합니다. 인쇄 후 A테이프는 다음과 같이 보입니다.

     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

이제 우리는 오른쪽으로 이동하여 0 셀이 나타날 때까지 모든 셀을 다시 인쇄합니다 . 인쇄 후 BCDEFGHIJKLMNOPQRSTUVWXYZ테이프는 다음과 같이 보입니다.

                                                                                  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

이제 우리 는 현재 셀에 10 을 쓰고 해당 문자 (줄 바꿈)를 인쇄하고 get빈 입력에 대한 호출로 셀을 0으로 만들고 테이프는 변경하지 않습니다.

마지막으로, 0이 아닌 마지막으로 왼쪽으로 이동하여 다음 반복을 위해 테이프를 준비합니다.

        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

다음 반복은 비슷합니다. 우리는 먼저 이동 (66) 모두 인쇄, 왼쪽으로 한 셀 (66 개) (세포 BB)와로 증가 67 후 (오른쪽에 남아있는 비 - 제로 세포를 인쇄 CDEFGHIJKLMNOPQRSTUVWXYZ의 데이터 헤드), 그리고 마지막으로 배치 67 다음과 같이 테이프를 떠나, .

           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

24 더 반복하고 인쇄 후 ZZZZZZZZZZZZZZZZZZZZZZZZZZ및 라인 피드, 테이프는 다음과 같은 상태로 남아있다.

                                                                                  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

데이터 헤드를 왼쪽이 아닌 0이 아닌 다음 셀로 이동하면 현재 위치에 그대로 남아 있으므로 그 아래의 셀은 0 이고 루프가 종료됩니다.


7

J, 13 바이트

u:65+>./~i.26

온라인 통역사 .

설명

u:65+>./~i.26
         i.26  generate [0 1 ... 25]
       /~      build a table...
     >.        ...of maximum
  65+          add 65 to each element
u:             convert to unicode

6

MATLAB / 옥타브, 43 39 바이트

@beaker[...,''] 가 char로 변환하는 데 사용한다는 아이디어 덕분에 1 바이트가 제거되었습니다 .

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

이것은 2D char 배열을 반환하는 익명 함수입니다.

Ideone에서 사용해보십시오 .

설명

gallery('minij',...) 각 항목이 행 및 열 인덱스의 최소값과 같은 행렬을 제공합니다.

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

이것은 다음과 rot90(...,2)같이 180도 회전합니다 .

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

91-...작업은 대문자의 ASCII 코드를 제공합니다.

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

마지막으로 [...,'']빈 문자열로 가로로 연결합니다. 이것은 char로 변환하는 효과가 있습니다.


1
매우 영리한 사용gallery
Suever

2
'아니'가 너무 나쁘다 gallery('maxij',...). ;)
마틴 엔더

@MartinEnder 완전히! :-) BTW, 나는 Mathematica 내장을 기다리고 있습니다 ...
Luis Mendo

당신은 오래 기다렸습니다. 이것은 문자열 기반의 도전입니다. : P
마틴 엔더

6

PowerShell v2 +, 76 52 40 바이트

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

에서 65로 반복 합니다 89. 각 반복마다 쉼표 연산자를 사용하여 배열을 현재 쉼표 연산자를 사용하여 $_증가 후 사후 헬퍼 변수로 곱하고 현재 숫자 $i++의 배열과 연결 $_합니다 90. 그것은 char-array 캐스트로 캡슐화되어 -join문자열로 합쳐집니다. 예를 들어, 첫 번째 반복의 경우이 배열은 65..90또는 전체 알파벳과 같습니다. 두 번째 반복은 66+66..90또는 전체 알파벳이 B반복되고 없음 A입니다.

그것들은 모두 프로그램 끝에서 (배열로) 파이프 라인에 남아 있으며 콘솔에 인쇄하는 것은 암시 적입니다 ( .ToString()배열 의 기본값 은 줄 바꿈을 통해 분리되므로 무료로 얻습니다).

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 바이트

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()));}

때때로 나는 왜 시도조차 메신저 궁금

편집 : 고정

온라인으로 사용해보십시오


나는 실제로 아무도 사용하지 않는 System.Console을 입력 해야하는 콘솔을 사용하기 때문에 dont합니다.
downrep_nation

j = 97 설정을 고려하고 i (은) j + i + ""가 작동하고 더 짧을 수 있지만 Java 만 알고 있으므로 확실하지 않습니다
Rohan Jhunjhunwala

j는 첫 번째 문자의 오프셋으로 사용됩니다. 내가 j = 97이라면 j ++
도해야한다


1
이것은 내가 실행할 때 정답을 출력하지 않습니다. 링크를 추가하여 시도 할 수 있습니까?
TheLethalCoder

5

MATL, 10 바이트

lY2t!2$X>c

온라인 데모 (이 통역에 문제가있는 경우에 저를 핑 (ping) MATL 채팅 . 또한, 여기 경우에 TIO 링크는 당신이 문제가)

설명

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

파이썬 2, 76 70 68 바이트

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

연결된 질문에 대한 나의 대답 과 매우 유사합니다 .

@xnor 덕분에 2 바이트를 절약했습니다!


1
마찬가지로 전에 설정하는 짧다 exec으로 for현재의 문자가 이상 반복되는 사용 : for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a).
xnor

우와, 대단해 : D
ABcDexter


4

05AB1E , 9 바이트

암호:

AAv¬N×?=¦

설명:

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.

CP-1252 인코딩을 사용합니다 . 온라인으로 사용해보십시오! .


4

자바 스크립트 ES6, 81 바이트

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

자명하다.


[... "LETTERS"]. map과 같은 것이 더 짧을까요?
시장 시장

그것은 내 원래의 접근 방식이지만 2 바이트 더 깁니다.
Mama Fun Roll

이것이
제가이

일반적으로 char-by-char 문자열을 반복 할 때 replaceover 를 사용 하는 것이 좋습니다 map.
Mama Fun Roll

1
a.slice(y)여기서 변수는 않습니다 a출신?
gcampbell

4

R, 56 바이트

댓글을 달 수있는 담당자는 없지만 @plannapus 답변 은 다음과 같이 약간 다운 될 수 있습니다.

for(i in 1:26)cat({L=LETTERS;L[1:i]=L[i];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

비록 행렬로서의 응답이 허용된다면 ( , 여기처럼 ), 우리는 49 바이트를 할 수 있습니다 :

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

나는 당신의 답변으로 그를 리디렉션 @plannapus '답변에 대한 의견을 남겼습니다
Kritixi Lithos

이것은 좋지만 여전히 더 짧은 접근법이 있습니다
Giuseppe

4

R , 42 41 바이트

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

온라인으로 사용해보십시오!

다음 짧은 R의 대답은 너무 오래 그것을 선으로 라인을 출력하기 때문에 여전히 비트입니다. 나는이 일을 위해 가능한 한 오늘 아침 또 다른 질문에 대해 생각하고 훨씬 짧은 접근 방식을 실현 : 나는 한 번에 모두 사용하여 매트릭스를 생성 outer하고 pmax(병렬 최대를) 다음과 함께 한 번에 (*)를 인쇄 write.

(*) 기술적으로, 그 전치 행렬이지만, 대각선에 걸쳐 운 좋게 대칭입니다.


3

하스켈, 53 46 바이트

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

L- 파벳이 포함 된 단일 문자열을 반환합니다.

문자를 통해 이동 i에서 AZ와 목록 만들기 (length ['B'..i])의 사본 i다음을 [i..'Z']. 사이에 개행을 가진 요소를 결합하십시오.


3

파이썬 3, 71 65 바이트

-6 바이트에 대한 @LeakyNun 덕분에

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

STDOUT으로 인쇄하는 전체 프로그램.

작동 원리

문자 코드를 알파벳 문자에 0for에서 Ato 25로 할당합니다 Z. 프로그램은 반복 될 현재 문자와 반복 섹션의 길이 및 문자 색인을 결정 [0, 25]하는 라인 카운터 를 사용하여 간격 을 i반복합니다 x. 를 호출 max(i,x)하면 반복되는 문자 아래의 모든 문자가 동일한 문자 코드에 고정됩니다. 추가 65하고 호출 chr하면 결과 문자 코드가 해당 ASCII 문자로 변환됩니다. ''.join문자를 연결하고 각 줄은 STDOUT에 인쇄됩니다.

Ideone에서 사용해보십시오


3

𝔼𝕊𝕄𝕚𝕟, 12 자 / 15 바이트

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

Try it here (Chrome Canary only).

기본적으로 내 ES6 답변의 포트입니다.


ZZZZZZZZZZZZZZZ...결론을 얻지 못했습니다 . 하나만 받고 Z있습니다.
cwallenpoole

어떤 브라우저를 사용하고 있습니까?
Mama Fun Roll


그 부정적인 점수를 제거하기 위해 +1. Chrome 에서는 작동하지 않지만 FireFox에서는 작동합니다.
Kevin Cruijssen

FF도 시도했지만 작동하지 않았습니다. 오 잘 -1을 제거했습니다.
cwallenpoole

3

R, 54 바이트

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

이 솔루션은 R 내장 상수를 사용 LETTERS하여 대문자를 나열합니다. letters소문자에 대한 상수도 있습니다.


나는 조금 까다 롭지 만 원하는 정확한 텍스트가 아닌 행렬을 출력합니다 (예 : 원하는 출력에는 따옴표, 공백, 행 이름, colname 등이 모두 없어야 함).
plannapus

3

C, 78 70 67 바이트

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

이 코드는 C에 대해 다음과 같은 골프 기술을 사용합니다.

  • 생략은 기본 (등 포함 stdio.h)
  • 함수 및 변수 유형을 생략 (반환)하여 기본값으로 설정 int
  • if-else 블록 대신 삼항 연산자를 사용하십시오.
  • 문자 표현 대신 문자의 ASCII 코드를 사용하십시오 (예 : 65대신 'A')
  • putchar단일 문자를 출력하는 데 사용
  • 학대의 주 논쟁 목록
  • puts("")줄 바꿈을 출력하는 데 사용

또한 규칙 If it is a function, it must be runnable by only needing to add the function call to the bottom of the program.은 매개 변수를 사용하여 함수를 호출하는 것을 금지하지 않습니다 (ABcDexter 덕분에).

Ideone에서 사용해보십시오

ungolfed 버전 (gcc에 대한 경고 없음)은 다음과 같습니다.

#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;
}

8 바이트 저장 : f(i,j){for(i=0;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}. 완전한 프로그램이 필요하지 않으며 호출 될 때마다 동일한 작업을 수행하는 기능 (이 기능)이 필요합니다.
owacoder

@owacoder 감사합니다.
sigalor

그것을 제거 i=0;하고 함수 호출을 할 수 f(0,0)있습니까?
ABcDexter

1
@ABcDexter 그렇습니다. 작동해야합니다 (규칙 If it is a function, it must be runnable by only needing to add the function call to the bottom of the program.은 함수 호출에 대한 매개 변수가 허용되지 않기 때문에 이것을 금지하지 않는 것 같습니다). 나는하자 main바로 전화 f(0)루프에 대한 두 번째 (와 하나에 대한 초기화하기 때문에, 어쨌든 j카운터 등이) 그럼에도 불구 필요하다.
sigalor

@sigalor 그렇습니다. 나는 C에서 자신을 시도했지만 코드가 더 짧은 것을 보았습니다 :)
ABcDexter

3

체다, 90 바이트

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

String.letters너무 깁니다 : /

.slice(1)선행 줄 바꿈이 허용되지 않기 때문에 추가해야했습니다.

설명

(|>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

체다, 65 바이트 (비경쟁)

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

야간 지점 과 함께 작동합니다 . 비경쟁 ... 슬픈 부분은 이미 변경 사항이 있다는 것입니다.


65@"90String.letters
Conor O'Brien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.