알파벳 삼각형이 다시 파업


24

태스크

당신의 임무는이 정확한 텍스트를 인쇄하는 것입니다 :

A
BCD
EFGHI
JKLMNOP
QRSTUVWXY
ZABCDEFGHIJ
KLMNOPQRSTUVW
XYZABCDEFGHIJKL
MNOPQRSTUVWXYZABC
DEFGHIJKLMNOPQRSTUV
WXYZABCDEFGHIJKLMNOPQ
RSTUVWXYZABCDEFGHIJKLMN
OPQRSTUVWXYZABCDEFGHIJKLM
NOPQRSTUVWXYZABCDEFGHIJKLMN
OPQRSTUVWXYZABCDEFGHIJKLMNOPQ
RSTUVWXYZABCDEFGHIJKLMNOPQRSTUV
WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC
DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL
MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW
XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ
KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY
ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP
QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI
JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD
EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA
BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

명세서

  • 모두 대문자 대신 소문자로 할 수 있습니다.
  • 삼각형 끝에 줄 바꿈 문자가 허용됩니다.
  • 각 줄 다음에 후행 공백이 허용됩니다.
  • 문자열 배열을 출력하는 대신 STDOUT으로 인쇄해야합니다.

채점

이것은 입니다. 바이트 수가 가장 적은 프로그램이 승리합니다.


1
"다시 공격하다"는 무슨 뜻입니까? 이렇게해서 또 다른 도전이 있었습니까?
haykam


1
우리는 정말로 (또 다른) 알파벳 도전이 필요한가?
Rohan Jhunjhunwala

2
그것은 좋은 도전이지만, 우리는 이러한 알파벳 도전의 채도를 능가한다고 생각합니다.
Rohan Jhunjhunwala

실제로 위치에있는 문자를 mod함수 와 관련된 좌표에서 간단한 표현식으로 계산할 수 없다는 알파벳 문제를 찾고 있습니다. 내가 시간이 있다면 나 자신을 만들 수 있습니다.
Weijun Zhou

답변:


39

Vim, 29 바이트

:h<_↵↵↵y$ZZ26P0qqa↵♥βjllq25@q

여기서 Return 키, Esc 키 및β Backspace 키를 나타냅니다.

enter image description here


3
이것에 대해 항상 vim 답변으로 나를 어떻게 이길까요? 아악 어쨌든 +1, 그럴 수 없습니다 upvote에 정력! :)
DJMcMayhem

7
나는 아직도 당신이 대신 사용해야한다고 생각합니다 . 그리고 대신에 β. 이것이 바로 이러한 유니 코드 문자입니다. utf8icons.com/subsets/control-pictures
mbomb007

9

파이썬 2, 65 바이트

i=1
a=bytearray(range(65,91))*26
while a:print a[:i];a=a[i:];i+=2

1
코드가 Python 3에서 작동하지 않기 때문에 헤더를 Python 2로 변경했습니다.
Leaky Nun

7

젤리 , 10 바이트

26RḤ’RØAṁY

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

작동 원리

26RḤ’RØAṁY  Main link. No Arguments.

26          Set the return value to 26.
  R         Range; yield [1, 2, ..., 25, 26].
   Ḥ        Unhalve; yield [2, 4, ..., 50, 52].
    ’       Decrement; yield [1, 3, ..., 49, 51].
     R      Range; yield [[1], [1, 2, 3], ..., [1, ..., 49], [1, ..., 51]].
      ØA    Yield the uppercase alphabet.
        ṁ   Mold the alphabet as the array of ranges. This repeats the uppercase
            letters over an over again, until all integers in the range arrays
            have been replaced with letters.
         Y  Join, separating by linefeeds.

"Double"은 "Unhalve"라고 불렸습니까? 또한 위대하다! [100k 담당자를
축하

그것은 단지 니모닉입니다. H반감그 반대이다 ( unhalve ).
Dennis

난 그냥 /2또는 생각 *2, 그래서 "하브"또는 "더블"입니다. 그래서 혼란 스러웠습니다.
Outgolfer Erik

또한 10 바이트 :27Ḷ²IRØAṁY
Leaky Nun

또한 10 바이트 :51Rm2RØAṁY
HyperNeutrino

7

VBA Excel (80 바이트, 1742 바이트)


Excel, 1742 바이트

ugoren의 창조적 인 답변 에서 영감을 얻어 OP에 표시된 것처럼 패턴을 만들 수있는 Excel 수식을 찾았습니다.

=MID(REPT("ABCDEFGHIJKLMNOPQRSTUVWXYZ",26),(ROW()-1)^2+1,2*ROW()-1)

이 수식을 A1 셀에 붙여 넣은 다음 A1 : A26 범위를 모두 끕니다.

수식의 길이는 67 바이트이지만 26 번 복제해야하므로 67 * 26 = 1742 바이트와 같습니다. 출력은 다음과 같습니다.

enter image description here


Excel VBA, 80 바이트

이제 VBA가 Excel을 포함한 대부분의 Microsoft Office 응용 프로그램에 기본 제공되므로 프로세스를 자동화하고 많은 바이트를 절약하기 위해 Excel을 VBA와 통합 할 수 있습니다. 직접 실행 창에서 다음 코드를 작성하고 실행하십시오 ( Visual Basic Editor에서 조합 키 CTRL+ G를 사용 하여 표시).

[A1:A26]="=MID(REPT(""ABCDEFGHIJKLMNOPQRSTUVWXYZ"",26),(ROW()-1)^2+1,2*ROW()-1)"

이 프로그램은 위의 Excel 수식을 A1 : A26 범위로 인쇄하여 작동합니다. 불행히도 Excel과 VBA에는 내장 알파벳이 없습니다.


열 이름은 내장 알파벳처럼 보입니다. 처음 26 개의 열 이름을 사용하십시오.
mbomb007

1
@ mbomb007 그래서 무엇? 문자열 대신 사용하기가 더 어렵다고 생각합니다.
Outgolfer Erik

@EriktheGolfer 그래서? 내 요점은 내장 알파벳 이 있다는 것 입니다 .
mbomb007

1
@ mbomb007 "처음 26 열 이름을 사용하십시오"라고 말했는데, "현재 사용하는 대신 첫 26 열 이름을 사용하십시오"라고 답했습니다.
아웃 골퍼 에릭

@EriktheGolfer 제안입니다. 얼마나 많은 바이트가 될지 Idk.
mbomb007

5

하스켈, 67 바이트

_#53=[]
s#i=take i s:drop i s#(i+2)
mapM putStrLn$cycle['A'..'Z']#1

i줄 길이 에 대한 간단한 재귀 . 각 단계에서 다음 i문자는 알파벳의 무한 반복에서 가져옵니다.


4

Mathematica, 90 바이트

StringRiffle[Flatten[Alphabet[]&~Array~26]~Internal`PartitionRagged~Range[1,51,2],"
",""]&

익명의 기능. 입력을받지 않고 문자열을 출력으로 반환합니다. 골프 제안을 환영합니다. 무엇을하는 예 Internal`PartitionRagged:

In[1]:= Internal`PartitionRagged[{2, 3, 5, 7, 11, 13}, {2, 3, 1}]               

Out[1]= {{2, 3}, {5, 7, 11}, {13}}

Mathematica에는 알파벳 삼각형이 내장되어 있습니까?
버퍼 오버 읽기

4

C, 79 바이트

main(i,j){for(i=0,j=1;i<676;i++){putchar(i%26+65);if(j*j==i+1){puts("");j++;}}}

C \ o /의 첫 번째 답변

골프 제안은 환영 이상입니다.


62 :i;main(j){while(i<676)printf("\n%c"+(j*j^i++||!j++),i%26+65);}
xsot

@xsot 감사하지만 새로운 줄 바꿈이 허용되지 않습니다.
Leaky Nun

1
그러나 주요 개행이 없습니까?
xsot

60 :i;main(j){for(;j<27;j*j^++i||puts("",j++))putchar(i%26+65);}
xsot

@ immibis 나는 그때 그것을 게시해야한다고 생각합니다.
xsot

4

근접 , 37 바이트

26~l<:1aLc~j[@A:I],L~@nw
=:2%1,.#@l?,

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

설명

  • 주요 술어 :

    26~l         Let there be a list of 26 elements
    <            This list is an ascending list of integers
    :1aL         Apply predicate 1 to that list ; the resulting list of strings is L
    c            Concatenate the list of strings into one big string
    ~j[@A:I],    That big string is the result of juxataposing the alphabet I times to itself
    L~@n         Create a string which when splitted on line breaks results in L
    w            Write that string to STDOUT
    
  • 술어 1 : 홀수 길이의 가변 문자열을 생성하는 데 사용됩니다.

    =            Assign a value to the Input
    :2%1,        That value must be odd
    .#@l?,       Output is a string of length Input
    

마지막으로 당신은 아스키 기술 과제 수행
새는 수녀

@LeakyNun ASCII art imo 이상의 문자열 조작으로 분류
Fatalize

태그에 추가해야합니까?
Leaky Nun

마지막 줄이 끝나는 유일한 줄이라는 사실을 잘 사용하면 사각형 Z이 없기 때문 26입니다.
Leaky Nun


3

자바 스크립트 (ES6), 77 82 88

EcmaScript 6은 개행을위한 템플릿 문자열 리터럴을 사용하여 1 바이트 만 저장하면됩니다.

for(i=r=l=o='';l+52;r++||(r=l-=2,o+=`
`))o+=(i++%26+10).toString(36);alert(o)

덜 골프

for(i = r = l = o = '';
    l + 52;
    r++ || (r = l -= 2, o += `\n`))
  o += (i++ % 26 + 10).toString(36);
alert(o);

테스트

for(i=r=l=o='';l+52;r++||(r=l-=2,o+=`
`))o+=(i++%26+10).toString(36);alert(o)


\ o / 브라우저에서 실행할 수있는 ES6 답변
Downgoat

.toString (36) 논리를 훔쳤습니다 ... 이제 80 바이트를 이길 수 있습니다!
applejacks01.

아아, 나는 내 라이브러리로 이것을 이길 수있는 방법을 생각할 수 없다고 인정합니다. 도전 해 주셔서 감사합니다!
applejacks01

3

펄, 42 41 39 바이트

perl -E '@b=(A..Z)x26;say splice@b,0,$#a+=2for@b'

코드 만 :

@b=(A..Z)x26;say splice@b,0,$#a+=2for@b

명백히 더 짧은 버전은 불행히도 내부 펄 문제를 유발합니다 (반복에서 해제 된 값 사용).

say splice@b,0,$#a+=2for@b=(A..Z)x26

2

자바 스크립트, 129 바이트

z=1,i=0,g=a=>{b=0,c="";while(a+a-1>b){c+='ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split``[i>26?i=0:i++];b++}console.log(c)};while(z<26)g(z++)

1
확산 연산자를 사용하여 당신을 절약 할 수 3 바이트 : [...'ABCDEFGHIJKLMNOPQRSTUVWXYZ']대신 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split``.
insertusername 여기


2

133 바이트

package main
import S "strings"
func main(){s:=S.Repeat("ABCDEFGHIJKLMNOPQRSTUVXXYZ",26)
for i:=1;s!="";i+=2{println(s[:i]);s=s[i:]}}

2

MATLAB, 112109 95 79 77 바이트

이것은 옥타브 와 함께 작동 합니다 . 여기서 온라인으로 시도 할 수 있습니다 .

a=['' 65:90 65:90]';j=0;for i=1:2:52;b=circshift(a,j);j=j-i;disp(b(1:i)');end

따라서 몇 가지 중요한 변경 후 14 바이트를 14 바이트 더 절약했습니다 . 이것은 MATLAB에서 예상했던 길이와 훨씬 더 비슷해집니다. 이전 버전은 크게 다르므로 아래에 남겨 두었습니다.

a=['' 65:90 65:90]';        %Create 2 copies of the upper case alphabet
j=0;                        %Initialise cumulative sum
for i=1:2:52;               %For each line length
    b=circshift(a,j);       %Rotate the alphabet string by the cumulative offset
    j=j-i;                  %Update cumulative negative sum of offsets.
    disp(
         b(1:i)'            %Extract first 'line length' characters from rotated alphabet.
               );           %Display next line (disp adds newline automatically)
end

원본 버전 :

a=['' repmat(65:90,1,26)];c=cumsum(1:2:51);disp(cell2mat(arrayfun(@(s,f)[a(s:f) 10],[1,c(1:25)+1],c,'Un',0)))

와아 하나 생각보다 길어졌다. 몇 바이트를 떨어 뜨릴 수 없는지 살펴 보겠습니다.

설명하지 않는 골판지 버전 :

a=['' repmat(65:90,1,26)]; %Create 26 copies of the upper case alphabet
c=cumsum(1:2:51);          %Calculate the end index of each row in the above array, by cumulatively summing the length of each line
disp(
     cell2mat(
              arrayfun(@(s,f)
                             [a(s:f) 10], %Extract the part of the alphabet and insert a new line.
                                         [1,c(1:25)+1],c, %start index is the previous end of line plus 1. End index is as calculated by cumsum.
                       'Un',0 %The returned values are not all the same length
                       )   %Do this for each line
              )            %Convert back to a matrix now new lines inserted
     )                     %And display it

감사의 말

  • 3 바이트 절약-@LuisMendo 감사합니다

2

XPath 3.0 (및 XQuery 3.0), 84 바이트

codepoints-to-string((0 to 25)!(subsequence(((1 to 26)!(65 to 90)),.*.+1,2*.+1),10))

설명:

(1 to 26)!(65 to 90) 알파벳이 26 번입니다

(0 to 25)!(subsequence(XX, start, len),10) 26 개의 서브 시퀀스를 취합니다.

subsequence(X, .*.+1, 2*.+1) (1, 1), (2, 3), (5, 5), (10, 9) 등의 시작 위치와 길이로 연속적인 하위 시퀀스를 취합니다.

codepoints-to-string() 유니 코드 코드 포인트를 문자로 변환


브라보. XQuery가 무엇인지 알고 있다고 생각했습니다. 내가 전혀 몰랐다.
Jordan

나는 여기에있는 많은 글들이 그들이 쓴 언어에 대해 많은 것을 말해 줄 것입니다.
Michael Kay


2

05AB1E (대체) 15 바이트

A2×52µ¼D¾£,¾¼FÀ

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

설명:

A2×              # push a string containing a-za-z
   52µ           # Loop the rest of the program until counter = 52
      ¼          # increment counter (it's 0 initially)
       D         # Duplicate the alpha string on the stack
        ¾£       # Replace alpha with alpha[0..counter]
          ,      # Pop the substring and print it
           ¾¼FÀ  # rotate the alpha string left counter++ times.

2

R, 120 (115) 111 바이트

v=c();for(i in 1:26){v=c(v,c(rep(LETTERS,26)[(sum((b=seq(1,51,2))[1:i-1])+1):sum(b[1:i])],"\n"))};cat(v,sep="")

언 골프 :

a=rep(LETTERS,26)
b=seq(1,51,2)
v=vector()

for(i in 1:26)
    {
    v=c(v,c(a[(sum(b[1:i-1])+1):sum(b[1:i])],"\n"))
    }

cat(v,sep="")

기본적으로 와 b사이의 홀수로 구성된 벡터 는 각 행의 길이를 나타냅니다. 분명히이 함수 는이 벡터의 숫자를 합산 하고 시작 및 끝 색인을 제공합니다.151sum

@plannapus 덕분에 -5 바이트 ! @plannapus 덕분에
-4 바이트 !


1
arf, 죄송합니다. 이전에는 a보지 못했지만 실제로 한 번만 사용 하면 실제로 정의 할 필요가 없으므로 몇 바이트를 더 면도 할 수 있습니다 b=seq(1,51,2);v=c();for(i in 1:26){v=c(v,c(rep(LETTERS,26)[(sum(b[1:i-1])+1):sum(b[1:i])],"\n"))};cat(v,sep="").
plannapus

@plannapus 바보 나! 다시 감사합니다! 또한 b=seq본체에 부품을 통합 했기 때문에 읽기가 쉽지 않습니다 !
프레데릭

2

R, 81 73 65 63 바이트

간단한 for루프 접근법. 알파벳을 26 번 반복하고를 사용하여 계산 한 슬라이딩 인덱스 범위를 반복합니다 (i^2-2*i+2):i^2.

for(i in 1:26)cat(rep(LETTERS,26)[(i^2-2*i+2):i^2],"\n",sep="")


1

배치, 123 바이트

@set s=
@for /l %%i in (1,2,51)do @call set s=%%s%%ABCDEFGHIJKLMNOPQRSTUVWXYZ&call echo %%s:~0,%%i%%&call set s=%%s:~%%i%%


1

렉스 74 72 바이트

i=1;m=1;do 26;say substr(copies(xrange('A','Z'),26),i,m);i=i+m;m=m+2;end

언 골프 드 :

i=1
m=1
do 26
  say substr(copies(xrange('A','Z'),26),i,m)
  i=i+m
  m=m+2
end

1

TSQL, 129 바이트

스크립트 시작 부분의 MASTER 사용은 많은 사용자에 대해 기본값 인 마스터 데이터베이스에서 쿼리가 실행되도록하는 것입니다 (바이트는 계산하지 않음).

골프 :

USE MASTER

SELECT SUBSTRING(REPLICATE('ABCDEFGHIJKLMNOPQRSTUVWXYZ',26),number*number+1,number*2+1)FROM spt_values WHERE number<26and'P'=type

언 골프 드 :

USE MASTER

SELECT SUBSTRING(REPLICATE('ABCDEFGHIJKLMNOPQRSTUVWXYZ',26),number*number+1,number*2+1)
FROM spt_values
WHERE number<26and'P'=type

깡깡이

xml 경로를 사용하는 이전 버전의 바이올린


1

PowerShell, 68 바이트

$a=-join(65..90|%{[char]$_})*26;26..1|%{$a=$a.Insert($_*$_,"`n")};$a

첫 번째 세미콜론 앞의 섹션에서는 대문자 26 자의 복사본이 포함 된 문자열을 생성합니다. 다음 섹션에서는 각 제곱 번호의 색인에 줄 바꿈을 삽입합니다 (뒤로 작업하므로 이동을 설명 할 필요가 없습니다). 마지막으로 마지막에 $a해당 문자열 변수를 PowerShell의에 해당하는 것으로 밀어 넣습니다 STDOUT.



1

C, 60 바이트

i;main(j){for(;j<27;j*j^++i||puts("",j++))putchar(i%26+65);}

puts하나의 주장 만 취합니다. (일부 정의되지 않은 동작은 codegolf에서 정상적으로 허용되지만 이것은 일반적인 차선을 약간 벗어납니다)
MM

@MM 정의되지 않은 동작은 항상 악용됩니다. 규칙은 제출이 일부 컴파일러에서 작동하는 한 유효하다는 것입니다. 그렇지 않으면 긴 예외 목록을 명시 적으로 배제해야합니다. 이 코드는 gcc에서 작동하므로 유효한 제출입니다.
xsot

1

C ++, 111 바이트

void a(){int c=65,i,j;for(i=0;i<26;i++){for(j=0;j<=2*i;j++){std::cout<<(char)c;c++;if(c==91)c=65;}std::cout<<'\n';}}

먼저이 중 하나를 시도하십시오. int "c"를 사용하여 주어진 시간에 인쇄해야 할 문자를 기록합니다. "c"가 90 ( 'Z')을 지나면 65 ( 'A')로 재설정됩니다. for 루프를 사용하여 피라미드를 인쇄합니다.


좋은 대답입니다! 당신은 할 수있는 if(c<92)c=65한 바이트를 벗고, 당신도 할 수있을 것 int a()대신에 void a(),하지만 난 반환하지 않고 그 작품의 경우 긍정적 인 아니에요. 그 외에는 #include <iostream>바이트 수 에 포함시켜야한다고 생각합니다 .
DJMcMayhem

나는 당신이 의미한다고 생각 if(c>90)c=65하지만 제안에 감사드립니다. 좋은 생각입니다. 또한 포함시킬 것입니다. 감사합니다.
limelier

1

PHP, 76 69 바이트

for(;$i<26&&$a.=join(range(A,Z));)echo substr($a,$i**2,1+2*$i++)."
";
  • 26 개의 알파벳을 만들고 (a 이상) $ a로 연락하십시오
  • i <26의 루프
  • $ a 부분 문자열 시작 i ^ 2, 끝 2 * i + 1 표시
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.