5 좋아하는 편지


90

도전은 실제로 매우 간단합니다. 5 개의 고유 한 문자를 선택하고 (원하는 경우 가장 짧은 코드를 허용하는 5 개만 선택할 수 있음) 콘솔에 출력합니다. 그러나 트위스트는 다음 목록에 있어야한다는 것입니다.

 AAA      BBBB       CCCC     DDDD      EEEEE     FFFFF      GGG      H   H
A   A     B   B     C         D   D     E         F         G         H   H
AAAAA     BBBB      C         D   D     EEEE      FFFF      G  GG     HHHHH
A   A     B   B     C         D   D     E         F         G   G     H   H
A   A     BBBB       CCCC     DDDD      EEEEE     F          GGG      H   H


IIIII         J     K   K     L         M   M     N   N      OOO 
  I           J     K  K      L         MM MM     NN  N     O   O
  I           J     KKK       L         M M M     N N N     O   O
  I       J   J     K  K      L         M   M     N  NN     O   O
IIIII      JJJ      K   K     LLLLL     M   M     N   N      OOO 


PPPP       QQQ      RRRR       SSSS     TTTTT     U   U     V   V     W   W
P   P     Q   Q     R   R     S           T       U   U     V   V     W   W
PPPP      Q   Q     RRRR       SSS        T       U   U     V   V     W   W
P         Q  QQ     R  R          S       T       U   U      V V      W W W
P          QQQQ     R   R     SSSS        T        UUU        V        W W 


X   X     Y   Y     ZZZZZ
 X X       Y Y         Z 
  X         Y         Z  
 X X        Y        Z   
X   X       Y       ZZZZZ

추가 규칙 :

  • 동일한 문자의 5 개는 허용되지 않으며 반복 선택은 없습니다.
  • 각 글자는 자신의 수도를 ASCII 문자로 사용하여 그려야합니다.
  • 각 문자 출력은 "동일한 줄"에 있어야하며 각 문자 사이에 5 개의 공백이 있어야합니다.
  • 원하는 5 글자를 선택할 수 있습니다 . 이렇게하면 일부 코드를 재사용하고 바이트 수를 줄일 수 있습니다. 어떤 편지를 가장 효율적으로 사용할 수 있는지 알아내는 것은 어려운 일 중 하나입니다.
  • 후행 공백이 허용됩니다.
  • 하나의 후행 줄 바꿈은 허용되지만 하나 이상의 후행 줄 바꿈이 허용됩니다.
  • 이것은 코드 골프, 가장 적은 바이트 수의 승리입니다.

예 :

에이 비 씨 디이

 AAA      BBBB       CCCC     DDDD      EEEEE
A   A     B   B     C         D   D     E    
AAAAA     BBBB      C         D   D     EEEE 
A   A     B   B     C         D   D     E    
A   A     BBBB       CCCC     DDDD      EEEEE

EFLIP

EEEEE     FFFFF     L         IIIII     PPPP 
E         F         L           I       P   P
EEEE      FFFF      L           I       PPPP 
E         F         L           I       P    
EEEEE     F         LLLLL     IIIII     P    

미친

 CCCC     RRRR       AAA      ZZZZZ     Y   Y
C         R   R     A   A        Z       Y Y 
C         RRRR      AAAAA       Z         Y  
C         R  R      A   A      Z          Y  
 CCCC     R   R     A   A     ZZZZZ       Y  

매번 다른 문자 나 다른 전략으로 하나 이상의 답변을 제출하는 것을 두려워하지 마십시오. 다양한 방법으로 달성 할 수 있습니다.


21
나는 당신이 어떤 글자를 출력 할 것인지 선택하는 것을 좋아합니다. 골프에 다른 레이어를 추가합니다. ASCII 기술의 사소한 문제 : 많은 후행 공백과 2 개의 공백이 J있습니다.
ETHproductions

2
5 글자를 입력 할 때 보너스를 추가 할 수 있습니까?
Mukul Kumar

5
보너스는 눈살을 찌푸리고 너무 급격한 변화를하기에는 너무 많은 답변이 있습니다. 그러나 나는 당신에게 공감대를 줄 것이다;).
Magic Octopus Urn

1
@Titus 왜 필요한지 모르겠습니다. 후행이 더 의미가 있습니다. 당신이 논리적 방법을 설명 할 수 있다면 당신이 사용하는 언어의 한계논리가 아니라 당신이 작성한이 선두를 일으키는 \n, 나는 그것을 수 있습니다.
Magic Octopus Urn

1
@Titus 다음에 아니오. 후행 줄 바꿈과 공백은 특정 언어의 프로그래밍 제한으로 인한 것입니다.
Magic Octopus Urn

답변:


12

젤리 , 41 바이트

LICTE

“LICTE”Kż
141D+“ȷɓSɠ’“ðƁ ƥ“JrŀṘ’jḃ11Ç€ŒṙY

TryItOnline!

생각

문자 당 행당 각 "픽셀 값"의 실행 길이가 하나만 가능한 한 중간 정도가 비슷한 문자로 실행 길이 디코드를 사용하십시오.

행의 다른 실행 길이 디코드 값을 피하려면 "L"과 같이 편평한 시작을 설정하십시오.

가장 작은 차이가 산술적으로 추가 될 수 있도록 세 개의 가운데 행 중 하나의 다른 문자 (5를 찾을 수 없음)를 끝에 배치하십시오.

원하는 출력; 실행 길이; 이것들은 기본 11에서 변환되었습니다.

                                                  L,  , I,  , C,  , T,  , E   value
                                                  -------------------------
L         IIIII      CCCC     TTTTT     EEEEE     1, 9, 5, 6, 4, 5, 5, 5, 5   399633415
L           I       C           T       E         1,11, 1, 7, 1,11, 1, 7, 1   431646160+1
L           I       C           T       EEEE      1,11, 1, 7, 1,11, 1, 7, 4   431646160+4
L           I       C           T       E         1,11, 1, 7, 1,11, 1, 7, 1   431646160+1
LLLLL     IIIII      CCCC       T       EEEEE     5, 5, 5, 6, 4, 7, 1, 7, 5   1179122455

세 개의 값 399633415, 4316461601179122455기지국에 250젤리 코드 페이지 인덱스 등은 다음이다 ðƁ ƥ, ȷɓSɠ그리고 JrŀṘ런 렝스 정보를 캡슐화하는데 사용될 수있다.

코드

“LICTE”Kż - Link 1, make a run length encoding for a row of the output: row's run lengths
“LICTE”    - list of characters "LICTE"
       K   - join with spaces   "L I C T E"
        ż  - zip with input     e.g. [['L',1],[' ',9],['I',5],[' ',6],['C',4],[' ',5],['T',5],[' ',5],['E',5]]

141D+“ȷɓSɠ’“ðƁ ƥ“JrŀṘ’jḃ11Ç€ŒṙY - Main link
141D                            - 141 as a decimal list: [1, 4, 1]
     “ȷɓSɠ’                     - 431646160
    +                           - add: [431646161, 431646164, 431646161]
           “ðƁ ƥ“JrŀṘ’          - list [399633415,1179122455]
                      j         - join: [399633415, 431646161, 431646164, 431646161, 1179122455]
                       ḃ11      - convert to bijective base 11: [[1, 9, 5, 6, 4, 5, 5, 5, 5], [1, 11, 1, 7, 1, 11, 1, 7, 1], [1, 11, 1, 7, 1, 11, 1, 7, 4], [1, 11, 1, 7, 1, 11, 1, 7, 1], [5, 5, 5, 6, 4, 7, 1, 7, 5]]
                          Ç€    - call last link (1) as a monad for €ach
                            Œṙ  - run-length decode e.g. [['L',1],[' ',9],['I',5],...]
                                                            -> "L         IIIII..."
                              Y - join with line feeds

1
당신은 내가 05AB1E에서 할만 큼 똑똑하지 않다는 생각을 처음에했습니다! 놀라운 직업 남자.
Magic Octopus Urn

32

, 51 49 바이트 (ECXKI)

G←⁵↓³→⁴EM⁷→G↑²↗²→⁴CM⁶→GH↘↗³XM⁶→GH↓→↗³KM⁸→PTIII‖O↓

출력

EEEEE      CCCC     X   X     K   K     IIIII
E         C          X X      K  K        I  
EEEE      C           X       KKK         I  
E         C          X X      K  K        I  
EEEEE      CCCC     X   X     K   K     IIIII

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

세로 대칭 인 문자를 사용하여 위쪽 절반을 그린 다음 반영합니다. 이 중 대부분은 Polygon ( ) 및 PolygonHollow ( GH)를 사용하여 특정 문자로 일련의 연결된 선 세그먼트를 그립니다. 방향으로 사용하여 IMultiPrint ( )를 사용 T하면 더 쉽게 수행 할 수 있습니다 .

참고 : PolygonHollow는 다각형을 완성하거나 채우지 않고 지정된 세그먼트를 그립니다. 다각형이 8 개의 기본 방향 또는 심장 내 방향 중 하나의 간단한 선으로 완성 될 수 있으면 다각형이 완성되고 채워집니다 (원하는 것이 아님) . 그렇지 않으면 1 바이트를 절약하기 위해 PolygonHollow와 같이 작동합니다.

문자의 순서는 하나의 끝점에서 다음 끝점으로의 수평 이동 만 요구하도록 선택되었습니다. 커서가 진행되는 방법은 다음과 같습니다.

Cursor movement, drawing top halves of ECXKI


2
좋은. 나는 숯불 해결책을 시도하고 있었다. 그러나 문서의 부족은 나를 정직하게 죽였다
Bassdrop Cumberwubwubwub

6
@Bassdrop 그래, 우린 .. 음 .. [ GH문서 에 추가 됩니다]
DLosc

19

PowerShell을 V2 +, 138 128 114 112 106 105 바이트 (LICTD)

"L1    IIIII1 CCCC1TTTTT1DDDD
$("L11 I1  C11 T1  D   D
"*3)LLLLL1IIIII1 CCCC1  T1  DDDD"-replace1,'     '

아이디어는 문자 사이의 간격을 최대화하여 반복되는 압축을 얻을 수 있도록하는 것입니다.

Florent의 답변 에서 중간 행 중복 제거 트릭을 차용합니다 . 에 저장된 6 바이트 덕분에 벤 오웬 중간 세 행에 대한 문자열 곱셈을 사용하여, 그리고에 추가 바이트 감사 매트 .

출력은 227 바이트에서 다음과 같이 53.7 % 감소합니다.

PS C:\Tools\Scripts\golfing> .\5-favorite-letters.ps1
L         IIIII      CCCC     TTTTT     DDDD
L           I       C           T       D   D
L           I       C           T       D   D
L           I       C           T       D   D
LLLLL     IIIII      CCCC       T       DDDD

첫 번째 대답이 전혀 기대하지 않은 것이었을 때 나는 그것을 좋아합니다. 깔끔한 방법.
매직 문어 Urn

2
어때 $("L11 I1 C11 T1 D D`n"*3)대신에 중앙 3 개 라인
벤 오웬

@ BenOwen 탁월한 아이디어-감사합니다!
AdmBorkBork

13

자바 스크립트, 110 109 바이트 (CLOUD)

` CCCC5L9 OOO6U3U5DDDD
${x=`C9L9O3O5U3U5D3D
`,x+x+x} CCCC5LLLLL6OOO7UUU6DDDD`.replace(/\d/g,c=>" ".repeat(c))

출력은 227 바이트입니다.

 CCCC     L          OOO      U   U     DDDD
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
 CCCC     LLLLL      OOO       UUU      DDDD

1
중간 3 열에서 중복 제거를 잘 사용합니다.
AdmBorkBork

12

ES6 (자바 스크립트) 194, 181 바이트 (IGOLF / ANY)

이것은 길고 실제로 최적화되지는 않았지만 (최소한은 아니지만) 비트 맵 데이터 만 변경하여 특정 메시지를 인쇄하도록 수정할 수 있습니다.

편집 : 내부 감소맵으로 대체 하고 패딩에 비트 시프트를 사용하십시오.

골프

[0x1f73a1f,0x484610,0x49c61e,0x48c610,0x1f73bf0].map(r=>[0,1,2,3,4].map(p=>('0000'+(r>>(20-p*5)<<5).toString(2)).substr(-10).replace(/(1|0)/g,b=>' IGOLF'[(p+1)*b])).join``).join`\n`

데모

[0x1f73a1f,0x484610,0x49c61e,0x48c610,0x1f73bf0].map(r=>[0,1,2,3,4].map(p=>('0000'+(r>>(20-p*5)<<5).toString(2)).substr(-10).replace(/(1|0)/g,b=>' IGOLF'[(p+1)*b])).join``).join`\n`

IIIII      GGG       OOO      L         FFFFF     
  I       G         O   O     L         F         
  I       G  GG     O   O     L         FFFF      
  I       G   G     O   O     L         F         
IIIII      GGG       OOO      LLLLL     F         

이론

편지를 받아 :

IIIII      
  I        
  I        
  I        
IIIII 

이진 행렬로 변환 (비트 맵)

11111
00100
00100
00100
11111

다른 4 글자에 대해서도 동일하게 행을 스캔합니다.

11111 01110 01110 10000 11111

16 진 문자열로 변환 (base36 또는 인쇄 가능한 ASCII를 사용해야 함)

0x1f73a1f

비트 맵을 얻기 위해 다른 알고리즘에 동일한 알고리즘을 적용하십시오.

역순으로 렌더링합니다.


1
당신은 :-) 2 바이트를 저장하기 위해 정규식에서 괄호를 제거 할 수 있습니다
ETHproductions

1
[32979487,4736528,4834846,4769296,32979952] 16 진수 표현보다 짧습니다
Florent

@ETHproductions True, 최적화를 위해 다시 돌아올 때 이것을 사용합니다. 고마워!
zeppelin

1
당신은 대체 할 수 /(1|0)/g에 의해 /\d/g몇 바이트를 저장합니다. 또한 \n실제 새 줄로 바꿀 수도 있습니다.
Florent

> 16 진수 표현보다 짧습니다. 맞습니다 (0x로 인해). 이러한 특정 문자의 경우 다음 반복에서 연속 16 진수 (또는 Base32 / Base36 / ASCII) 문자열로 압축합니다. . > / (1 | 0) / g를 / \ d / g로 바꾸면 몇 바이트를 절약 할 수 있습니다. 또한 \ n은 실제 줄 바꿈으로 대체 될 수 있습니다. 그래, 당신의 팁에 감사합니다, 나는 다시 이것으로 돌아 오면 그것을 사용할 것입니다.
zeppelin

12

PHP, 107 (104) 102 94 86 바이트

Ok 나는이 방법으로 가장 작은 출처를 가지고 있다고 확신합니다. 나는 다섯 글자의 가능한 모든 조합을 생성하고 gzip으로 압축하는 스크립트를 작성했습니다. 압축률이 가장 짧은 두 가지 솔루션 인 LODIC과 LDOIC이 있습니다. 나는 말하기가 더 재미 있기 때문에 전자와 함께 가고 있습니다.

출처:

<?=gzinflate(base64_decode('81GAA39/fwjDBQggLE8QgDCdgYDLB6EYioGqoRisHkrTSCUIEOtWAA'));

산출:

% php foo.php
L          OOO      DDDD      IIIII      CCCC
L         O   O     D   D       I       C
L         O   O     D   D       I       C
L         O   O     D   D       I       C
LLLLL      OOO      DDDD      IIIII      CCCC

3
's 를 삭제하여 2 바이트를 절약 할 수 있습니다 . 문자열은 자체 값을 갖는 상수로 처리됩니다.
user59178

젠장, 난 항상 그 일을 잊어 버려요. :)
Alex Howansky

L이 마지막 문자라면 더 많은 바이트를 절약 할 수 있습니다.
Magic Octopus Urn

허점을 활용하는 것이 좋습니다.
Ismael Miguel

2
창의성은 주관적이고 헤아릴 수 없습니다. 문제의 목표는 코드 크기를 최소화하는 것이며 이것이 골프가 아닌 언어에 대한 가장 짧은 항목입니다.
Alex Howansky

10

05AB1E , 44 바이트

재미있었습니다.
시간이 있으면 다시 돌아와서 골프를 쳐야한다고 생각합니다.

CP-1252 인코딩을 사용합니다 . carusocomputing의 답변에서
영감을 얻었습니다 .

에코

‘ÓÑOIHH‘SðýJ3×S•Td<UÕ‘áÓ?¢tWvkÔÚ•S)øü×J3äû»

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

설명

‘ÓÑOIHH‘문자열을 푸시합니다 "ECOOIHH".

SðýJ3×S문자열을 공백으로 조인하고 세 번 반복하여 목록으로 변환합니다.
결과 목록은 ['E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H']입니다.

•Td<UÕ‘áÓ?¢tWvkÔÚ•숫자를 푸시합니다 564631055513119191317171314619131717500.

S)ø 목록과 번호를 함께 압축합니다.

ü×J페어 단위 문자열 반복을 수행하고 함께 결합합니다.
결과는 문자열 EEEEE CCCC OOO IIIII H HE C O O I H HEEEE C O O I HHHHH입니다.

3äû»그것을 3 조각으로 나누고 첫 번째와 두 번째 조각을 역순으로 추가하고 줄 바꿈으로 결합합니다.


13
" 왜 •Td<UÕ‘áÓ?¢tWvkÔÚ•숫자를 밀어 564631055513119191317171314619131717500
붙이지 않는가

3
@ geisterfurz007 : 더 정확하게 말하면, 그것은 기본 10 숫자의 기본 214 표현입니다 :)
Emigna

잠재적으로 더 높은베이스로 올라갈 수 있다면 줄이 짧아 질까요?
geisterfurz007

@ geisterfurz007 : 우리가 할 수 있다면. 불행히도 214는 05AB1E의 최대 값입니다.
Emigna

3
당신은 젤리를 이길 수 있습니다. 나는 당신을 믿습니다. 3 바이트 남았습니다.
Magic Octopus Urn

9

자바 스크립트 (ES6), 96 바이트 (DIOCL)

`${x="DDDD6IIIII6OOO7CCCC5L"}
${y=`D3D7I7O3O5C9L
`,y+y+y+x}LLLL`.replace(/\d/g,d=>" ".repeat(d))

여기서 아이디어는 중간 세 줄을 동일하게 만들뿐만 아니라 첫 번째 줄을 마지막 줄과 거의 동일하게 만드는 것입니다. 이 설명에 완벽하게 맞는 4 개의 문자 만 있기 때문에 CDIO,L 그것은 단지 문자열의 끝에서 4 개 추가 문자를 필요로 다음 최선의 방법입니다.

Florent의 답변 과 마찬가지로 결과를 반환하는 스 니펫입니다. 함수 여야하는 경우 3 바이트를 추가하십시오.

테스트 스 니펫


D첫 번째 바이트를 넣어 바이트를 저장할 수 있습니다 .

감사합니다. 나는 이동했다 C과거를 I하고 O뿐만 아니라
ETHproductions

아, 그렇습니다. 흥미롭게도 내 배치 솔루션이 개선되는 이유는 동일하지만 I바로 직후에 가질 수는 없습니다 C.
Neil

9

배시 + figlet로 coreutils와, 55,440 용액, 112 (106)를 바이트마다

 set H E L P D;for l;do figlet -f banner $l|sed "s/.//3;s/.//5;s/#/$l/g;2d;5d">$l;done;paste $@|expand -t10

산출:

HH EEEEE L PPPP DDDD  
헬프 DD 
HHHHH EEEE L PPPP DD 
헬프 패드 
HH EEEEE LLLLL P DDDD  
                                              

우리는 이미 ASCII 아트 프로그램 을 가지고 있습니다 ! 배너 는 7 × 7 문자를 출력 제외 글꼴은 거의 작업을 수행합니다. 흠, 세 번째와 다섯 번째 열과 두 번째와 다섯 번째 줄을 제거하고 그것이 무엇을 제공하는지 봅시다.

많은 문자가 필요한 방식, 즉 BDEFHJLPTU Z로 출력됩니다.

첫 번째 set 명령 의 인수 를 해당 문자의 조합으로 바꾸면 여전히 올바른 결과를 얻을 수 있습니다! 따라서 이것은 우리에게 11 * 10 * 9 * 8 * 7 = 55440 솔루션을 제공하며 각 솔루션은 길이가 106 바이트입니다.


1
도전 과제를 읽을 때 처음으로 생각한 것은 "이 문제를 해결하기 위해 작은 조각을 사용해야합니다"
FliiFe

6

05AB1E , 102 90 89 69 바이트 (EOIXC)

•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•34B2ð:2ôvy`×}J3äû»

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

출력 (230 바이트) :

EEEEE      OOOO     IIIII     X   X      CCCC
E         O    O      I        X X      C    
EEEE      O    O      I         X       C    
E         O    O      I        X X      C    
EEEEE      OOOO     IIIII     X   X      CCCC

69/230 = 70 % 압축

설명:

이론은 수직 대칭 문자를 선택한 다음 처음 3 줄을 회문으로 인코딩하는 것이 었습니다. 기본적으로 2 바이트 쌍으로 {Letter}의 {#}으로 인코딩되었습니다. 더 좋은 방법이 있다고 확신합니다.

•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B
                    <decodes to>
"E5 6O4 5I5 5X1 3X1 6C4E1 9O1 4O1 6I1 8X1 1X1 6C1 4E4 6O1 4O1 6I1 9X1 7C1 4"

2ô            # Split into encoded pairs.
  vy   }      # Loop through each letter and number pair.
    `×        # Add the letter X number of times.
       J      # Join together.
        3ä    # Split into 3 parts length.
          û   # Palindromize.
           »  # Print separated by newlines.

Emigna 덕분에 -20 바이트 덕분에 곧 대화를 나눌 것입니다.).


1
문자열을로 바꾸면 19 바이트를 절약 할 수 있습니다 •Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B2ð:. 인코딩에 관해 궁금한 점이 있으면 05AB1E 채팅에 참여하십시오.
Emigna

1
또한 일 45ô수 있습니다 .
Emigna

@Emigna A는 세로 대칭이 아니며 둘 다입니다 F. 일단 당신이 사용하기 시작하면 G그것이 당신이 옳은 것을 망칠 것이라고 추측 합니까? 또한 압축 방법론을 사용하여 행당 1 회 이상 발생하는 문자를 피하고 싶었습니다. 그 솔루션을 골프화하고 나를 이길 원한다면 예제를 환영합니다 :).
Magic Octopus Urn

있다 0에서 O(오른쪽, 중앙 행)
ETHproductions은

1
•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•O같은 바이트 수로 수정합니다 .
Emigna

5

자바 스크립트 ES6, 168 바이트, CHAMP

우리는 사람을 찾는 것을 멈출 수 CHAMP있습니다.

f=_=>
` C3cHaHdA2dMaMcP3
CgHaHcAaAcMM MMcPaP
CgH4cA4cM M McP3
CgHaHcAaAcMaMcP
 C3cHaHcAaAcMaMcP`.replace(/[a-z\d]/g,(a,i,c)=>+a?c[i-1].repeat(a):' '.repeat(parseInt(a,36)-7))

a.innerHTML = f()
<pre id=a>


5

Brainf *** 512 411 바이트

더 나은 리두 :

이것은 테이프를 최적화하고 문자 인쇄를위한 설정 문자를 희생하여 더 나은 작업을 수행합니다. 이 테이프는 'C' 'E' ' ' 'F' 'I' 'L' '\n'효율이 향상되는 것처럼 보입니다 . 나는 내부 공간이 없기 때문에 이것을 선택했습니다. 필요한 것 이상으로 문자와 공간 사이를왔다 갔다 할 필요가 없습니다.

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

무슨 일을하고 싶다면 :

Set the tape with 67,69,32,70,73,76,10
++++++++[>+++++++++>+++++++++>++++>+++++++++>+++++++++>+++++++++>+<<<<<<<-]>----->--->>-->+>++++>++<<<< 
.<<....>>.....<.....>.....>.....<.....>>.....<<.....>>>.>.<<<<<< First Line
.>>.........<.>.........>.<...........>>.<<.......>>>.>.<<<<<< Second Line
.>>.........<....>......>....<........>>.<<.......>>>.>.<<<<<< Third Line
.>>.........<.>.........>.<...........>>.<<.......>>>.>.<<<< Fourth Line
.<<....>>.....<.....>.....>.<.........>>.....<<.....>>>..... Fifth Line

산출:

 CCCC     EEEEE     FFFFF     IIIII     L
C         E         F           I       L
C         EEEE      FFFF        I       L
C         E         F           I       L
 CCCC     EEEEE     F         IIIII     LLLLL

전 제출 :

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

출력을 위해 테이프를 훨씬 쉽게 설정 할 수 있기 때문에 ABCDE를 사용하기로 결정했지만 A, B 및 D 내부의 모든 음수 공간과 문자 배치에서 문자에서 ''로 낭비되는 시간과 문자 테이프 끝 부분의 끝이 나를 죽였다고 생각합니다.

나는 값을 가진 테이프로 끝내고 0 0 'A' 'B' 'C' 'D' 'E' ' ' \n거기서 출력했습니다.

++++++++[>++++<-]>[>++>++>++>++>++>+<<<<<<-]>+>++>+++>++++>+++++>>++++++++++     This all sets up the tape as 0 0 A B C D E ' ' '\n'
<.<<<<<...>>>>>......<<<<....>>>>.......<<<....>>>.....<<....>>......<.....>>.<<<<<< First Line
.>>>>>...<<<<<.>>>>>.....<<<<.>>>>...<<<<.>>>>.....<<<.>>>.........<<.>>...<<.>>.....<.>>.<<<<<< Second Line
.....>>>>>.....<<<<....>>>>......<<<.>>>.........<<.>>...<<.>>.....<....>>.<<<<<< Third Line
.>>>>>...<<<<<.>>>>>.....<<<<.>>>>...<<<<.>>>>.....<<<.>>>.........<<.>>...<<.>>.....<.>>.<<<<<< Fourth Line
.>>>>>...<<<<<.>>>>>.....<<<<....>>>>.......<<<....>>>.....<<....>>......<..... Last Line

산출:

 AAA      BBBB       CCCC     DDDD      EEEEE
A   A     B   B     C         D   D     E
AAAAA     BBBB      C         D   D     EEEE
A   A     B   B     C         D   D     E
A   A     BBBB       CCCC     DDDD      EEEEE

[<]>3 회 사용 하여 6 바이트를 절약 할 수 있습니다 .
Jo King

5

Vim, 116 바이트 99 바이트

엘리트

@DrMcMoylex의 도움으로 100 세 미만으로 골프를 쳤다.

9i59Yo191919171
E L I T CPqqjx:%s/\d/\=repeat('"',submatch(0))
q8@q3bi  Y7w.PP4rE{wl4r 22wl.2x

여기에는 인쇄 할 수없는 문자가 포함되어 있으므로 아래 (Vim 스타일)에 추가 했으므로 볼 수 있습니다.

9i5^[9^AYo191919171
E L I T C^[Pqqjx:%s/\d/\=repeat('^R"',submatch(0))
q8@q3bi  ^[Y7w.PP4rE{wl4r 22wl.2x

TryItOnline!

기본적으로 젤리 응답과 동일한 길이의 디코딩을 사용합니다. 나는 바닥에있는 상단을 (희망적으로) 반복 할 수있는 글자를 사용했고 가운데는 모두 같을 것이다. 상단, 하단 및 중간이 만들어지면 문자를 편집하여 올바르게 만듭니다.

  1. I에 두 개의 공백을 추가하십시오 (아래에 더 자세히 설명).
  2. T에 공백 두 개를 추가하십시오
  3. E의 막대를 추가
  4. L의 상단을 제거
  5. T의 바닥을 제거하고 두 공백을 삭제하십시오.

두 자리 숫자를 허용하지 않기 때문에 I에 두 개의 공백을 추가해야합니다 (따라서 구분 기호가 필요하지 않습니다. 이로 인해 11이 필요한 9 개의 공백이 생깁니다.


PPCG에 오신 것을 환영합니다. :)
Magic Octopus Urn

나는 Vim 답변을 거의 구걸했습니다.
Zoltán Schmidt

2
나는 항상 vim을 찬성했습니다. :) 일부 개선 사항이 있습니다. 1) 대체 명령에 슬래시가 필요하지 않습니다. 2) 몇 가지 유용한 동의어 : Y대신 Vy, FI대신 ?I<cr>, {대신 gg, w대신 fl. 3) r대신에 를 사용 R하면을 제거 할 수 있습니다 <esc>.
DJMcMayhem

5

MATL , 49 바이트

5:lyI&(g84*t0*ytP+g73*yy!qy5XyPl5LY(90*yy!P12-&hc

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

이것은 문자를 생성합니다 TIHZN:

TTTTT     IIIII     H   H     ZZZZZ     N   N
  T         I       H   H        Z      NN  N
  T         I       HHHHH       Z       N N N
  T         I       H   H      Z        N  NN
  T       IIIII     H   H     ZZZZZ     N   N

설명

T처음부터 비교적 쉽게 구축 할 수 있습니다. I본질적으로 T수직 반사 와 함께 얻을 수 있습니다 . H되어 I전치. N이다 Z전치 수직으로 반영됩니다.

5:        % Push [1 2 3 4 5]
lyI&(     % Write [1 ;2; 3; 4 ;5] in the third column, filling with zeros.
          % This gives the shape of the 'T'
g84*      % Change nonzeros into 84 (ASCII for 'T'). Zeros will be displayed
          % as spaces
t0*       % Duplicate and multiply by zeros. This gives the separator
y         % Duplicate from below: pushes the 'T' again
tP+       % Duplicate, flip vertically, add. Gives the shape of the 'I'
g73*      % Change nonzeros into 73 (ASCII for 'I')
yy        % Duplicate separator and 'I' array
!         % Transpose. Gives the shape of the 'H'
q         % Subtract 1. Transformss 73 into 72 (ASCII for 'H'), and 0 into -1,
          % which will later be changed back into 0 when converting to char
y         % Duplicate separator
5XyP      % Size-5 identity matrix flipped vertically: gives slash of the 'Z'
l5LY(     % Fill first and last rows with ones. Gives the shape of the 'Z'
90*       % Multiply by 90 (ASCII for 'Z')
yy        % Duplicate separator and 'Z' array
!P        % Transpose and flip vertically. Gives shape of the 'N'
12-       % Subtract 12 to yield ASCII code for 'N'. 0 is converted to -12
&h        % Concatenate the nine arrays horizontally
c         % Convert to char. Implicitly display

4

V , 62 , 53 바이트

iC±  I· D³ Dµ O³ O¸ Z3ñYp$XñS ´Cµ µIµ ´D· ³O¶ µZYHP

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

이 결과는 C I D O Z다음과 같습니다.

 CCCC     IIIII     DDDD       OOO      ZZZZZ
C           I       D   D     O   O        Z
C           I       D   D     O   O       Z
C           I       D   D     O   O      Z
 CCCC     IIIII     DDDD       OOO      ZZZZZ

3

Perl, 109 바이트 (ABCDE)

참고 : 여기에는 인쇄 할 수없는 문자가 포함되어 있으며 테스트를 쉽게하기 위해 이스케이프 처리했습니다 xxd. 아래 덤프.

$_="\x0e\x1e\x0f\x1e\x1f
\x11\x11\x10\x11\x10
\x1f\x1e\x10\x11\x1e
\x11\x11\x10\x11\x10
\x11\x1e\x0f\x1e\x1f";s!.!(eval'(sprintf"%5b",ord$&)=~y/01/ '.(A..E)[$i++%5].'/r').$"x5!ge;print

문자 위치의 이진 표현을 숫자로 저장 한 다음 이진으로 다시 압축을 풀고 01 조회를 사용하여 s를 공백으로, s를 해당 문자로 . 글자 표현을 저장하는 것은 매우 쉽지만, 그것들을 바꾸는 것은 내가 기대했던 것보다 더 까다로 웠습니다. 이 작업을 수행하는 더 좋은 방법이 있다고 확신하므로 계속해서 사용할 수 있습니다.

파일을 다시 만들려면을 실행 xxd -r > favourite-letter.pl하고 아래에 붙여넣고 Ctrl+를 누릅니다 D.

0000000: 245f 3d22 0e1e 0f1e 1f0a 1111 1011 100a  $_="............
0000010: 1f1e 1011 1e0a 1111 1011 100a 111e 0f1e  ................
0000020: 1f22 3b73 212e 2128 6576 616c 2728 7370  .";s!.!(eval'(sp
0000030: 7269 6e74 6622 2535 6222 2c6f 7264 2426  rintf"%5b",ord$&
0000040: 293d 7e79 2f30 312f 2027 2e28 412e 2e45  )=~y/01/ '.(A..E
0000050: 295b 2469 2b2b 2535 5d2e 272f 7227 292e  )[$i++%5].'/r').
0000060: 2422 7835 2167 653b 7072 696e 74         $"x5!ge;print

용법

perl favourite-letter.pl
 AAA      BBBB       CCCC     DDDD      EEEEE     
A   A     B   B     C         D   D     E         
AAAAA     BBBB      C         D   D     EEEE      
A   A     B   B     C         D   D     E         
A   A     BBBB       CCCC     DDDD      EEEEE     

3

파이썬 2, 124 바이트

d,i,o,c,l,s,n='DIOCL \n'
T=d*4+s*6+i*5+s*6+o*3+s*7+c*4+s*5+l
M=d+s*3+d+s*7+i+s*7+o+s*3+o+s*5+c+s*9+l+n
print T+n,M,M,M,T+l*3

마찬가지로 내 다른 대답 하지만, 더 나은 편지 쓰기을 선택하여. 이것을 출력합니다 :

DDDD      IIIII      OOO       CCCC     L
D   D       I       O   O     C         L
D   D       I       O   O     C         L
D   D       I       O   O     C         L
DDDD      IIIII      OOO       CCCC     LLLL

3

Befunge, 120 바이트 (CKYTF)

출처

#&49+14489+56*1449135*44711425*:12p9138*7+:89+:56*55*v_@
-1g05$$_\#!:2#-%#16#\0#/g#20#,g#+*8#4<80\9*2p06%5p05:<^:,g2!%5:

산출

  CCCC     K   K     Y   Y     TTTTT     FFFFF
 C         K  K       Y Y        T       F
 C         KKK         Y         T       FFFF
 C         K  K        Y         T       F
  CCCC     K   K       Y         T       F

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

중요한 경우 내 출력에 각 줄에 선행 공백이 있음을 지적해야합니다. 규칙은 그것을 명시 적으로 금지하지 않았으므로 괜찮습니다. 그렇지 않은 경우이 항목을 경쟁이 아닌 항목으로 간주하십시오.

설명

단어의 문자는 25 개의 정수로 구성된 간단한 시퀀스로 인코딩되며 각 정수는 5 픽셀의 이진 표현입니다. Befunge에서는 9보다 큰 정수를 인스턴스화하기 위해 계산을 수행해야하므로, 필요한 계산 수를 최소화하기 위해 문자를 선택하고 순서를 다시 정하기보다는 잠재적 인 반복 값을 복제 할 수 있도록 순서를 정했습니다.

또한 감소하는 인덱스의 모듈로 5에 의해 인덱스 된 배열에 32로 오프셋 된 각 문자의 ASCII 값을 저장해야합니다 (따라서 0 4 3 2 1 ...). 32로 오프셋하는 이유는 값에 픽셀 비트 (1 또는 0)를 곱한 다음 32에 더하여 공백이나 필요한 문자를 생성 할 수 있기 때문입니다.

이 문자 값 배열은 코드의 처음 5 바이트에 저장되므로 쉽게 액세스 할 수 있습니다. 그런 다음 글자 선택에 영향을 미쳤는데, 그 값은 코드 시퀀스로 해석 될 때 의미가 있어야했기 때문입니다. 이것이 순서 #&49+입니다. #오버 점프 &와는 49+불과 이후 무시 스택에 13을 푸시합니다.


을 사용하여 정수 입력을 요청 &하지만 프로그램이 실제로 입력을받지 않습니다 ... 무슨 일이 벌어지고 있습니까?
Brian Gradin

이 캐릭터는 '#'
12Me21

@ 12Me21 마지막 단락에서 그 이유를 설명했습니다.
James Holderness

3

루비, 110 (107) 102 바이트 (DOCIL)

puts a=?D*4+(t=' '*7)+?O*3+t+?C*4+(s=' '*5)+?I*5+s+?L,['D   D'+s+'O   O'+s+?C+' '*11+?I+t+?L]*3,a+?L*4

인쇄물

DDDD       OOO       CCCC     IIIII     L
D   D     O   O     C           I       L
D   D     O   O     C           I       L
D   D     O   O     C           I       L
DDDD       OOO       CCCC     IIIII     LLLLL

편집 : join물건 을 피하고 움직여서 일부 문자를 저장했습니다.


3

Befunge-98 , 109 98 바이트 (FUNGE / ANY)

:5%!2>j#4_;\$&\#;\:0`!#@_:::'@/'@*-\'@/2%*' +,:'@/:2/-'@*-\1+:5%!2>j#4_;' 3k:4k,#;:55*%!2>j#4_;a,;

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

입력 (115 자) :

2022 1141 1134 935 2021 102 1141 1262 103 101 998 1141 1390 1639 997 102 1141 1646 1127 101 102 949 1134 935 2021 0

입력 포맷에 이진수 정수 버전 인쇄 문자의 역전 맵 (예를 들어, N의 두 번째 행은 때문에 마스크이다 ), 및 인쇄하는 ASCII 문자는 마이너스 32 .aaaaabbbbbbaaaaaNN N10011bbbbbb

또한 입력을 만들기 위해 befunge-98 프로그램을 만들었습니다.

4k~44p34p24p14p04p          v
+1.+-**244g4%5\**88_@#`0:&::<

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

출력 (255 자) :

FFFFF     U   U     N   N      GGG      EEEEE     
F         U   U     NN  N     G         E         
FFFF      U   U     N N N     G  GG     EEEE      
F         U   U     N  NN     G   G     E         
F          UUU      N   N      GGG      EEEEE     

(255-(115 + 98)) / 255 = 16 % 압축

설명:

:5%!2>j#4_;\$&\#;\:0`!#@_     Get input if it is available, else end program
:::'@/'@*-\'@/2%*' +,         Output the current input character (or a space,
                              if the mask dictates so)
:'@/:2/-'@*-                  Throw away current mask bit
\1+                           Swap loop iterator to top of stack, increment it
:5%!2>j#4_;' *3k:4k,#;        If iterator % 5 == 0, print five spaces
:55*%!2>j#4_;a,;              If iterator % 25 == 0, print newline character

이것은 아마도 꽤 골프입니다. 잠재적 인 감축에 대해 거의 생각하지 못했습니다.

이론적으로 이것은 5x5 ASCII 아트의 모든 시퀀스를 인쇄 할 수 있습니다.

3 자리 숫자에서 벗어날 수 있도록 도와 준 James Holderness 에게 감사합니다 !


더 생각을하기 48*로 교체 할 수 있습니다 ' (이것은 결국 98 년 이후), 및 88*교체 할 수 있습니다 '@. 세 자리 숫자에서 벗어날 수 있도록 도와 주셔서 감사합니다!
Brian Gradin

3

C #을, 290 279 267 265 바이트

편집 : @milk 덕분에 12 바이트가 절약되었습니다! @TheLethalCoder 덕분에 2 개 더

골프 :

void F(){string g="     ",h="H   H",A="A   A",B=h+"|"+A;Func<string,string>j=a=>a.Replace("|",g)+"\n";Console.Write(j(" SSSS|"+h+"| AAA |RRRR |PPPP")+j("S    |"+B+"|R   R|P   P")+j(" SSS |HHHHH|AAAAA|RRRR |PPPP")+j("    S|"+B+"|R  R |P")+j("SSSS |"+B+"|R   R|P"));}

언 골프 드 :

public void F()
{
  string g = "     ", h = "H   H", A = "A   A", B = h + "|" + A;
  Func<string, string> j = a => a.Replace("|", g) + "\n";
  Console.Write(j(" SSSS|" + h + "| AAA |RRRR |PPPP") +
  j("S    |" + B + "|R   R|P   P") +
  j(" SSS |HHHHH|AAAAA|RRRR |PPPP") +
  j("    S|" + B + "|R  R |P") +
  j("SSSS |" + B + "|R   R|P"));
}

출력 :

 SSSS     H   H      AAA      RRRR      PPPP
S         H   H     A   A     R   R     P   P
 SSS      HHHHH     AAAAA     RRRR      PPPP
    S     H   H     A   A     R  R      P
SSSS      H   H     A   A     R   R     P

C 코드의 길이가 290279 바이트라고 생각한 초가있었습니다.
Steven H.

1
@StevenH. 그것은 : C #에서 그런 식으로 골프 느낀다
피트 아덴

이와 같은 로컬 함수를 정의하면 -12 바이트Func<string,string>j=a=>a.Replace("|",g)+"\r\n";
milk

@milk Cool 감사합니다! :)
Pete Arden

\ r \ n에 \ r이 필요합니까? 2 바이트를 절약 할 것
TheLethalCoder

3

Stax , 33 바이트 "BCDEO"

┌☼&.àτ▲█╟;c♦▌ΩÅ╡≤♫¿(┌▲▲≡3*╤J s*è«

실행 및 디버깅

나는 그 편지를 골랐다

  • 수직 대칭이있다
  • 가운데 3 개의 열이 동일한

이러한 속성은 각 문자가 3x3 격자로 표현 될 수 있음을 의미합니다. 다음은 숫자로 표시되는 9 개의 영역입니다.

12223
45556
78889
45556
12223

문자 "B"를 고려하십시오. 3 개의 8 진수로 나타낼 수 있습니다 656. 각 자릿수에는 3 개의 비트가 포함되어있어 해당 문자에 사용할 수있는 영역을 제어합니다. 이 기술은 "CDEO"에도 적용됩니다.

압축 해제, 압축 해제 및 주석 처리 된 프로그램은 다음과 같습니다.

"!^*14>G2eo"!   crammed integer literal             [63672, 54545, 64565]
|p              palindromize                        [63672, 54545, 64565, 54545, 63672]
m               for each, run this and output...    
  E             extract decimal digits to array     [6, 3, 6, 7, 2]
  `)"+0`        compressed string literal           "BCDEO"
  \             zip arrays                          [[6, 66], [3, 67], [6, 68], [7, 69], [2, 79]]
  {             map array using block               
    E           explode array                       6, 66
    Z\          tuck a zero under, and make pair    6, [0, 66]
    :B          custom base convert                 [66, 66, 0] 
    3)          pad to length 3                     [66, 66, 0]
    3O\         tuck a one under a 3 and pair       [66, 66, 0], [1, 3]
    :B          repeat elements corresponding times [66, 66, 66, 66, 0]
    A(          pad right to length 10              [66, 66, 66, 66, 0, 0, 0, 0, 0, 0]
  m

이것을 실행


2

파이썬 3 234 228 227 166 바이트 (CLOUD)

import base64,gzip;b=b'ABzY86gn$d0{>HR1_A{T@KJyRe}8`nBNU1i6kLFS%Nec$q1YdaQ51tPO;sx(oDBkK&Q=Hwg(wC)8vxUXJX_-c000';print(gzip.decompress(base64.b85decode(b)).decode())

인쇄물:

 CCCC     L          OOO      U   U     DDDD
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
 CCCC     LLLLL      OOO       UUU      DDDD

2

파이썬 3, 178 바이트

e,f,i,t,h,s='EFITH '
p=print
S=s*5
D=i+s*9+t+s*7
A=e*5+S
F=S+i*5+S
B=e+s*9+f+s*11+D+h+s*3+h
C=h+s*3+h
p(A+f*5+F+t*5+S+C)
p(B)
p(e*4+s*6+f*4+s*8+D+h*5)
p(B)
p(A+f+s*4+F,s+t+s*7+C)

이기는 아니지만 압축을 사용하지 않습니다. 그것은 이것을 만든다 :

EEEEE     FFFFF     IIIII     TTTTT     H   H
E         F           I         T       H   H
EEEE      FFFF        I         T       HHHHH
E         F           I         T       H   H
EEEEE     F         IIIII       T       H   H

어떤 도움이라도 환영받을 것입니다. 나는 파이썬 2를 사용하지 않았다 p=print. repl.it에서 사용해보십시오.


2
그 F는 무슨 일이야?
Destructible Lemon

@DestructibleWatermelon 나는 그것을 놓친 방법을 모르겠지만 지금 수정되었습니다.
nedla2004

원래 크기 이하로 골프 : 160 바이트, Python 2
CalculatorFeline

오히려 사용하는 것보다 p=print, 단일 사용할 수 있습니다 printkw 인수와 함께 문을 sep='\n'.
Luca Citi

2

루비, 101 바이트 (TIFLE)

"o@h@u".bytes{|i|k=3+i%2;puts "%-10s"*5%"TIFLE".chars.map{|j|i/=2;(i/16>i%2*3?'  ':'')+j+j*k*(i%2)}}

TTTTT     IIIII     FFFFF     L         EEEEE
  T         I       F         L         E
  T         I       FFFF      L         EEEE
  T         I       F         L         E
  T       IIIII     F         LLLLL     EEEEE

각 줄에 단일 문자 블록 (1,4 또는 5 자 길이)이 필요한 문자를 선택했습니다. F, L 및 E는 정당하지만 왼쪽과 단일 문자 (수직 부분)가 인쇄되는 선행 공백이 필요합니다. 이러한 공백을 추가하기위한 코드는 개선 될 수있는 것처럼 보입니다.

언 골프

"o@h@u".bytes{|i|               #for each byte (64 always set, 32...2 bits set for horiz bar, 1 bit=length of bar)
   k=3+i%2                      #decode least sig. bit for no of chars printed if a 1 is found
   puts "%-10s"*5%              #puts "%-10s%-10s%-10s%-10s%-10s" format string (expects array of subsitutes)
     "TIFLE".chars.map{|j|      #for each letter 
        i/=2                    #halve i
        (i/16>i%2*3?'  ':'')+   #if i large enough and i%2 zero, add leading space (or T and I)
        j+j*k*(i%2)             #print the letter once, then additional letters if bar required.
     }
}

2

C 176 바이트

내재 된 정수가 허용되면 다른 8 바이트를 잘라낼 수 있습니다.

#define C ,//11 bytes
#define R(r)r r r r r//21 bytes
T(int l){int c=324;printf(R(R("%c")R(" "))"\n" R(R(C(++c,l>>=1)&1?c/5:32)));}//77 bytes
f(){T(67010460);T(34702434);T(66160574);T(34702434);T(67010466);}//65 bytes

출력 : EDCBA

EEEEE     DDDD       CCCC     BBBB       AAA      
E         D   D     C         B   B     A   A     
EEEEE     D   D     C         BBBB      AAAAA     
E         D   D     C         B   B     A   A     
EEEEE     DDDD       CCCC     BBBB      A   A     

작동 방식 : 매크로 R은 코드 조각을 5 회 반복합니다. 이 문제에 5가 나타나는 빈도를 감안할 때 매우 유용합니다. 이제 T (int)가하는 일이 있습니다. T는 정수를 취하여 비트 필드로 사용하여 문자를 인쇄 할 위치와 공백을 인쇄 할 위치를 결정합니다. 예를 들어 주어진 경우 다음 T(0b11111111100111111110011100)을 출력 EEEEE DDDD CCCC BBBB AAA합니다. 어떤 문자가 인쇄되는지 점진적으로 카운트 다운합니다. 먼저 E, D, C, B, A를 인쇄합니다. f ()를 호출하면 전체 내용이 인쇄됩니다.


2

배치, 135 바이트 (DOCILe)

@set b=     
@set s=@echo DDDD%b%  OOO%b%  CCC%b% IIIII%b%L
@set t=@echo D   D%b%O   O%b%C%b%%b% I%b%  L
%s%
%t%
%t%
%t%
%s%LLLL

참고 : 첫 번째 줄은 5 칸으로 끝납니다.


2

세게 때리다, 95, 111 바이트 (EBASH)

골프

base64 -d<<<4ADlADhdACLpBDSMnNdRTj0Ob2qBPVT3HkdMRZzZ3kL+yIb6mhkz06EM+KOspSDy2EBoUKKL6pfwNo0akV0zAA==|xz -dqFraw

설명

원시 LZMA 바이트 스트림을 통한 Base64

데모

>base64 -d<<<4ADlADhdACLpBDSMnNdRTj0Ob2qBPVT3HkdMRZzZ3kL+yIb6mhkz06EM+KOspSDy2EBoUKKL6pfwNo0akV0zAA==|xz -dqFraw

EEEEE     BBBB       AAA       SSSS     H   H
E         B   B     A   A     S         H   H
EEEE      BBBB      AAAAA      SSS      HHHHH
E         B   B     A   A         S     H   H
EEEEE     BBBB      A   A     SSSS      H   H

기권

예, 이것이 실제로 이식성이 없다는 것을 잘 알고 있습니다. 그래서 첫 번째 경우에는 -qxz 경고 를 억제하기 위해 바이트를 지불했습니다.


2

파이썬 2 208 194 193 바이트

이것은 내 첫 번째 코드 골프입니다.)

for i in range(0,25,5):
 for c,p in {'M':18732593,'O':15255086,'N':18667121,'T':32641156,'Y':18157700}.items():
  print format(p,'025b')[i:i+5].replace('0',' ',).replace('1',c)+'   ',
 print

산출:

Y   Y    M   M    TTTTT     OOO     N   N
 Y Y     MM MM      T      O   O    NN  N
  Y      M M M      T      O   O    N N N
  Y      M   M      T      O   O    N  NN
  Y      M   M      T       OOO     N   N

사전을 사용하면 문자의 정렬 순서가 파괴되지만 필수는 아닙니다.


왼쪽 상단 모서리를 사용하지 않는 글자를 취하면 -4를 할 수 있습니다. 이로 인해 25 비트 대신 24 비트 숫자가 생성되어 16 진수의 숫자가 1 줄어 듭니다.
Pleiadian

2

펄 94 바이트.

제 4 글자 ( D, O, I, C) 구체적 유사한 상부 및 하부 라인을 선택하는, 중간 것과 유사하다. 다른 유사한 문자가 없으므로 동일한 알고리즘을 적용하고 누락 된 4L을 추가 할 수 있도록 "L"을 선택했습니다.

for(($a="D5 6O3 6I5 6C4 5L")."
","D 3D 5O 3O 7I 7C 9L
"x3,$a."4L
"){s/(.)(\d)/$1x$2/eg;print}

\n코드에서를 새로운 줄로 바꾸어 여분의 바이트를 절약했습니다 .

결과:

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