알파벳 계단


30

도전

당신의 임무는 입력없이 다음을 출력하는 프로그램이나 함수를 만드는 것입니다.

a
bb
ccc
dddd
eeeee
ffffff
ggggggg
hhhhhhhh
iiiiiiiii
jjjjjjjjjj
kkkkkkkkkkk
llllllllllll
mmmmmmmmmmmmm
nnnnnnnnnnnnnn
ooooooooooooooo
pppppppppppppppp
qqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrr
sssssssssssssssssss
tttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzz

채점

이것은 이므로 각 언어에서 가장 짧은 답변이 이깁니다.


4
줄 목록으로 출력 하시겠습니까?
완전히 인간적인

5
대문자 알파벳을 대신 사용할 수 있습니까?
Uriel

9
나는 알파벳 도전을 놓치고 있었다! (Leaky Nun에게 알리지 않음)
Luis Mendo

9
나는 그것이 속임수인지 아닌지 확인하기 위해 열심히 노력했지만 분명히 그렇지 않습니다
Blue

4
@totallyhuman 그것은 당신에게 달려 있습니다.
SpookyGengar

답변:


14

05AB1E , 2 바이트

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

OP가 명시 적으로 허용 한대로 행 목록으로 출력됩니다. 이 링크는 예쁘게 인쇄 된 버전 (줄 바꿈으로 결합)을 사용합니다.

작동 원리

  • A 소문자 알파벳을 산출합니다.
  • ƶ 알파벳을 들어 올립니다 (각 요소에 색인을 곱함).
  • » 개행으로 조인합니다.


9

APL (Dyalog) , 12 8 5 바이트 SBCS

@ngn 덕분에 3 바이트 절약

@ Adám 덕분에 4 바이트 절약

⍴⍨⌸⎕A

OP 명확 대문자는 유효하며 문자열 배열로 출력됩니다.

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

방법?

⎕Alphabet의 모든 문자 는 색인 ⍴⍨이 있고 문자는 왼쪽 인수로, 색인 es 는 오른쪽 인수로 함수에 전달됩니다.

⍴⍨resha 의 왼쪽 하나에서 제공하는 길이 ES의 오른쪽 인자. 왼쪽과 오른쪽을 전환합니다 (따라서이 설명을 읽는 사람의 얼굴처럼 보이는 기호).


819⌶↑⎕A⍴¨⍨⍳26
Adám

@ Adám 감사합니다! 나는 /와 \의 모든 변형을 시도했지만 완전히 무시한 모양 ⍨
Uriel


@ Adám 그러나 그것은 추악하게 보일 것입니다
Uriel

권투를 켭니다!
Adám

8

하스켈 , 27 바이트

[c<$['a'..c]|c<-['a'..'z']]

온라인으로 사용해보십시오! 줄 목록을 반환합니다. (지금 허용됨을 지적 해준 @totallyhuman에게 감사합니다)

설명:

             c<-['a'..'z']  -- for each character c from 'a' to 'z'
[           |c<-['a'..'z']] -- build the list of
[   ['a'..c]|c<-['a'..'z']] -- the lists from 'a' to c, e.g. "abcd" for c='d'
[c<$['a'..c]|c<-['a'..'z']] -- with each element replaced by c itself, e.g. "dddd"

* bows * 멍청한 놈에 대한 설명? 않는 <$첫 번째 인자 반복 N 배, N 번째 인자의 길이를?
완전히 인간적인

@totallyhuman 당신은 간다. 에 물어 주시기 바랍니다 모나드와 남자의 다른 문의 사항이있는 경우.
Laikoni

Prelude에는 매우 흥미로운 연산자가 있습니다. 설명을 주셔서 감사합니다!
완전히 인간적인

7

brainfuck , 74 바이트

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

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

설명

++++++++[>+>+++>++++++++++++<<<-]>++>++>+>+
TAPE:
  000
  010   C_NEWLINE
  026   V_ITERCOUNT
  097   V_ALPHA
 >001<  V_PRINTCOUNT
  000   T_PRINTCOUNT

V_ITERCOUNT TIMES:      <<[-   

  V_PRINTCOUNT TIMES:     >>[-
    INC T_PRINTCOUNT        >+
    OUTPUT V_ALPHA          <<.
                          >]

  RESTORE V_PRINTCOUNT    >[-<+>]
  INC V_PRINTCOUNT        <+
  INC V_ALPHA             <+
  OUTPUT C_NEWLINE        <<.
                        >]

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


7

Befunge-98 (FBBI) , 27 바이트

1+:0\::'`j'@+\k:$$>:#,_$a,

대체 문자는 어디에 있습니까 (ASCII 26)

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

대문자를 사용하며 후행 줄 바꿈이 있습니다.

설명

이 코드는 카운터 (처음에는 0)와 모든 루프에 저장하여 작동합니다.

  • 1+ -1 씩 증가
  • :0\:: -스택을 다음과 같이 보이게합니다. bottom [N, 0, N, N, N] top
  • '`j'@ -카운터가 26보다 큰지 확인
    • j'@-이 경우, 우리는 이상 뛰어 '종료 사용을@
    • j'@-그렇지 않은 경우 'ASCII 값을 @스택으로 푸시하는를 실행합니다 .

이제 스택은 다음과 같습니다. bottom [N, 0, N, N, 64] top

  • +\-상단 2를 더한 다음 전환합니다 bottom [N, 0, (N+64), N] top . 처음으로 ASCII 65이거나A
  • k:-처음부터 두 번째를 복제합니다 (N+1)-이제 스택에 (N+2)값이 (N+64)있습니다 (그리고 이전 N0이전)
  • $$-상위 2 개 값을 버립니다. 이제 N값만 있습니다(N+64)
  • >:#,_- 그것은에 도달 할 때까지 각각의 최고 값을 출력합니다 0-이 수단의 N사본 (N+64)GET 인쇄
  • $-버린다 0-이제 스택은N
  • a, -입력을 인쇄합니다

그리고 그것은 반복


나는 @프로그램을 끝내고 카운터에 추가하기 위해 둘 다를 어떻게 사용했는지 좋아합니다 .


@JamesHolderness Yep. 그것을 잡아 주셔서 감사합니다!
MildlyMilquetoast


6

자바 스크립트 (ES6), 54 바이트

f=(n=9)=>++n<36?n.toString(36).repeat(n-9)+`
`+f(n):''

O.innerText = f()
<pre id=O></pre>


6

Excel VBA, 38 바이트

즉시 창 사용. :)

[A1:A26]="=REPT(CHAR(96+ROW()),ROW())"

아 내 잘못이야. 직접 실행 창을 사용하여 Excel 함수를 사용했기 때문에 Excel이라고 생각했습니다.
remoel December

터미널을 제거하여 바이트를 삭제할 수 있습니다"
Taylor Scott


5

루비, 38 바이트

문자열 배열을 반환

->{(a=*?a..?z).map{|x|x*-~a.index(x)}}

완전히 휴먼 덕분에 -5 바이트

* 요르단의 뛰어난 골프 덕분에 -11 바이트.


이것은 내 카운트에 의해 48 바이트 입니다.
Jordan

1
전혀 필요하지 않습니다 "\n". puts나중에 참조 $/할 수 있도록 2 바이트 더 짧아 지지만 puts이를 위해 행 배열을 반환하는 람다를 만들면 완전히 제거 할 수 있습니다 . 당신은 또한 변경할 수 있습니다 a=[*?a..?z];puts a.mapputs (a=*?a..?z).mapx*(a.index(x)+1)x*-~a.index(x). 모두 38 바이트 입니다.
Jordan

38 바이트 버전은 TiO에서 잘 작동합니다 (이전 주석의 링크 참조). (가) 참고 (a=*?a..?z)블록 람다 아닌 인자 부분의 내부이다.
Jordan


4

MATL , 9 바이트

2Y2"@X@Y"

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

설명

2Y2     % Push string 'abc...z'
"       % For char in that string each
  @     %   Push current char
  X@    %   Push iteration index (1-based)
  Y"    %   Run-length decoding: repeat char that many times
        % Implicit end. Implicit display

&복제 및 전치에2Y2 사용할 수 없는지 아십니까 ?
Stewie Griffin

@StewieGriffin &은 실제로 동일한 결과를 생성하지만 실제로 복제 및 전치하지는 않습니다. 그 기능은 다음 기능의 입력 / 출력 수를 수정하는 것입니다. 예를 들어,을 사용 &+하면 +함수는 이제 두 개 대신 하나의 입력을 가져 와서 입력 된 값의 합계를 바꿉니다. 그 때문에 그러나 그것은 단지의 방법 + (1 개) 입력 (에 같은과 일 =, >그리고 몇몇 다른)
루이스 Mendo


4

젤리 ,  5  4 바이트

몰래 파이썬 구현 남용

Adám 덕분에 -1 바이트 (행 목록 출력이 허용되었습니다. 이제 프로그램 대신 함수를 작성 했으므로 )

Øa×J

줄 목록을 반환하는 나일 링크 : 줄
을 전체 프로그램으로 개행으로 인쇄하려면 다시 추가하십시오Y .

온라인으로 사용해보십시오! (바닥 글은 링크를 nilad (¢)로 호출하고ŒṘ기본 전체 프로그램 동작이 결과를 함께 뭉치기 때문에 명확성을 위해결과 ()의 Python 표현을 얻습니다abbccc...)

방법?

Øa×J - main link: no arguments
Øa   - yield the alphabet = ['a','b','c',...,'z']
   J - range of length    = [1,2,3,...,26]
  ×  - multiplication     = ["a","bb","ccc",...,"zzzzzzzzzzzzzzzzzzzzzzzzzz"]
     - (Python multiplication lengthens chars to strings - not usually a Jelly thing)


흠, 아마도 – 우리는 라인리스트를 "출력"할 수 있지만, 우리는 "프로그램을 생성해야"한다.
Jonathan Allan

프로그램 또는 기능
Adám

4

MATL , 11 바이트

2Y2t!g*!YRc

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

브로드 캐스트 곱셈을 사용하여 원하는 문자의 큰 사각형 26x26 행렬을 얻습니다. 다음으로, 하부 삼각형 부분이 취해지고 암시 적으로 인쇄된다.

또한 11 바이트 :

2Y2!t~!+YRc  % Using broadcast addition with zeroes
2Y2!l26X"YR  % Using 'repmat'

@StewieGriffin 나는 실제로 동일한 솔루션을 제시하는 우연의 일치에 대한 Octave 답변에 대해 반쯤 언급했습니다.
Sanchises

4

자바 스크립트, 87 바이트 , 72 바이트 (@steenbergh에게 감사드립니다)

내 첫 대답도 :

for(i=1,j=97;j<123;){console.log(String.fromCharCode(j++).repeat(i++))};

환영! ind=1시작 부분, 세미콜론 뒤 i<123및 마지막 세미콜론 주위의 공백을 제거하여 조금 단축 할 수있는 것처럼 보입니다 . 또한 접두사 # 앞에 언어-바이트 수를 지정하여 헤더를 약간 더 명확하게 만드십시오.
steenbergh

j완전히 삭제하여 6 바이트를 절약 할 수 있습니다 .for(i=1;i<27;){console.log(String.fromCharCode(i+96).repeat(i++))}
steenbergh

@steenbergh 다시 한 번 감사드립니다.
NTCG

4

apt , 9 7 바이트

라인 배열을 출력합니다

;C¬Ëp°E

시도 해봐


설명

¬소문자 알파벳 ( ;C)을 문자 배열로 분할 ( )하고 배열 ( Ë)에 매핑 p한 다음 현재 색인 ( E) 씩 증가한 ( °) 만큼 현재 요소를 반복 ( )합니다 .


내가 사용한 것을 제외하고 내가 가진 것®p°Y
ETHproductions

3

, 9 바이트

FczPcX++i

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

의사 코드에서 이것은

For-each c in z
    Print (c string-multiply ++i)

여기서 z소문자 알파벳 i으로 사전 설정되고 0으로 사전 설정됩니다.


맵 기반 솔루션은 -n여러 줄에 표시하기 위해 플래그가 필요하기 때문에 1 바이트가 더 필요합니다

{aX++i}Mz
B X_+1MEz

3

Acc !! , 66 바이트

Count i while 26-i {
Count j while i+1-j {
Write 97+i
}
Write 10
}

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

의견으로

# Loop i from 0 to 25
Count i while 26-i {
    # Loop j from 0 to i (inclusive)
    Count j while i+1-j {
        # Print a letter
        Write 97+i
    }
    # Print a newline
    Write 10
}


3

R , 38 바이트

비교적 흥미없는 답변. i1에서 26까지 반복 i하고 알파벳 i시간 의 세 번째 문자를 암시 적으로 줄 바꿈 하여 인쇄하십시오 .

for(i in 1:26)print(rep(letters[i],i))

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

더 흥미로운 접근법은 다음과 같은 것을 사용하는 것입니다.

cat(letters[(1:351*2)^.5+.5])

이것은 우리에게 모든 글자를 올바른 양으로 줄이지 만 줄 바꿈은 없습니다. 아마도 나보다 똑똑한 사람은 골퍼가 대답 할 수있는 방법을 알아낼 수있을 것입니다.


2
나는 당신의 두 번째 접근법을 어떻게 사용하는지 잘 모르겠지만, 그것이 rep(letters, 1:26)훨씬 짧다는 것을 알고 있습니다 .
Giuseppe

@ 주세페 내가 말했듯이 "나보다 똑똑한 사람"이 반드시 필요합니다.
rturnbull




3

J , 18 17 바이트

a.{~(#"0+&96)i.27

설명:

              i.27      - list of integers 0 - 26
     (   +&96)          - adds 96 to the above list (starting offset of 'a')
      #"0               - copies the right argument left argument times  
  {~                    - select items from a list (arguments reversed)
a.                      - the whole alphabet


#"0 +&96 is a hook, which means that at first +96 is applied to the list i.27,
resulting in a list 96, 97, 98... 122, then #"0 is applied to this result. 
So it is evaluated as ((i.27)#"0(96+i.27)){a:

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



3

옥타브 , 25 24 바이트

['',tril((x=65:90)'+~x)]

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

OP가 대문자를 허용한다는 Giuseppe 덕분에 1 바이트를 절약했습니다.

설명:

x대문자 알파벳의 ASCII 값으로 벡터 를 생성 하고 바꿉니다. x(ASCII- 값)을 사용하여 그리드를 만들려면 부정형 (따라서 26 개의 0을 행 벡터에 추가) :

AAAA
BBBB
CCCC

하단 삼각 행렬을 가져 와서 빈 문자열과 연결하여 문자로 변환하십시오.


3

C (gcc) , 48 바이트 50 바이트

아래 설명의 cleblanc 및 Steadybox에 따라 다시 실행할 수있는 버전입니다.

s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}

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


1
좋은 대답입니다. 다음에 호출 할 때 함수가 실패한다고 생각 하며이 링크에 따라 재사용 할 수 있어야합니다. codegolf.meta.stackexchange.com/questions/4939/…
cleblanc

여기에 50 바이트의 고정 버전이 있습니다. s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}여전히 몇 바이트만큼 내 대답을 능가합니다 :)
Steadybox


3

apt, 17 16 11 바이트

Oliver 덕분에 -5 바이트

ISO-8859-1에서

;26ÆCgX pXÄ

최고 점수는 아니지만 여전히 초보자입니다. 어떤 제안이라도 환영합니다.

OP가 허용 된대로 행 목록을 출력합니다. 링크는 개행을 위해 3 바이트를 더 포함합니다.

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

;                      - Use string variables
 26                    - Literal 26
   Æ                   - For range 0..26
    C                  - Alphabet
     gX                -         . character at index X
        pXÄ            - Duplicate X+1 times
                       - End function (implicit)

1
좋은! 1oBÊÄ로 대체 할 수 있습니다 26õ. 당신은 같은 것을 수행하여 몇 바이트 이상을 절약 할 수 있습니다;26ÆCgX pXÄ
올리버

@Oliver 26이 알파벳 길이보다 짧다는 것을 어떻게 알았습니까?! 감사. 또한, 나의 나쁜 점 of논쟁 을 취하는 것을 발견하지 못했습니다 ...
RedClover
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.