혼란스러운 알파벳 계단


25

입력이 없으면 허용되는 출력 방법을 통해이 흥미로운 알파벳 패턴을 출력하십시오 (대소 문자가 일관성이 있어야 함) .

에이
AB
ACBC
ADBDCD
에베 세데
AFBFCFDFEF
AGBGCGDGEGFG
AHBHCHDHEHFHGH
AIBICIDIEIFIGIHI
AJBJCJDJEJFJGJHJIJ
AKBKCKDKEKFKGKHKIKJK
ALBLCLDLELFLGLHLILJLKL
AMBMCMDMEMFMGMHMIMJMKMLM
ANBNCNDNENFNGNHNINJNKNLNMN
AOBOCODOEOFOGOHOIOJOKOLOMONO
APBPCPDPEPFPGPHPIPJPKPLPMPNPOP
AQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQ
ARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQR
ASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRS
ATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTST
AUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTU
AVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUV
AWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVW
AXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWX
AYBYCYDYEYFYGYHYIYYYKYKYMYYYYYYYYYYYYYYYYYYYYYYY
AZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZ

후행 공백과 줄 바꿈이 허용되고 표준 허점 이 허용되지 않으며 이것이 이므로 바이트 단위의 최단 답변이 승리합니다!



BTW 만약 내가 놀라운 답변을 보게되면 나는 그것을 50 담당자에게 줄 것이다
FantaC

13
최고는 A정말 나를 위해 일을
망치고

2
어떤 사람들은 단순히 내가 생각하는 이런 종류의 도전을 좋아하지 않습니다.
Jonathan Allan

1
@ETHproductions 그것은 나를 위해 일을 단순화합니다!
Neil

답변:


5

캔버스 , 7 바이트

Z[K*¹+]

여기 사용해보십시오!

설명:

Z[     ] for each prefix of the uppercase alphabet
    K        pop off the last letter
     *       and join the rest of the string with that character
      ¹+     and append the current iterated character to it

이전 답변을 편집하지 않은 이유는 무엇입니까?
Neil

@ 좋은 질문입니다. 확실하지 않음
dzaima

받아 들였다! 젤리와 숯을 2 바이트 씩 이겼습니다!
FantaC

8

젤리 , 9 바이트

ØAjṪ$Ƥż¹Y

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

작동 원리

ØAjṪ$Ƥż¹Y  Main link. No arguments.

ØA         Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
     Ƥ     Map the link to the left over all prefixes, i.e., ["A", "AB", ...].
    $        Combine the two links to the left into a chain.
   Ṫ           Tail; yield and remove the last letter of each prefix.
  j            Join the remainder, using that letter as separator.
      ż¹   Zip the resulting strings and the letters of the alphabet.
        Y  Separate the results by linefeeds.

2
오, 하하와 나는 막 게시하려고했다 ØAjṪ$ƤżØAY: D
Jonathan Allan


6

R , 50 바이트

l=LETTERS
for(i in 0:25)cat(l[0:i],"
",sep=l[i+1])

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

아마도 가장 영리한 부분 letters[0]은 빈 문자열을 사용 cat(character(0),'\n',sep="A")하여 첫 번째 줄을 인쇄하는 것입니다.


6

, 9 바이트

Eα⁺⪫…ακιι

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

 α          Predefined uppercase alphabet
E           Map over each character
    …ακ     Get current prefix of alphabet
   ⪫   ι    Join with current character
  ⁺     ι   Append current character
            Implicitly print on separate lines


4

6502 머신 코드 루틴 (C64), 39 바이트

A9 41 20 D2 FF AA A8 84 FB E4 FB B0 0B 8A 20 D2 FF 98 20 D2 FF E8 D0 F1 A9 0D
20 D2 FF A2 41 C0 5A F0 03 C8 D0 E1 60

위치 독립적 인 기계 코드 서브 루틴, 클로버 A, X 및 Y.

온라인 데모

데모는에로드 $C000되므로 SYS49152루틴을 호출하는 데 사용 하십시오.


주석 처리 된 분해 :

A9 41       LDA #$41            ; 'A'
20 D2 FF    JSR $FFD2           ; Kernal CHROUT (output character)
AA          TAX                 ; copy to X (current pos)
A8          TAY                 ; copy to Y (current endpos)
  .outerloop:
84 FB       STY $FB             ; endpos to temporary
  .innerloop:
E4 FB       CPX $FB             ; compare pos with endpos
B0 0B       BCS .eol            ; reached -> do end of line
8A          TXA                 ; current pos to accu
20 D2 FF    JSR $FFD2           ; and output
98          TYA                 ; endpos to accu
20 D2 FF    JSR $FFD2           ; and output
E8          INX                 ; next character
D0 F1       BNE .innerloop      ; (repeat)
  .eol:
A9 0D       LDA #$0D            ; load newline
20 D2 FF    JSR $FFD2           ; and output
A2 41       LDX #$41            ; re-init current pos to 'A'
C0 5A       CPY #$5A            ; test endpos to 'Z'
F0 03       BEQ .done           ; done when 'Z' reached
C8          INY                 ; next endpos
D0 E1       BNE .outerloop      ; (repeat)
  .done:
60          RTS

3

자바 8, 93 91 90 바이트

v->{String t="";for(char c=64;++c<91;t+=c)System.out.println(t.join(c+"",t.split(""))+c);}

반환하지 않고 직접 인쇄 하여 @ OlivierGrégoire 덕분에 -1 바이트

설명:

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

v->{                     // Method with empty unused parameter and String return-type
  String t="";           //  Temp-String, starting empty
  for(char c=64;++c<91;  //  Loop over the letters of the alphabet:
      t+=c)              //    After every iteration: append the letter to the temp-String
    System.out.println(  //   Print with trailing new-line:
       r.join(c+"",t.split(""))
                         //    The temp-String with the current letter as delimiter
       +c);}             //    + the current letter as trailing character 

2
90 바이트 (반환 대신 stdout 사용).
Olivier Grégoire

좋은 대답입니다! 나는 그것이 더 짧은 지 알아보기 위해 C #으로 포팅했고 91을 얻었습니다 (포함하면 더 System.) :)
aloisdg는 Reinstate Monica

3

SNOBOL4 (CSNOBOL4) , 169 (143) 바이트

i &ucase len(x) . r len(1) . s
 o =
 i =
t r len(i) len(1) . k :f(o)
 o =o s k
 i =i + 1 :(t)
o o s =
 output =o s
 x =lt(x,25) x + 1 :s(i)
end

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

i &ucase len(x) . r len(1) . s	;* set r to the first x characters and s to the x+1th.
 o =				;* set o,i to empty string
 i =
t r len(i) len(1) . k :f(o)	;* set k to the ith letter of r. on failure (no match), go to o.
 o =o s k			;* concatenate o,s,k
 i =i + 1 :(t)			;* increment i, goto t
o o s =				;* remove the first occurrence of s (the first character for x>1, and nothing otherwise)
 output =o s			;* output o concatenated with s
 x =lt(x,25) x + 1 :s(i)	;* increment x, goto i if x<25.
end

여기서 문제는 첫 번째 줄입니다

를 사용 o s k하면 s각 줄의 시작 부분에 여분의 분리 문자 가 추가되고 끝에는 없습니다 s. t때 라인이 다음 두 줄 위로 이동 하기 때문에 이것은 괜찮습니다 x=0. 이것은 o여전히 비어 있음을 의미합니다 . 따라서 o s =에서 첫 번째 s문자를 제거한 o다음 o s적절한 마지막을 갖도록 간단히 인쇄 할 수 있습니다 s.


2

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

f=
_=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ"].map((c,i,a)=>a.slice(0,i).join(c)+c).join`
`
;document.write('<pre>'+f());

문자열 배열 리턴 값이 허용 가능한 경우 9 바이트를 저장하십시오.


2

apt ( -R깃발), 14 12 바이트

@Shaggy 덕분에 -2 바이트

;B¬
ËiU¯E qD

온라인으로 테스트하십시오!


바로 가기가 있다면 s0,! ; p
얽히고 설킨

12 바이트 . 그런데 왜 -R여기 를 세지 않습니까?
얽히고 설킨

@Shaggy Oh 와우, 내가 뭔가 빠졌음을 알았다 : P i트릭은 훌륭하다, 고마워! 플래그에 관해서 는 프로그램의 각 고유 한 호출이 별도의 언어로 간주되어야한다는 새로운 합의 가 있는 것으로 보입니다 . (Japt의 깃발 시스템은 일종의 냉담한 것처럼 보입니다 ...)
ETHproductions


2

PowerShell , 56 바이트

"A";65..89|%{([char[]](65..$_)-join[char]++$_)+[char]$_}

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

루프 6589하는 구성하는 각 반복 char배열을 65현재 번호에 $_이어서,-join 다음 문자 스트링으로 함께 배열 S는 그 후 단부에, 그 문자에 침.

89동작을 더 잘 보려면를 다른 ASCII 숫자로 변경 하십시오.


2

> <> , 44 34 바이트

"BA"oao"ZA"\=?;1+40.
o1+:{::o}=?\:

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

> <> , 44 바이트

"A"o10ao\55*=?;1+40.
1+:{:}=?\:"A"+o{:}"A"+o

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

출력을 생성하기 위해 다른 경로를 사용함에 따라 나 자신의> <> 답변을 게시했습니다. 다른> <> 답변을 찾을 수 있습니다 여기 있습니다.

조 킹에게 감사의 말을 전합니다. 26 대신 "Z"와 비교했을 때 스택에 "A"를 계속 넣을 필요가 없었습니다. (-10 바이트)

설명

코드의 흐름에 따라 설명합니다.

"BA"                 : Push "BA" onto the stack;
                       [] -> [66, 65]
    oao              : Print the stack top then print a new line;
                       [66, 65] -> [66]
       "ZA"\         : Push "ZA" onto the stack then move down to line 2;
                       [66, 90, 65]
o          \:        : Duplicate the stack top then print
 1+:                 : Add one to the stack top then duplicate;
                       [66, 90, 65, 65]
    {::              : Shift the stack right 1 place then duplicate the stack top twice;
                       [90, 65, 65, 66, 66]
       o}            : Print the stack top then shift the stack left 1 place;
                       [66, 90, 65, 65, 66]
         =?\         : Comparison for equality on the top 2 stack items then move to line 1 if equal otherwise continue on line 2;
                       [66, 90, 65]
           \=?;      : Comparison for equality on the top 2 stack items then quit if equal else continue on line 1;
                       [66]
               1+    : Add 1 to the stack top;
                       [67]
                 40. : Move the code pointer to column 4 row 0 of the code box and continue execution of code. 

36 바이트 . 당신의 방법은 나의 것보다 훨씬 낫습니다
Jo King

inb4 "교차 44는 여전히 44; ("
Jo King

@JoKing Z와 비교할 때 탁월한 점은 내가 개선 한 부분은 라인 로직을 옮기고 스택 항목의 중간에 Z를 배치하여 해당 따옴표를 다시 사용하는 것입니다.
청록 펠리칸



1

젤리 , 13 바이트

ØA¹Ƥ+"¹Ṗ€Yṭ”A

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

설명

ØA¹Ƥ+"¹Ṗ€Yṭ”A  Main Link
ØA              Uppercase Alphabet
  ¹Ƥ            Prefixes
    +"¹         Doubly-vectorized addition to identity (uppercase alphabet) (gives lists of lists of strings)
       Ṗ€      a[:-1] of each (get rid of the double letters at the end)
         Y     Join on newlines
          ṭ”A  "A" + the result

젤리에서 문자열과 문자 목록이 다른 방식을 부분적으로 남용


그것은 빠르다!
FantaC

@tfbninja ehhh, 11 분은 Jelly에게는 괜찮습니다. 고마워 : P
HyperNeutrino

두 번째 ØA¹(Dennis 와 같은) 것으로 바꿀 수 있습니다
Jonathan Allan

@JonathanAllan 오, 감사합니다!
HyperNeutrino


1

APL + WIN, 51 바이트

⍎∊'a←⎕av[65+⍳26]⋄a[n←1]',25⍴⊂'⋄,⊃a[⍳n-1],¨a[n←n+1]'

설명:

a←⎕av[65+⍳26] create a vector of upper case letters

a[n←1] first A

25⍴⊂'⋄,⊃a[⍳n-1],¨a[n←n+1]' create an implicit loop to concatenate subsequent letters

1

> <> , 47 바이트

d2*:1-v
-&$:?!\$:&$:1
1-:?!v\69*-$1-:
+*88~< 1o

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

작동 방식 :

d2*:1-v Initialise the stack with 26 (outer loop counter) and 26-1 (inner loop counter)
....
....
....

....
-&$:?!\$:&$:1 Repeatedly make copies of both counters
....          And decrement the inner loop counter
....          Go to third line when inner loop counter is 0

....            Add -54 to the stack (for the newline) and decrement the outer loop counter
....            Initialise the inner loop counter as outer-1
1-:?!v\69*-$1-: If the inner counter is 0, go to the fourth line, else back to the second.
....

....
....      
....      Transform numbers and -54s into letters and newlines by adding 64
+*88~< 1o Output each character until it runs out of stack and errors



1

GNU M4, 119 바이트

지금까지 최악입니다. 글쎄, 시간은 이미 보냈다…

define(f,`ifelse($1,$2,,`format(%c%c,$1,$2)`'f(incr($1),$2)')')define(g,`f(65,$1)ifelse($1,90,,`
g(incr($1))')')A
g(66)

1

껍질 , 13 바이트

Γ·:mhSzJḣ…"AZ

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

설명

이 선도는 A정말 일을 혼란스럽게합니다. -.-

          "AZ  -- string literal: "AZ"
         …     -- fill gaps: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     S         -- with alphabet and
        ḣ      -- | alphabet rangified: ["A","AB","ABC",…,"AB……XYZ"]
      zJ       -- : zipWith join: ["A","ABB","ACBCC","ADBDCDD",…,"AZB……ZYZZ"]
Γ              -- pattern match (x:xs) with the following function (x is "A" and xs ["ABB","ACBCC",…,"A……ZYZZ"]
 · mh          -- | drop the last element of each element of xs: ["AB","ACBC",…,"A……ZYZ"]
  :            -- | cons (construct list): ["A","AB","ACBC",…,"A……ZYZ"]
               -- : strings are printed implicitly

1

C # (. NET 코어)

Kevin Cruijssen의 답변 에서 포트 :

91 90 바이트

_=>{var t="";for(char c='@';++c<91;t+=c)Console.WriteLine(string.Join(c+"",t.Skip(0))+c);}

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

132 122 110 109 104 103 바이트

_=>"ABCDEFGHIJKLMNOPQRSTUVWXYZ".Select((c,i)=>string.Join(""+c,"ABCDEFGHIJKLMNOPQRSTUVWXYZ".Take(i))+c)

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

  • 교체 ()_우리가 사용되지 않은 변수를 선언 할 것으로 보여. Kevin Cruijssen 감사합니다.

Java 응답에서와 같이 사용하지 않는 빈 매개 변수 를 사용하여 90 바이트로 줄일 수도 있습니다 . 그래서 o=>{...}대신 ()=>{...}. 온라인으로 시도하십시오 : 90 bytes .
Kevin Cruijssen

@KevinCruijssen 나는 몰랐다! 고맙습니다!
aloisdg는 Reinstate Monica


1

젤리 , 22 바이트

ØAż€Ð€`F€µJ’Ḥ»1ż@¹ḣ/€Y

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

작동 방식 :

                       take argument implicitly
ØA                     the uppercase alphabet
    Ѐ`                for C in the alphabet
  ż€                     appends C to every letter in the alphabet
       F€              flatten every sublist
          J            get indices
           ’           subtract 1
            Ḥ          and double
             »1        take max([n, 1])
         µ     ż@¹     interleave alphabet list and indices
                  ḣ/€  reduce on head() for each element
                     Y join on newline
                       implicitly output




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