알파벳 파 인쇄


37

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

ABABABABABABABABABABABABAB
BCBCBCBCBCBCBCBCBCBCBCBCBC
CDCDCDCDCDCDCDCDCDCDCDCDCD
DEDEDEDEDEDEDEDEDEDEDEDEDE
EFEFEFEFEFEFEFEFEFEFEFEFEF
FGFGFGFGFGFGFGFGFGFGFGFGFG
GHGHGHGHGHGHGHGHGHGHGHGHGH
HIHIHIHIHIHIHIHIHIHIHIHIHI
IJIJIJIJIJIJIJIJIJIJIJIJIJ
JKJKJKJKJKJKJKJKJKJKJKJKJK
KLKLKLKLKLKLKLKLKLKLKLKLKL
LMLMLMLMLMLMLMLMLMLMLMLMLM
MNMNMNMNMNMNMNMNMNMNMNMNMN
NONONONONONONONONONONONONO
OPOPOPOPOPOPOPOPOPOPOPOPOP
PQPQPQPQPQPQPQPQPQPQPQPQPQ
QRQRQRQRQRQRQRQRQRQRQRQRQR
RSRSRSRSRSRSRSRSRSRSRSRSRS
STSTSTSTSTSTSTSTSTSTSTSTST
TUTUTUTUTUTUTUTUTUTUTUTUTU
UVUVUVUVUVUVUVUVUVUVUVUVUV
VWVWVWVWVWVWVWVWVWVWVWVWVW
WXWXWXWXWXWXWXWXWXWXWXWXWX
XYXYXYXYXYXYXYXYXYXYXYXYXY
YZYZYZYZYZYZYZYZYZYZYZYZYZ
ZAZAZAZAZAZAZAZAZAZAZAZAZA

명세서

  • 모든 대문자 대신 소문자를 모두 인쇄 할 수 있습니다. 그러나 대소 문자는 출력 전체에서 일관성이 있어야합니다.
  • 후행 줄 바꿈 하나를 추가로 인쇄 할 수 있습니다.

채점

이것은 약간 변동하는 알파벳 파이므로, 코드도 바이트 수 측면에서 작아야합니다. 실제로, 바이트 수 측면에서 가장 작은 코드가 이깁니다.


39
진심으로, 다른 알파벳 도전?
Nathan Merrill

6
@NathanMerrill 많은 사람들은 그들이 공감할 가치가 있다고 생각하지 않습니다. (나는 당신이 하향식을 암시하지 않습니다, 나는 단지 말하고 있습니다.)
Conor O'Brien

14
패턴이 충분히 다른 한, 알파벳, 10 진수, 별표 및 밑줄 등을 사용하면 문제가되지 않습니다.
Dennis

9
@Dennis는 사용 된 문자에 관계없이 과도하게 사용되는 이러한 유형의 "패턴"문제인 IMO입니다. 나는 그 주제를 생각하지 않지만 신선한 공기를 즐길 것입니다.
Nathan Merrill

13
... 처음 15 시간 만에 대답 만 39명 - 그것은 알파벳 문제에 대한 더 이상의 수요가있다 분명
trichoplax

답변:


37

C, 60 바이트

main(i){for(;i<703;)putchar(i++%27?65+(i/27+i%27%2)%26:10);}

10
이것은 천재입니다.
Leaky Nun

코드 골프 도전에서 C를 만나서 반갑습니다.
Micheal Johnson

@MichealJohnson " see C ", IC에서했던 일. ;) 그리고 나는 Leaky Nun에 동의합니다 . 때때로 나는 사람들이 어떻게 이러한 독창적 인 답변을 생각해 내는지 궁금합니다.
Kevin Cruijssen

@KevinCruijssen 그것은 의도하지 않은 롤이었다.
Micheal Johnson

17

Brainfuck, 104 바이트

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

1
실제로 Hello World와 동일한 크기입니다. 감동적인!
phyrfox

3
@phyrfox 실제로 ...
Sp3000

14

볼록, 10 바이트

U_(+]D*zN*

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

U               Predefined Variable: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 _(+            Push a copy with the 'A at the end.
    ]           Add both strings to an array.
     D*         Repeat array 13 times. D defaults to 13.
       z        Transpose.
        N*      Join by newlines. N defaults to "\n"


8

Vim, 85 83 바이트

:h<_<cr><cr><cr>YZZP:s/./\0\r/g<cr><c+v>ggy25Pqqlxj:let @a='xkPjj'<cr>25@akia<esc>25klq11@qh<ctrl+v>25jylpl<c+v>25jdGdd

나는 이것이 더 골프를 타는 것을 알고있다. 그러나 나의 머리는 아프다. 그래서 나는 이제 멈춰야한다.

<cr>Enter 키이고 <c+v>ctrl + v이며 <esc>이스케이프 키입니다. 그것들은 모두 1 바이트로 계산되었습니다.

나는 이것의 gif를 기록했지만 망쳤다. 비디오는 괜찮습니다 : http://recordit.co/ldLKvho9Gi


8

루비, 42 39 38 37 바이트

@ user81655 덕분에 -3 바이트 @manatwork
덕분에
-1 바이트 @NotthatCharles 덕분에 -1 바이트

?A.upto(?Z){|a|puts (a+a.next[0])*13}

repl.it에서 참조하십시오 : https://repl.it/CmOJ


7

체다, 48 바이트

print(65|>90).map(l->@"[l,l>89?65:l+1]*13).vfuse

체다는 문자열에 좋습니다 : D

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

설명

print
  (65|>90)            // Range from 65 (A) to 90 (Z)
  .map(l->            // Map through range
    @"                // Convert following array of char codes to string
      [l,             // The character 
       l>89?65:l+1]   // See below for explanation
      *13             // Repeat 13 times
  ).vfuse             // Vertically fuse

무엇을 l>89?65:l+1합니까? 음 89의 문자 코드입니다 Y. 기본적으로 l>89문자가 있는지 확인하는 Z것이므로 다시 반환해야합니다 A. l>89거짓 인 경우 . l+1다음 문자로 돌아갑니다


나는 당신 @"이 그들 사이에 삽입 할 수 있다고 생각 했습니다.
Leaky Nun

이것은 함수 반환을 사용하지 않습니까?
코너 오브라이언

@ ConorO'Brien 예?
Downgoat


@ ConorO'Brien 아, 도전 사양에서 보지 못했습니다. 수정
Downgoat

7

젤리 , 10 바이트

26ḶḂØAṙZj⁷

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

작동 원리

26ḶḂØAṙZj⁷  Main link. No arguments.

26Ḷ         Yield [0, ..., 25].
   Ḃ        Bit; compute the parity of each intger.
    ØAṙ     Rotate the alphabet by these amounts.
       Z    Zip; transpose rows and columns.
        j⁷  Join, separating by linefeeds.

Y그때는 존재 하지 않았습니까 ? 또한 100k 담당자에게 축하드립니다!
Outgolfer Erik

감사! 확인 Y후 이의가 게시 된 후 이틀이 추가되었습니다.
Dennis

당신은 더 골프를 할 수 있기 때문에 26ḶḂØAṙZY. 그러나 지금 당장은 여전히 ​​좋습니다.
Outgolfer Erik

7

하스켈, 60 58 바이트

mapM putStrLn[[0..12]>>[a,b]|a:b:_<-scanr(:)"A"['A'..'Z']]

"A"로 시작 하면 오른쪽 scanr(:)문자부터 목록이 작성 ['A'..'Z']됩니다. (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]). (a:b:_)각 하위 목록의 첫 두 문자 (최소 두 문자 이상)와 일치하고 13 개의 사본을 만듭니다.


정기적으로 다른 언어에서 사용되는 일부 치트를 고려할 때 실제 인쇄를 포함하지 않는 것이 공정하다고 생각합니다. 이 경우 "(++"\ n ") = <<"로 바꾸고 2 바이트를 저장할 수 있습니다. 아마도 더.
MarLinn

@MarLinn : 아니요, 그렇게 생각하지 않습니다. 골프 언어는 암시 적 인쇄를 염두에두고 설계되었으며 대부분의 다른 답변에는 일종의 인쇄 명령이 있습니다. Btw unlines는보다 짧습니다 (++"\n")=<<.
nimi

7

PowerShell, 49 43 바이트

TimmyD의 리믹스 :

65..89|%{-join[char[]]($_,++$_)*13};"ZA"*13

49 바이트였다 :

0..25|%{(""+[char]($_+++65)+[char]($_%26+65))*13}

출력 예


6

파이썬 2, 70 68 54 바이트

목록 기반 솔루션 :

L=map(chr,range(65,91))
for i in range(-26,0):print(L[i]+L[i+1])*13

그러나 왜 목록을 작성합니까? 감사합니다 LeakyNun :

for i in range(26):print(chr(i+65)+chr(-~i%26+65))*13

6

R, 72 67 60 56 바이트

write(matrix(LETTERS[c(1:26,2:26,1)],26,26,T),"",26,,"")

@Giuseppe 에게 감사합니다여분의 4 바이트 에게 !

rep60 바이트의 구식 솔루션 :

for(i in 1:26)cat(rep(LETTERS[c(i,i%%26+1)],13),"\n",sep="")

온라인 통역사를 참조 하십시오 . 여분의 7 바이트를 끈 @ user5957401 에게 감사드립니다 !

72 바이트의 오래된 매트릭스 기반 솔루션 :

for(i in 1:26)cat(matrix(LETTERS[c(1:26,2:26,1)],26,26)[i,],"\n",sep="")

온라인 통역사를 참조 하십시오 .


1
indext를 변경 i in 1:26한 다음 문자 선택을 변경 LETTERS[c(i,i%%26+1)]하면 6 또는 7 바이트처럼 드롭 할 수 있습니다.
user5957401

1
@ user5957401 arf 나는 완고하게하고 있었기 때문에 (i+1)%%26그 반대의 일 을하지 않았다! 감사!
plannapus

1
행렬을 다시 사용하여 56 바이트 :)
Giuseppe

5

MATL , 13 바이트

1Y2tn:!to~!+)

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

1Y2    % Predefined string literal: 'AB···Z'
tn:    % Duplicate, number of elements, range: gives [1, 2, ···, 26]
!      % Transpose into a column vector
to~!   % Duplicate and transform into [0, 1, 0, 1, ···, 1] using modulo 2
+      % Addition with broadcast. Gives 2D numeric array
)      % Index (modularly) into string. Implicitly display.

5

해파리 , 26 바이트

P
+'A
~
| S
+$ r2
 ,'
r'

마지막 두 줄에 인쇄 할 수없는 문자가 있습니다. 온라인으로 사용해보십시오!

설명

이것은 기본적으로 산술 조작 방식입니다. 0-1 패턴이 교대로 26x26 그리드를 만들고 각 행의 인덱스를 행의 모든 ​​요소에 추가하고 mod 26을 줄이고의 ASCII 값을 추가하십시오 A. 해파리의 문자는 특수 플래그가있는 숫자 일뿐이며 모든 산술 작업은 예상대로 수행됩니다.

아래에서 위로 :

  • '의 문자 리터럴; ASCII 코드 26으로 인쇄 할 수없는 문자가 뒤 따르며 해당 문자를 나타냅니다.
  • 낮은 값 r은 0에서 25까지의 문자 범위를 계산합니다.
  • ,두 인쇄 할 수없는 문자의 쌍을 형성한다.
  • 높을수록 r인수가 주어지며 2범위를 형성합니다 [0 1].
  • $범위를 취하여 인쇄 할 수없는 한 쌍인 다른 인수로 지정된 모양으로 범위를 변경합니다. 이것은 26x26 매트릭스의 교번 행을 제공합니다0 1 0 1 0 1 ...
  • 낮을수록 +문자 범위 0-25가이 행렬에 추가됩니다. 행의 가산에 분배, 그래서 로우 나는 만큼 증가 . 남쪽 인수가 문자로 구성되어 있기 때문에 문자 행렬로 변환됩니다.
  • ~|플립 인수 계수이다 : (상기 사우스 인자 (상기 숯 매트릭스) 동쪽 인수 모듈러 감소 S이 인쇄 할 수없는 문자 (26) 그래서, 회전 인자 추구 공정 남쪽).
  • 값이 높을수록 결과 행렬의 모든 좌표에 +리터럴 A이 추가 됩니다.
  • P인쇄, 따옴표없이 한 줄에 각 행이다 매트릭스 형식의 결과.

1
골프를 치고 싶었지만 코드를 작성한 사람의 이름을 보았습니다.
Leaky Nun

@LeakyNun 당신은 여전히 ​​시도 할 수 있습니다! 26 바이트가이 과제에 적합하지만.
Zgarb

5

Vim, 31 바이트

:h<_↵↵↵YZZPJra0qqy2l13Plr↵25@qD

Return 키는 어디에 있습니까 ?

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


5

펄, 26 바이트

@Dom Hastings의 솔루션 . (12 나보다 더 짧은 바이트!)
-1 바이트 덕분에 @Ton Hospel을

say+($_++,chop)x13for A..Z

-M5.010또는로 실행 -E:

perl -E 'say+($_++,chop)x13for A..Z'

이것을 33 say+($_++,$_--=~/^./g)x13for A..Z으로 줄 say+($_++,$_--)x13for A..Z
Dom Hastings

내가 왜 --거기에 있는지 모르겠지만 필요하지 않습니다! O_o. 27 :say+($_++,/^./g)x13for A..Z
Dom Hastings

@DomHastings 잘 했어요! say+($_,$_++)x13for A..Z처음에는 효과가 없었지만 시도했지만 그 방향으로 더 나아가 야합니다!
Dada

1
say+($_++,chop)x13for A..Z바이트 1 개 더 절약
Ton Hospel

@TonHospel 감사합니다. 감사합니다.
Dada

5

T-SQL 133 바이트 (골프 : @ t-clausen.dk)

SELECT REPLICATE(Char(number+65)+IIF(number=25,'A',Char(number+66)),13)FROM spt_values WHERE number<26and'P'=TYPE

T-SQL, 151 바이트

CTE를 사용하여 일련의 숫자 생성

;WITH n(a,v) AS(SELECT CHAR(65)+CHAR(66), 66 UNION ALL SELECT CHAR(v)+CHAR(v+1), v+1 FROM n WHERE v < 91)SELECT REPLICATE(REPLACE(a,'[','A'),13) FROM n

T-SQL, 155 바이트

SELECT REPLICATE(Char(number+65)+ CASE WHEN number=25 THEN 'A' ELSE Char(number+66) END, 13) FROM master.dbo.spt_values  WHERE name IS NULL AND number < 26

나는 당신의 대답 을 113 자로 줄였습니다. 저는 TSQL에서 매우 다른 답변을 제공했습니다
t-clausen.dk

@ t-Clausen.dk 훌륭합니다. 답변을 게시하십시오. 나는 지울 것이다.
Anuj Tripathi

답변을 삭제할 이유가 없습니다. 내 바이올린을 사용하여 답변을 향상시킬 수 있습니다. 1 시간 전에 이미 게시 했으므로 TSQL을 즐기는 경우 다른 답변을 살펴보십시오. 나는 그들 대부분을 위해 바이올린을 만들었습니다
t-clausen.dk


4

Pyth, 10 바이트

jCm.<G~!ZG

데모

설명:

jCm.<G~!ZG
  m      G    Map over G, predefined to the lowercase alphabet.
              This will give 26 columns.
   .<G        Left shift (cyclically) G by
        Z     Z elements. Z is initialized to 0.
      ~!      After using its value, logical not Z. (0 -> 1, 1 -> 0)
 C            Transpose
j             Join on newlines

당신이 Pyth에 대해 것처럼 니스, 내가 많이 알고 싶어
스탠 스트 럼에게

4

Brainfuck, 88 86 바이트

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

8 비트 셀과 테이프가 왼쪽에 묶이지 않은 인터프리터가 필요합니다. 온라인으로 사용해보십시오!


3

루아, 80 65 바이트.

s = string c = s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13)) end

Leaky Nun의 도움으로

c=("").char for i=1,26 do print((c(64+i)..c(65+i%26)):rep(13))end

루아는 문자열 처리와 관련하여 매우 부족한 언어이므로 좁힐 수있는 최선의 방법입니다.


PPCG에 오신 것을 환영합니다! 좋은 첫 포스트! 불필요한 공백을 제거하면 5 바이트를 절약 할 수 있습니다.s=string c=s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13))end
GamrCorps

for i=1,26 do print(((64+i):char()..(65+(i%26)):char()):rep(13))end(테스트되지 않음)
Leaky Nun

하기 때문에 string.rep(x,13)기본적으로x:rep(13)
새는 수녀

권리! 문자열 메타 테이블이 기본적으로 문자열 라이브러리에 대한 색인을 잊어 버렸습니다.
ATaco

좋지만 65+ (i % 26)와 같은 숫자는 저장하지 않는 한 문자열로 계산되지 않습니다. 나는 그것의 지옥을 위해 그 일을하기 위해 노력할 것입니다.
ATaco


3

05AB1E, 12 바이트

ADÀ)øvyJ5Ø×,

설명

AD            # push 2 copies of the alphabet
  À           # rotate the 2nd one left by 1
   )ø         # add to list and zip
     v        # for each
      yJ      # join the pair
        5Ø×   # repeat it 13 times
           ,  # print with newline

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


나는 이것이 오래된 질문이라는 것을 알고 있지만 나는 나 자신을 도울 수 없다. ADÀ)ø13×»9 바이트와도 잘 작동합니다.
Datboi

@Datboi : 그것은 실제로 작동하지만, 불행히도이 질문이 게시 될 당시에는 작동하지 않았습니다. (
Emigna

3

매스 매 티카, 82 75 67 66 바이트

Print@FromCharacterCode@PadLeft[{},26,{i-1,i}~Mod~26+65]~Do~{i,26}

대문자 대신 소문자로 인쇄하지만 기술적으로 더 짧습니다.

Mathematica, 64 바이트

Print[""<>FromLetterNumber@Table[{i-1,i}~Mod~26+1,13]]~Do~{i,26}

1
를 사용하여 좋은 트릭 PadLeft.
Leaky Nun


1

MATLAB, 47 38 바이트

a=(65:90)';char(repmat([a a([2:end 1])],1,13))

char(repmat([65:90;[66:90 65]]',1,13))

첫 번째는 알파벳의 열 배열을 ASCII로 만들고 오른쪽으로 이동 된 사본을 열로 추가하고 결과 26 * 2 배열을 열로 13 번 복제 한 다음 문자 배열로 캐스트하고 기본적으로 인쇄합니다.

두 번째는 알파벳과 쉬프트 된 알파벳의 2 * 26 배열을 만들고, 옮긴 다음 위와 같이 계속합니다.


[... '']대신을 사용하여 1 바이트를 저장할 수 있습니다 char(...).
pajonk

그리고 단순히 [65:90;66:90 65]2 바이트 를 절약 하여 사용할 수 있습니다 .
pajonk



1

PHP, 102 바이트

<?php $a='ABCDEFGHIJKLMNOPQRSTUVWXYZA';$i=-1;while($i++<25){echo str_repeat(substr($a,$i,2),13)."\n";}

알파벳 문자열에서 따옴표를 제거 할 수 있습니다. \ n을 \ n 대신 실제 enter로 바꾸십시오. @insertusername에서 그 아이디어를 훔쳤습니다. 그래서 내가 의미하는 바에 대한 그의 대답을 확인하십시오. 편집 : 짧은 태그 표기법 <?도 사용하십시오. <? 뒤에 공백이 필요하지 않습니다. 그래서 <?$a='ABC'도 작동합니다.
Jeroen

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