아담 웨스트를 기리기 위해


90

Adam West는 세상을 떠났고 PPCG에 대한 그의 기억을 존중하고 싶습니다. 이 사람으로 알려진 많은, 많은 다른 것들이 있지만, 원래 배트맨 으로서의 그의 역할보다 더 중요한 것은 없습니다 . 나는 계부 아버지가 오늘날까지도 구식 배트맨과 로빈을 아직도보고 있다는 것을 항상 기억할 것입니다. 이 도전은 본질적으로 단순한 것이며, 아담 웨스트 (Adam West)였던 복잡한 사람과는 전혀 관련이 없습니다. 그러나 이것이 남자 경력의 가장 상징적 인 이미지이기 때문에 내가 생각해 낼 수있는 최선입니다.


나는 이것을 이전에 게시하고 싶었지만 누군가가 더 나은 것을 생각해 내기를 기다리고있었습니다.


후행 공백 / 개행 문자 유무에 관계없이 다음을 출력하십시오.

           *                         *
       ****          *     *          ****
     ****            *******            ****
   ******            *******            ******
  *********         *********         *********
 ***********************************************
*************************************************
*************************************************
*************************************************
 ***********************************************
  *****       *********************       *****
    ****       ***    *****    ***       ****
       **       *      ***      *       **

이것은 이며 가장 낮은 바이트 수가 이깁니다.


7
인코딩 된 문자열을 금지해야합니다. 정말 재미 없어요!
sergiol 2016 년

7
그는 원래 배트맨이 아니 었습니다. 그 영광은 루이스 윌슨에 속합니다.
얽히고 설킨

42
제목을 보았을 때 출력이 "나나 나나나 나나나 나나나 나나나 나나나 나나나"가 될 것이라고 생각했습니다.
D Krueger

3
@DKrueger : 또 다른 질문에서 그렇게 :)
Olivier Dulac

4
작년에 왜 시작되지 않았습니까? 캐리 피셔, 프린스, 데이빗 보위, 앨런 릭맨!
caird coinheringaahing

답변:


47

젤리 , 44 바이트

“¡©İ'¹!ðkW>ṅṙẏṙlœf:ߌÆ@Ƥ’b25o99Jx$ị⁾ *s25ŒBY

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

작동 원리

“¡©İ'¹!ðkW>ṅṙẏṙlœf:ߌÆ@Ƥ’

이것은 숫자 리터럴입니다. 모든 문자는 Jelly의 코드 페이지 에서 1 기반 인덱스로 대체되며 결과는 bijective base-250 정수로 해석됩니다.

58616171447449697510361193418481584558895594063391402

다음, b25베이스에 그 정수를 변환 (25)o99대체 099 산출

11 1 20 4 10 1 8 4 12 4 3 6 12 4 2 9 9 5 1 99 1 24 2 5 7 11 4 4 7 3 4 3 7 2 7 1 6 2

Jx$대체 J 번째 염기 25 진수 NN 개의 사본 J를 수득

1 1 1 1 1 1 1 1 1 1 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 7 7 7 7 7 7 7 7 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 11 11 11 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 15 15 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 18 18 18 18 18 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 23 23 24 24 24 24 24 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26 26 26 27 27 27 27 28 28 28 28 29 29 29 29 29 29 29 30 30 30 31 31 31 31 32 32 32 33 33 33 33 33 33 33 34 34 35 35 35 35 35 35 35 36 37 37 37 37 37 37 38 38

이제 ị⁾ *문자 쌍으로 색인합니다. 인덱싱은 1 기반이며 모듈 식이므로 홀수는 공백, 별표가있는 공백으로 대체됩니다. 이 결과

           *                    ****          *        ****            ****   ******            ****  *********         ***** *************************************************************************************************** ************************  *****       ***********    ****       ***    ***       **       *      **

s25결과를 길이가 25 인 덩어리로 자릅니다 . 각 청크를 자체 줄에 쓰면

           *             
       ****          *   
     ****            ****
   ******            ****
  *********         *****
 ************************
*************************
*************************
*************************
 ************************
  *****       ***********
    ****       ***    ***
       **       *      **

반송 원자 ŒB수득 첫 문자없이 반전 사본 첨부함으로써 각 청크 palindromizes

           *                         *           
       ****          *     *          ****       
     ****            *******            ****     
   ******            *******            ******   
  *********         *********         *********  
 *********************************************** 
*************************************************
*************************************************
*************************************************
 *********************************************** 
  *****       *********************       *****  
    ****       ***    *****    ***       ****    
       **       *      ***      *       **       

마지막으로 Y실제 줄 바꿈을 소개합니다.


1
그리고 나는 생각했다 “QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY53 바이트에서 충분히 짧다 ...
에릭 Outgolfer

나는 14 가지 다른 것들을 시도해 보았고 마침내 시행 착오로 이것에 도달했습니다. 내가 직접 시도 할 때까지 "0을 99로 대체"의 의미를 이해하지 못했습니다.
Magic Octopus Urn

156

Wordfuck , 5761 2686 바이트

그의 이름을 소스 코드로 사용하면 Adam West가 어떤 영예를 얻습니다.

adam west adam west adam_wes t_a dam_we st_a dam_ west adam west adam west adam west_ad am_west_a dam_we st ad am we st ad am we st ad am west_a dam_we st_a dam_ west_ada m_w est ada m_w est ada m_west_ adam west_a dam_west_ adam_we st_ ad am_west ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am_wes t_ adam_w est_ adam west adam west adam west adam west adam we st_adam west_ad am we st ad am we st adam_w es t_ ad am west_ad am we st ad am we st ad am we st_ada m_ west_ad am we st ad am west_a da m_west_ ad am we st ad am we st ad am west_a da m_ we st adam_w es t_adam_ west_ad am we st ad am west_a da m_ we st adam_we st ad am we st ad am we st ad am we st_ada m_ we st ad am we st adam_we st ad am we st ad am we st ad am we st_ada m_ we st ad am_wes t_ adam_we st_adam we st ad am_wes t_ ad am we st ad am_west ad am we st ad am we st ad am we st adam_w es t_ ad am we st ad am_west ad am we st ad am we st ad am we st adam_w es t_ ad am we st adam_w es t_adam_ west_ad am we st_ada m_ we st ad am we st ad am west_ad am we st ad am we st ad am west_a da m_ we st ad am we st ad am_west ad am we st ad am we st ad am_wes t_ ad am we st ad am we st adam_w es t_adam_ west_ad am west_a da m_ we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st_ada m_ west_ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am west_a da m_west_ ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am_wes t_ adam_we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st adam_w es t_adam_ west_ad am west_a da m_ we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st_ada m_ west_ad am_west ad am west_a da m_ we st ad am_west ad am we st ad am we st_ada m_ we st ad am we st ad am we st ad am we st ad am we st ad am west_ad am we st ad am we st adam_w es t_ ad am we st_ada m_ west_ad am_west ad am we st adam_w es t_ ad am west_ad am we st ad am we st adam_w es t_ ad am_west ad am we st adam_w es t_ ad am we st_adam we st ad am west_a da m_ we st_adam we st ad am we st ad am_wes t_ ad am we st_ada m_ west_ad am_west ad am we st ad am we st_ada m_ we st_adam we st ad am we st ad am_wes t_ adam_we st ad am we st ad am_wes t_ ad am west_ad am we st ad am we st_ada m_ west_ad am we st ad am we st adam_w es t!

온라인으로 사용해보십시오! (번역 된 brainfuck)

아담 웨스트 노래 (@carusocomputing 감사)


69
이것은 끔찍하다. 나는 그것을 좋아한다.
TheWanderer 2016 년

25
흠. 예. 아주 좋은,하지만 난 당신이 라인 1. 밑줄 잊었다 생각
Mateen Ulhaq

2
이것을 테스트 할 수있는 방법이 있습니까?
얽히고 설킨

4
@Wilf PCCG에 오신 것을 환영합니다! 우리는 이 사이트에서 실제로 경쟁 하지는 않습니다. 물론 이것은 당첨 된 솔루션은 아니지만 재미 있고 도전적인 테마이므로 더 많은 사람들이 즐길 수 있도록 돕습니다. 곧 답변을 공표하기를 바라고 있습니다!
Uriel


67

파이썬 530 529 528 524 바이트

import zlib as Holy
B=list("NNAAAnAAnnAnaAannnaaaaNaAAnNanAaAanNNaNNaNaanNNANanNNANaAnAaANANAAnAaANNnAanAaNnAaAANNAaAnNANAaaANNAanAaNaNNNAaNNanAAnNNnaaaNANANANnnaaaNaaAAAANaNaNaNAnNAAAAaaaaANAaNnnAaAaNAAaANNnaaNnNnaannaaAaananannNnAAAAAanAananANAnaAAnANAAaaaAaaanaaAAaanNAnanAAnnnANAnNAnnAnnnanaNNaaaNaNNaAAnNAaaANNNANAnAaaAaNaANnNNNaaAanaaaanaaaaaAaAaNnNnnaAnANaNnnANanNA")
A=dict(N='11',A='01',n='10',a='00')   
T=""
POP=BIFF=POW=OOF=lambda:A[B.pop()]
while B:T+=chr(int(POP()+POW()+BIFF()+OOF(),2))
print Holy.decompress(T)

5
오 주여, 한동안 열심히 웃지 않았습니다. NAanaANANANANANAANAnaNanaanaNA
매직 문어 Urn

9
코드 골프에서, 우리는하고 가정 바이트 작은 계산하기 위해,하지만 항목은 오히려입니다 무거운 . ;)
PM 2Ring

34
때때로, 더 큰 유익을 위해 희생해야합니다.
rrauenza 2016 년

1
배트맨이 말한 것 같습니다. ;) 나는 B.pop(0)약간 성가신 것을 발견해야합니다 . B훨씬 더 효율적이고 더 짧은 것을 사용할 수 있도록 반전하지 않는 이유는 무엇 B.pop()입니까? 은 pop(0)하나 개의 슬롯 아래 남아있는 모든 요소 목록을 이동한다. 물론 C 속도로 발생하지만 문자열 끝에서 터지는 것보다 여전히 덜 효율적입니다.
PM 2Ring

5
별명에 POP, BIFF, POW, OOF제가 내 모니터에 마시는 무슨 뱉어했다. 고마워 lol. +1.
rayryeng

21

자바 스크립트 (ES6) 148 146 바이트

_=>`n2zh2
f8l2b2l8
b8pep8
7cpepc
5ijiji
3yyq
0
0
0
3yyq
5afy8fa
98f69a96f8
f4f2d6d2f4`.replace(/./g,c=>'* '[(n=parseInt(c,36))&1].repeat(n/2||49))

데모


12

파이썬, 149142 바이트

@ PM2Ring 덕분에 7 바이트 절약

for l in"b1d 74a13 54c4 36c4 2995 1o 0p 0p 0p 1o 257b 447343 727162".split():x=''.join(s*int(k,36)for s,k in zip(' *'*3,l));print(x+x[-2::-1])

좋은. 7 바이트를 면도 할 수 있습니다 :x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
PM 2Ring

걱정 마. 더 짧은 Python 버전을 작성할 수있었습니다. ;)
PM 2Ring

1
@ PM2Ring 당신은 나의 +1을 얻었다
Uriel

12

MATL , 61 59 바이트

' *'60:'*u9|K9j[~F9R,>ejc4Q,7;F\1l_=7sFR'F11:ZaY"13e)25ZvZ)

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

작동 원리

여기에는 다음과 같은 표준 기술이 사용됩니다.

  • 이미지는 가로 대칭 이므로 왼쪽 절반 (중심 열 포함) 만 인코딩됩니다.
  • 이미지는 열 주요 순서 (아래로, 가로로)로 선형화되고 결과 시퀀스는 런 길이 인코딩 됩니다.
  • 결과 실행 길이는에서 1~ 까지의 값을 가지므로 실행 길이 11시퀀스는 기본 변환 에서 기본에서 기본 11으로 압축됩니다94 (작은 따옴표를 제외한 인쇄 가능한 ASCII 문자는 이스케이프해야 함).

1
열 전공 순서로 60 개의 런이 있지만 행 전공에서는 38 개의 런이 있습니다. 바이트를 절약 하시겠습니까?
Dennis

@Dennis 문제는이 경우 실행 길이가 [1:12 20 24 99]이므로 압축이 더 어렵다는 것입니다. 내 최고의 시도는 60 바이트에있다
루이스 Mendo

정확한 세트를 구성하는 대신, 간단히 기본 25를 사용하고 0을 99로 대체하여 예를 들어 Y|? 실제로 그것이 더 짧은 지 테스트하기에 충분한 MATL atm을 모릅니다 ...
Dennis

@Dennis 유망 해 보인다. 세트를 사용하여 [1:24 99]나는 한 바이트를 제거 . 내가 사용하는 경우 [0:24](기본 25) 내가 설정하는 방법을 모르는 099몇 바이트
루이스 Mendo에게

1
오른쪽 Y|은 젤리 / 파이썬에서와 같이 MATL / 옥타브에서 작동하지 않습니다. 후자는 99를0 or 99 산출합니다 ...
Dennis

7

05AB1E , 47 바이트

„ *19×S•«M;Ó8ζ?èYÑ?½¨/Ž´.δòÈÖ<•25вт<19ǝ×J13ä€û»

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


포트 데니스 알고리즘이 맞습니까?
아웃 골퍼 에릭

@EriktheOutgolfer : replace 99 trick그를 빌려 주었습니다 (4 바이트를 똑바로 절약했습니다). 그래도 더 좋은 방법을 찾고 있습니다.
Emigna 2016 년

.∞대신 -1을 사용하여 €û»(미러는 미러를 적용하기 전에 레거시 버전에서 먼저 개행의 목록을 암시 적으로 조인합니다). 나는 또한 ₂в대신에 사용하려고 25в했지만 불행히도 압축 정수는 1 바이트 더 길므로 아무것도 저장하지 않습니다 •2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в.
Kevin Cruijssen

7

VIM, 168 156 바이트

:nm N a <C-v><ESC>
:nm A a*<C-v><ESC>
:nm B aY<C-v><ESC>yyp!!rev<C-v><CR>kJh4xo<C-v><ESC>
11NA13NB7N4A10NA3NB5N4A12N4AB3N6A12N4AB2N9A9N5ABN24AB25ABkyyppjN24AB2N5A7N11AB4N4A7N3A4N3AB7N2A7NA6N2ABdd

이것은에 대한 유닉스 환경을 가정합니다 rev. 나는 N과 A가 각각 a 와 a를 추가 *하고 B는 복사와 역을 수행 하는 상당히 간단한 (수, 문자) 인코딩 을 사용합니다.

실제 파일에서 대괄호로 묶은 항목은 나타내는 리터럴 바이트로 대체됩니다. <C-v>0x16, <ESC>0x1b 및 <CR>0x0d입니다.

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


매크로 'b'와 'c'를 만들지 않고 대신 직접 다시 매핑하는 것이 더 빠를 것이라고 생각합니다. :nm N a <C-v><esc>:nm A a*<C-v><esc>
DJMcMayhem는

@DJMcMayhem 그렇습니다. 어떤 이유로, <C-v>파일보다 파일 을 저장하는 것이 더 어려울 것이라고 생각했기 때문에 원형 교차로 방법을 사용하여 테스트 할 수있었습니다 { cat foo.vim; echo ':wq'; } | vim out.txt. <C-v><C-v>어제 시도한 이유가 확실하지 않습니다 .
Ray

나는 당신이 그것을 작동하게되어 기쁘다! vim 답변을 편리하게 테스트 할 수있는 또 다른 방법은 온라인으로 사용해보십시오! 실제로 쓴 esolang을 사용하지만 어쨌든 (대부분) 이전 버전과 호환됩니다. -v플래그는 (같은 정력 키 설명을 사용할 수 있습니다 <C-v>및 기타 등등)
DJMcMayhem

@DJMcMayhem 아주 좋아요. 감사.
Ray

<NL>대신 쓸 수 없습니까 <NEWLINE>?
L3via6

7

, 69 54 52 48 바이트

E⪪”|↖y{{﹪yc›o”n↗πf>T≔Y¿PN|ωπQβ” ⪫Eιק* μ⌕βλω‖O←

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 편집 : @ASCII 전용 덕분에 별도의 플래그에서 인덱스 반복으로 전환하여 4 바이트를 저장 하고 (언급되지 않은?) ⸿문자 를 사용하여 7 바이트 를, 실행 길이 인코딩을 위해 알파벳을 사용하여 4 바이트를 추가로 저장했습니다. AtIndex모듈로를 자동으로 가져 오기 때문에 2 바이트를 더 절약했습니다 . Map인덱스 변수가 자동으로 생성 되므로 추가로 4 바이트를 절약했습니다 . 설명:

Print(Map(

바깥 쪽 Map은 배열을 반환합니다. Print한 줄에 각각의 요소를 인쇄하는 데 따라서 수동 회피하여 처리 Join그들을 \n.

Split("anb adbke eme fjj y z z z y lhf dedhe cgbhc" " "),

문자열은 출력의 모든 절반 행을 인코딩합니다. 대체 문자는 *s 및 공백 수를 나타냅니다 (공백으로 a=0시작하는 행을 처리하는 데 사용됨). 이 공간은 구분 기호를 편리하게 선택하지만 잘 압축하는 것으로 밝혀졌습니다 (x는 전체 55 바이트로 압축합니다). 각 행은 별도로 처리됩니다. (참고 : 디버 보시 파이어는 압축 된 문자열과 압축되지 않은 문자열 사이의 구분 기호를 제거하지 못합니다. 그렇지 않으면 코드의 ,가독성이 향상됩니다.)

Join(Map(i, Times(AtIndex("* ", m), Find(b, l))), w)));

모든 문자를 반복하여 적절한 수의 *s 또는 공백으로 확장 하십시오. 변수 m는 this의 내부 루프 색인이며 문자 Mapl보유합니다. 그런 다음 Join미리 정의 된 빈 문자열을 사용하여 결과를 단일 문자열로 w만듭니다.

ReflectOverlap(:Left);

모든 행이 인쇄되면 왼쪽 열을 모두 가운데 열과 겹치게 반영하십시오.

줄 바꿈, 공백 및 별을 모두 한 루프에서 처리하려고 시도했지만 실제로이 방법으로 두 바이트가 더 필요했습니다.

Print(Join(Map("anb adbke eme fjj y z z z y lhf dedhe cgbhc", Ternary(Equals(" ", i), "\n", Times(AtIndex("* ", k), Find(b, i)))), w));
ReflectOverlap(:Left);

1
+1 숯을 배워야합니다 (Hexagony와 Cubix도 있습니다). 내가 가장 좋아하는 프로그래밍 언어 중 세 가지가 여기에 있습니다. Btw, 당신은 이미 계획하고 있다고 생각하지만 설명을 추가 할 수 있습니까?
Kevin Cruijssen

@KevinCruijssen 흠, 장황한 코드조차도 약간의 설명이 필요하다고 생각합니다 ...이 충분합니까?
Neil

아, 나는 TIO가 장황한 버전 tbh를 포함하는 것을 보지 못했다. 그럼에도 불구하고 답변 자체의 설명은 결코 아프지 않으므로 시간을내어 작성해 주셔서 감사합니다.
Kevin Cruijssen

숯을 배우고 싶지만 05AB1E와 같은 페이지가 필요합니다 .05AB1E는 코드 페이지의 각 문자가 코드에 들어 가지 않고 실제로 수행하는 작업을 설명합니다.
Magic Octopus Urn

2
@carusocomputing 너무 나쁘지는 않습니다. 압축 된 문자열 외에도 일반 문자열 (ASCII 문자 및 필로우), 숫자 (위 첨자 숫자), 화살표 (... 화살표), 명령 (일반적으로 전각 대문자) 및 연산자 (모든 것)가 있습니다. 그렇지 않으면) 위키의 해당 페이지에서 찾을 수 있습니다.
Neil

6

클로저, 833 437 바이트

Clojure는 거의 간결한 상을받지는 않지만 배트맨 (같은 배트 타임, 같은 배트 채널!) 의 TWO (count 'em- TWO ) 에피소드에 모든 DAEK WEEK를 기대할 때마다 잃을 시간이 없다!

빨리, 로빈-박쥐 REPL에!

(defn r[c n](clojure.string/join(repeat n c)))(defn pl[col](loop[i 0 c " "](print(r c (nth col i)))(if(< i (dec (count col)))(recur (inc i) (if (= c " ") "*" " "))(println))))(defn p[](loop[lines [[11 1 25 1][7 4 10 1 5 1 10 4][5 4 12 7 12 4][3 6 12 7 12 6][2 9 9 9 9 9][1 47][0 49][0 49][0 49][1 47][2 5 7 21 7 5][4 4 7 3 4 5 4 3 7 4][7 2 7 1 6 3 6 1 7 2]] i 0] (pl (nth lines i))(if (< i (dec (count lines)))(recur lines (inc i))nil)))

골프 용 버전 :

(defn repstr [c n]
  (clojure.string/join (repeat n c)))

(defn print-bat-signal-line [col]
  (loop [i  0
         c  " "]
    (print (repstr c (nth col i)))
    (if (< i (dec (count col)))
      (recur (inc i) (if (= c " ") "*" " "))
      (println))))

(defn print-bat-signal []
  (loop [lines [[11 1 25 1]  ; spaces asterisks spaces asterisks
                [7 4 10 1 5 1 10 4]
                [5 4 12 7 12 4]
                [3 6 12 7 12 6]
                [2 9 9 9 9 9]
                [1 47]
                [0 49]
                [0 49]
                [0 49]
                [1 47]
                [2 5 7 21 7 5]
                [4 4 7 3 4 5 4 3 7 4]
                [7 2 7 1 6 3 6 1 7 2]]
        i      0]
    (print-bat-signal-line (nth lines i))
    (if (< i (dec (count lines)))
      (recur lines (inc i))
      nil)))

RIP Adam West. 그 쇼가 아무리 터무니 없더라도, 우리 아이들은 당신에게 경의를 표합니다.


골프를 치지 않아도 여전히 고양이의 대답보다 낫습니다.
Magic Octopus Urn

골프 버전이 추가되었습니다. 가능한 경우 벽을 오르는 것처럼 보이도록 옆으로 돌립니다. :-)
Bob Jarvis


6

RLE 데이터를 인코딩하는 다양한 기술과 함께 Run Length Encoding을 사용하는 다양한 솔루션.

파이썬 3 125 121 바이트

이 버전은 bytes문자열을 사용하여 데이터를 저장합니다.

s=''
for c in b'<)@4/:),0/>/,3>/*981(WYYY(W*14=./4-.-4+4)2+':s+=' *'[c%2]*(c//2-19);s*=len(s)<25or print(s+s[-2::-1])or 0

하자 s별 또는 공간의 문자열. 그런 다음 바이트 n인코딩 s

n = 38 + 2*len(s) + (s[0]=='*')

파이썬 2, 133126 바이트

이 버전은 알파벳 코딩을 사용합니다. 문자 값은 출력 문자열의 길이를 결정하고 문자의 경우 공백 또는별로 구성되어 있는지 여부를 결정합니다.

s=''
for c in'kAmgDjAceDlDcFlDbIiEaXYYYaXbEgKdDgCdCgBgAfB':
 s+=' *'[c<'a']*(int(c,36)-9)
 if len(s)>24:print s+s[-2::-1];s='' 

내 원래 133 바이트 Python 2 솔루션.

이 버전은 길이가 0 인 문자열을 사용하므로 별 문자열과 공백 문자열을 쉽게 바꿀 수 있습니다.

s=''
for c,n in zip(24*' *','b1d074a13054c436c429951o0p0p0p1o257b447343727162'):
 s+=c*int(n,36)
 if len(s)>24:print s+s[-2::-1];s=''

재미를 위해 여기에 알파벳 코딩을 사용하는 한 줄짜리가 있습니다.

파이썬 2, 148 바이트

print'\n'.join(''.join(s+s[-2::-1])for s in zip(*[iter(''.join(' *'[c<'a']*(int(c,36)-9)for c in'kAmgDjAceDlDcFlDbIiEaXYYYaXbEgKdDgCdCgBgAfB'))]*25))

더 재미있게, 여기 에는 배트맨 로고 버전을 생성하는 Conway Game of Life 패턴이 있습니다. 가로 세로 비율을 텍스트 버전과 거의 동일하게 유지하려면 각 줄을 두 배로 늘려야했습니다. 이 패턴은 실제로 로고를 계산 하지는 않지만 ( Life에서 계산을 수행 할 수 있지만 Turing-complete이므로) 메모리 루프에서 다시 재생하므로 코드 골프 항목으로 게시 할 수는 없습니다. 내가 했던 내가 몇 년 전에 쓴 파이썬 스크립트)를 사용하여 만들 수 있습니다. ;)

대부분의 Life 엔진이로드 할 수있는 상당히 표준적인 RLE 형식으로 인코딩됩니다. GoL 프로그램이없는 경우 (예 : Golly ) 이 온라인 Life 엔진을 사용 하여 온라인 에서 실제 RLE 파일을 가져올 수있는 프로그램을 볼 수 있습니다. 다음 은 해당 Life 패턴의 PNG 버전입니다 . 일부 Life 프로그램 (Golly 포함)은 PNG 및 기타 다양한 이미지 파일 형식에서 Life 패턴을로드 할 수 있습니다.


6

T-SQL, 283276222 바이트

SELECT CAST(DECOMPRESS(CAST('H4sIAAAAAAAEAFNQgAMtBVxAi5cLxgICdB3IAkAAVYuqEsLHIgRWjV0KqxBIvZYWujQeEaAGLdIALxeJGuinhXSvQEMCPVSQAbIcJPJQReGSSHxU9WAeSppAqEMoBwCfudAGawIAAA=='as XML).value('.','varbinary(max)'))AS varchar(max))

여기에 게시 된 방법을 통해 원래 배트맨 문자열의 GZIP 압축을 구현 합니다 . 이것은 SQL 2016 이상에서만 작동합니다.

이전 SQL 버전의 경우 이전 방법 ( 276 바이트 )을 사용하십시오.

DECLARE @ CHAR(999)=REPLACE(REPLACE(REPLACE('PRINT SPACE(11#1$25#1&$7#4$10#1$5#1$10#4&$5#4$12#7$12#4&$3#6$12#7$12#6&$2#9$9#9$9#9&$1#47&#49&#49&#49&$1#47&$2#5$7#21$7#5&$4#4$7#3$4#5$4#3$7#5&$7#2$7#1$6#3$6#1$7#2)','#',')+REPLICATE(''*'','),'$',')+SPACE('),'&',')+CHAR(13')EXEC(@)

기본적으로 다음 방법을 사용하여 다음에 인쇄 할 내용을 결정하는 거대한 문자열을 수동으로 인코딩합니다.

  • #7 로 대체되다 +REPLICATE('*',7)
  • $4 로 대체되다 +SPACE(4)
  • & 로 대체되다 +CHAR(13)

교체 후 전체 958 문자열은 다음과 같습니다 (배트맨 기호의 각 줄에 줄 바꿈이 있음).

PRINT 
SPACE(11)+REPLICATE('*',1)+SPACE(25)+REPLICATE('*',1)+CHAR(13)
+SPACE(7)+REPLICATE('*',4)+SPACE(10)+REPLICATE('*',1)+SPACE(5)+REPLICATE('*',1)+SPACE(10)+REPLICATE('*',4)+CHAR(13)
+SPACE(5)+REPLICATE('*',4)+SPACE(12)+REPLICATE('*',7)+SPACE(12)+REPLICATE('*',4)+CHAR(13)
+SPACE(3)+REPLICATE('*',6)+SPACE(12)+REPLICATE('*',7)+SPACE(12)+REPLICATE('*',6)+CHAR(13)
+SPACE(2)+REPLICATE('*',9)+SPACE(9)+REPLICATE('*',9)+SPACE(9)+REPLICATE('*',9)+CHAR(13)
+SPACE(1)+REPLICATE('*',47)+CHAR(13)
+REPLICATE('*',49)+CHAR(13)
+REPLICATE('*',49)+CHAR(13)
+REPLICATE('*',49)+CHAR(13)
+SPACE(1)+REPLICATE('*',47)+CHAR(13)
+SPACE(2)+REPLICATE('*',5)+SPACE(7)+REPLICATE('*',21)+SPACE(7)+REPLICATE('*',5)+CHAR(13)
+SPACE(4)+REPLICATE('*',4)+SPACE(7)+REPLICATE('*',3)+SPACE(4)+REPLICATE('*',5)+SPACE(4)+REPLICATE('*',3)+SPACE(7)+REPLICATE('*',5)+CHAR(13)
+SPACE(7)+REPLICATE('*',2)+SPACE(7)+REPLICATE('*',1)+SPACE(6)+REPLICATE('*',3)+SPACE(6)+REPLICATE('*',1)+SPACE(7)+REPLICATE('*',2)

다음은 동적 SQL로 실행되어 다음 출력을 생성합니다.

           *                         *
       ****          *     *          ****
     ****            *******            ****
   ******            *******            ******
  *********         *********         *********
 ***********************************************
*************************************************
*************************************************
*************************************************
 ***********************************************
  *****       *********************       *****
    ****       ***    *****    ***       *****
       **       *      ***      *       **

5

PHP , 137 바이트

<?=gzinflate(base64_decode(U1CAAy0FXECLC8YAAnQNyAJAwIVFIYSPRYgLLkWEYrByLS10WTwiXAgmcYCLRPV00kGyN6BhgB4eyABZjgstyqAsuDpU5YjEgJIOEKoQigE));

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

PHP , 177 바이트

foreach(["9zojk",a2878,aa4nb,b7u9z,chbf3,eze2n,jz6rj,jz6rj,jz6rj,eze2n,cepdr,ako8z,a1pc1]as$v)echo$t=strtr(substr(base_convert($v,36,2),1),10,"* "),"* "[$k++<2],strrev($t),"\n";

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

PHP , 179 바이트

for(;$o=ord(kAlgDjAbeDlCcFlCbIiDaWXXXaWbEgJdDgCdBgBgAfA[$i++]);($x+=$s)%24?:print$r.("* "[$k++<2]).strrev($r)."\n".$r="")$r.=strtr(str_repeat($b=+($o>96),$s=$o-64-$b*32),10," *");

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


첫 번째 예는 인용문이 필요합니다
Steven Penny

2
@StevenPenny 아니요. 온라인 사용해보기 링크를 확인 했습니까 ?
ovs

1
@StevenPenny이 경우 PHP는 존재하지 않는 상수를 문자열로 캐스트합니다. Codegolf에서 허용되는 알림 오류 만 발생합니다. 그리고 누락은 "="base64로의 끝에서 인코딩 된 문자열이 자동으로 추가됩니다
요 르그 Hülsermann

4

자바, 296 214 바이트

골프 :

()->{String r="";boolean b=1<0;for(int a:";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172".toCharArray()){for(int i=0;i<a-48;++i)r+=(b?'*':' ');if(a<49)r+='\n';else b=!b;}return r;}

언 골프 드 :

public class InHonorOfAdamWest {

  public static void main(String[] args) {
    System.out.println(f(() -> {
      String r = "";
      boolean b = 1 < 0;
      for (int a : ";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172".toCharArray()) {
        for (int i = 0; i < a - 48; ++i) {
          r += (b ? '*' : ' ');
        }
        if (a < 49) {
          r += '\n';
        }
        else {
          b = !b;
        }
      }
      return r;
    }));
  }

  private static String f(java.util.function.Supplier<String> f) {
    return f.get();
  }
}

";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"데이터에 사용할 수 있으며 for(char a:x){a=(int)a-48; [...]기본적으로 각 숫자에 48을 더하고이를 ASCII 문자로 변환합니다. 나는 이것이 70-80 바이트를 절약 할 것이라고 믿습니다. 또한 데이터를 람 바로 하드 코딩하면 바이트도 줄어 듭니다.
Magic Octopus Urn

또한 더 좋을 boolean b=false;수도 있고 boolean b=1<0더 나은 것을 사용할 int수도 i있고 같은 줄에 선언을 결합 할 수도 있습니다 .).
Magic Octopus Urn

1
@ carusocomputing 덕분에 문자열로 포장하는 것에 대해서는 생각하지 않았습니다. 귀하의 유니 코드 값이 잘못되어서 다시 생성해야하며 출력이 올바르게 표시됩니다.

사용하지 않기 때문에 i당신을위한 루프에서 난 당신이 사용할 수있는 생각 for(int i=0;i++<a-48;)으로 for-head.
Roman Gräf

3

풍선 껌 , 75

xxd 덤프 :

00000000: cd92 b501 8050 1043 fb4c 91fa efbf 1f0e  .....P.C.L......
00000010: 2f87 d371 5814 37d3 7c35 4d2b 1826 64f6  /..qX.7.|5M+.&d.
00000020: d8aa 419c 2a11 3e75 ce25 6d1e ee9d 22e0  ..A.*.>u.%m...".
00000030: bb11 f04f 0d7f 2e38 dfc8 6926 3dad 0871  ...O...8..i&=..q
00000040: f316 1071 6db8 fc07 a408 f7              ...qm......

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


3

커피 스크립트 (282 바이트)

t=['6bk','59mw','l2j3','2ghsf','4zg2n','9zldr','jz6rj','4u7zz','165qf','47wj']
[0,1,2,3,4,5,6,6,6,5,7,8,9].map((d)->parseInt(t[d], 36).toString(2).padStart 25, '0').forEach (d)->console.log (d+d.split('').reverse().join('').substring(1)).replace(/0/g, ' ').replace(/1/g,'*')

설명 (plain-ol ES6 사용)

  • 다른 사람들이 언급했듯이 이미지는 대칭이므로 인코딩에서 이미지의 절반을 던질 수 있습니다.
  • 여러 줄도 반복되므로 조회 테이블에서 각 줄을 던져 몇 바이트를 절약 할 수 있습니다.
  • 우리는 각 반줄을 이진수로 변환하고 (0은 공백으로, 1은 *로 사용) Javascript (36)에서 가장 높은 기수로 인코딩하여 인코딩 배열을 만듭니다.
  • 첫 번째 맵은 각 라인을 가져 와서 최종 출력 하프 라인으로 다시 변환하여 0으로 채 웁니다.
  • 두 번째 맵은 각 행을 반전 된 반으로 연결하고 (두 번째로 가운데 열을 던짐) 0과 1을 공백과 * s로 바꿉니다.

var t = [
    '6bk',
    '59mw',
    'l2j3',
    '2ghsf',
    '4zg2n',
    '9zldr',
    'jz6rj',
    '4u7zz',
    '165qf',
    '47wj'
];
[0,1,2,3,4,5,6,6,6,5,7,8,9].map((d) => {
    return parseInt(t[d], 36).toString(2).padStart(25, '0');
})
.forEach((d) => {
    console.log((d + d.split('').reverse().join('').substring(1))
        .replace(/0/g, ' ')
        .replace(/1/g, '*'));
});


멋진 답변! 사이트에 오신 것을 환영합니다! :)
DJMcMayhem

2

V , 102 바이트

i±³ *±± 
³ *± ´*· 
´*±² ´*µ 
´*±² ¶*³ 
µ*¹ ¹*  
²´* Ä3o²µ*jo±±*· µ*  
³*´ ³*· ´*´ 
**¶ *· **· Îæ$vp

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

16 진 덤프 :

00000000: 69b1 b320 2ab1 b120 0ab3 202a b120 b42a  i.. *.. .. *. .*
00000010: b720 0ab4 2ab1 b220 b42a b520 0ab4 2ab1  . ..*.. .*. ..*.
00000020: b220 b62a b320 0ab5 2ab9 20b9 2a20 200a  . .*. ..*. .*  .
00000030: b2b4 2a20 1bc4 336f b2b5 2a1b 6a6f b1b1  ..* ..3o..*.jo..
00000040: 2ab7 20b5 2a20 200a b32a b420 b32a b720  *. .*  ..*. .*. 
00000050: b42a b420 0a2a 2ab6 202a b720 2a2a b720  .*. .**. *. **. 
00000060: 1bce e624 7670                           ...$vp

이것은 런 렝스 인코딩을 사용하여 다음 배트맨 반을 생성합니다.

             *           
   *          ****       
****            ****     
****            ******   
*****         *********  
************************ 
*************************
*************************
*************************
************************ 
***********       *****  
***    ***       ****    
**      *       **      

그런 다음 각 줄을 뒤집어 복제합니다.


2

파이썬 2 , 134 바이트

for w in'1D 4A13 4C4 6C4 995 O P P P O 57B 47343 27162'.split():r=''.join(c*int(k,36)for c,k in zip(3*'* ',w));print'%25s'%r+r[-2::-1]

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

런-길이는베이스 36의 왼쪽 절반부터 각 줄을 인코딩합니다. 전체 줄을 만들기 위해이를 반영하여 인쇄됩니다. 선행 공백은 인코딩되지 않습니다. 대신 왼쪽 절반이 길이 25로 채워집니다.


내 버전에서 패딩 트릭을 사용할 수 있기를 바랍니다.
PM 2Ring

2

Mathematica 151 바이트

Uncompress@"1:eJxTTMoPCm5iYmBQQAAtBVxAK8bA0AjGBgJ0PcgCQABXjaoWwsciBFWPXRKrEESHlha6AjwiYC1apAGQHhK10FsTOV6Chgp6CCEDZDlYdKKKw6WR+OjxD+KiJBSEQoR6AC49ZiI="

저렴하고 독창적입니다. 문자열은 Compress필요한 출력에 사용 된 내장 명령 에서 가져온 것 입니다.

최신 정보:

내장 ImportString\ ExportString함수로 더 잘 할 수 있다고 생각 하지만 결과 문자열을 ExportString올바르게 복사하여 붙여 넣는 것을 볼 수 없습니다 . 예 :

b = "           *                         *\n       ****          *     *          ****\n     ****            *******            ****\n   ******            *******            ******\n  *********         *********         *********\n ***********************************************\n*************************************************\n*************************************************\n*************************************************\n ***********************************************\n  *****       *********************       *****\n    ****       ***    *****    ***       ****\n       **       *      ***      *       **"
ExportString[b,"GZIP"]
ImportString[%,"GZIP"]

두 번째 줄의 텍스트 출력을 복사 %하여 세 번째 줄 의 텍스트를 바꿀 수 없습니다 .


2

배쉬 ,407 322 바이트

w=`yes 1|head -30|tr -d '\n'`
for i in B1C000 74A120 54C003 36C003 299004 1C0506 0D0506 0D0506 0D0506 1C0506 257505 447342 727161
{ read a b c d e f <<<$(echo $i| fold -1| xargs)
x=`printf "%.$[0x${a}]d%.$[0x${b}]s%.$[0x${c}]d%.$[0x${d}]s%.$[0x${e}]d%.$[0x${f}]s" 0 $w 0 $w 0 $w`
echo -n $x$[f<1?0:1]
rev<<<$x
}|tr 01 \ \*

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

정말 끔찍하거나 더 많은 시간이 필요하거나 골프를 치는 데 도움이됩니다. 0과 1의 출력을 생성하고 결국 음역합니다. 중간 열을 출력하기위한 플래그로 처음 두 행의 마지막 숫자 0을주의하여 0과 1의 양을 16 진수로 인코딩합니다. printf pressision을 사용하여 숫자 또는 문자열을 0과 1로 출력합니다. %.$[0x${X}]C패턴을 골프화하는 데 사용할 수 있다고 생각 합니다.

w=`yes 1|head -30|tr -d '\n'`  # w=111111111111111111111111111111   
for i in B1C000 74A120 54C003 36C003 299004 1C0506 0D0506 0D0506 0D0506 1C0506 257505 447342 727161
{ read a b c d e f <<<$(echo $i| fold -1| xargs)
printf "%.$[0x${a}]d
%.$[0x${b}]s
%.$[0x${c}]d
%.$[0x${d}]s
%.$[0x${e}]d
%.$[0x${f}]s" 0 $w 0 $w 0 $w
echo -n $[f<1?0:1]
printf "%.$[0x${f}]s
%.$[0x${e}]d
%.$[0x${d}]s
%.$[0x${c}]d
%.$[0x${b}]s
%.$[0x${a}]d\n" $w 0 $w 0 $w 0 
}|tr 01 \ \*

2

파이썬 3 232 197 183 164 바이트

또 다른 파이썬 답변. 그러나 지루한 압축 코드는 없습니다. 흥미로운 압축 코드.

for s in map(lambda x:x+x[-2::-1],b".$; *',$' ('.* &).* %,+, $R #T #T #T $R %()8 '')&&( *%)$(&".split()):print(*((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2)))

나는 마법의 숫자 35를 사용하고 있는데, 그렇게하면 제어 문자, 공백 또는 탈출해야 할 것들이 없기 때문입니다. 공간과 별을 따로 처리해야한다는 것이 슬프다.

언 골프 드 :

for s in map(lambda x:x+x[-2::-1],   # map a list to the list and itself reversed,
                                     # minus the last (center) element
# magic string:
".$; *',$' ('.* &).* %,+, $R #T #T #T $R %()8 '')&&( *%)$(&"
.split()):                           # split on whitespace to divide into lines
 print(*(                            # unpack generator expression
(ord(s[i])-35)*" "                   # convert character to int, -25, times space
+(ord(s[i+1])-35)*"*"                # same thing with "*"
for i in range(0,len(s)-1,2)))       # for every pair in the list

이 인코딩 방법은 기본 36보다 낫습니다. 최신 솔루션에 맞게 조정 한 것이 마음에 들지 않기를 바랍니다. ;) 바이트 수를 줄이기 위해 할 수있는 일이 몇 가지 있습니다. 1print 와 같은 줄에 전화를 걸어 바이트를 절약 할 수 있습니다 for. 2bytes 문자열 을 사용하면 해당 ord통화를 제거 할 수 있습니다 . 3range 반복자 쌍 위로 압축 하여 를 대체 할 수 있습니다 . 이 두 가지 아이디어를 결합한 생성기가 ((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))있습니다. 이러한 변경 사항으로 카운트가 164로
줄어 듭니다

@ PM2Ring 전혀 신경 쓰지 않습니다. 몇 주 동안 휴가를 가고 있으므로 변경 사항을 자유롭게 편집하십시오.
L3via6

오 그래. 하지만 새로운 언 골프 버전을 드리겠습니다.
PM 2Ring

@ 이미 버스 PM2Ring, 그래서 난 그냥 다른 사람이 그것을 승인 바랍니다거야
L3viathan

2

PowerShell, 305 바이트, 307 바이트 , 316 바이트

[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()

커스텀 타입 액셀러레이터를 정의하는 더 간결한 방법이 없다면 어떻게 다른 사람이 더 짧아 지도록 도울 수 있습니다.

편집 : 단축 버전 (@root 덕분). 인코딩 된 문자열 (pre base64 인코딩)을 8 개의 배열 위치로 잘라내어 범위를 줄일 수 있습니다. StreamWriter가 왜이 팽창을 MemoryStream에 도입했는지 잘 모르겠습니다. 기본 행동에 대한 통찰력을 얻을 수 있습니다.

[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg')),0,94),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()

언 골프 드 :

#Read decoded stream 
[IO.StreamReader]::new(
    (
        #Reverse GZip encoding
        [IO.Compression.GZipStream]::new(
            #Load GZip encoded string into a memory stream
            [IO.MemoryStream]::new(
                (
                    # Convert Base64 back to GZip encoded string
                    [Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')
                ),
                #Start of range
                0,
                #End of range. Stick the Memory Stream into a variable and use .Length here for non golf code
                102
            ),
            #Specify that we are decompressing
            [IO.Compression.CompressionMode]::Decompress
        )
    )
).ReadToEnd()

압축 코드 :

$s = '           *                         *
       ****          *     *          ****
     ****            *******            ****
   ******            *******            ******
  *********         *********         *********
 ***********************************************
*************************************************
*************************************************
*************************************************
 ***********************************************
  *****       *********************       *****
    ****       ***    *****    ***       ****
       **       *      ***      *       **'

#Create Memory Stream
$ms = [IO.MemoryStream]::new()
#Initialize a stream
$sw = [IO.StreamWriter]::new(
    #Create GZip Compression stream
    [IO.Compression.GZipStream]::new(
        #Reference Memory Stream
        $ms,
        #Set mode to compress
        [IO.Compression.CompressionMode]::Compress
    )
)
#Write input into stream
$sw.Write($s)
#Close the stream
$sw.Close()

#Convert Array to Base64 string
[Convert]::ToBase64String(
    #Retrieve Memory Stream as an array
    ($ms.ToArray() | select -SkipLast 8)
)

1
왜 102? 99도 같은 방식으로 작동[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
root

@root는 그렇게 생각하지만 그 이유가 확실하지 않습니다. 실제로 8에서 94까지 줄이면 인코딩 된 입력 문자열의 마지막 8자를 삭제할 수 있습니다. 왜 이것이 효과가 있는지 알아내는 데 어려움을 겪고 있으며 내가 할 때까지 답변에 추가하고 싶지 않습니다. 압축 기능이 외부 패딩을 잘못 추가하고 있습니까?
Chirishman

1
압축 코드에서 마지막 두 값 $ms.ToArray()은 모두 0입니다. 필요한가요?
root

아니요. 다른 입력 문자열을 시도하면 끝에 정확히 두 개의 불필요한 배열 위치가 일치하는 것 같습니다. 압축 스크립트에서 마지막 두 개를 건너 뛰는 절을 추가하겠습니다. 여전히 스트림 작가가 말 위에 널 (null)을 추가하는 이유를 나는 알고 싶어
Chirishman

1
맞습니다. 꼬리 문자 2 개 이상인 8 개입니다. 배열의 마지막 8 개 위치를 ('225','193','82','192','106','2','0','0')제거하여를 만들 수 있습니다 H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==. 그들이 어디에서 왔는지 이해할 수 없습니다.
root

2

펄 5, 168 바이트

$_="11 *25 
7 4*10 *5 *10 4
5 4*12 7*12 4
3 6*12 7*12 6
2 9*9 9*9 9
 47
49
49
49
 47
  5*7 21*7 5
4 4*7 3*4 5*4 3*7 4
7 **7 *6 3*6 *7 *";s/$/*/gm;say s/\d+(.)/$1x$&/ger

첫 번째 줄의 끝에있는 후행 공백에 유의하십시오. 필요합니다 ( -M5.01무료).

아마 좀 더 골프를 칠 수 있습니다.


2

LaTeX, 314 바이트

\documentclass{book}\begin{document}\def\r#1#2{\ifnum#2>64#1\r#1{\numexpr#2-1}\fi}\catcode`.13\catcode`!13\catcode`-13\def!#1{\r*{`#1}}\def-#1{\r~{`#1}}\let.\par\tt-K!A-Y!A.-G!D-J!A-E!A-J!D.-E!D-L!G-L!D.-C!F-L!G-L!F.-B!I-I!I-I!I.-A!o.!q.!q.!q.-A!o.-B!E-G!U-G!E.-D!D-G!C-D!E-D!C-G!D.-G!B-G!A-F!C-F!A-G!B\enddocument

설명이 포함 된 ungolfed 버전 :

\documentclass{book}
\begin{document}
% Macro for repeating #1 (#2-64) times
\def\r#1#2{\ifnum#2>64#1\r#1{\numexpr#2-1}\fi}
% Prepare '.', '!' and '-' for usage as macro names
\catcode`.13\catcode`!13\catcode`-13
% The ASCII code of #1 (a character) is used as the number of how often '*' will be printed with \r
\def!#1{\r*{`#1}}
% Same as ! but for spaces
\def-#1{\r~{`#1}}
% . becomes a line break
\let.\par
% Set monospace font
\tt
% And finally print the whole thing
-K!A-Y!A.-G!D-J!A-E!A-J!D.-E!D-L!G-L!D.-C!F-L!G-L!F.-B!I-I!I-I!I.-A!o.
!q.!q.!q.-A!o.-B!E-G!U-G!E.-D!D-G!C-D!E-D!C-G!D.-G!B-G!A-F!C-F!A-G!B
\enddocument

2

C 번호 (.NET 코어) , 342 (333) 328 185 175 바이트

_=>{var r="";for(int i=0,j,k=0;i<63;i++)for(j=0;j++<"-#;#4&,#'#,&.&.).&*(.).('+++++%Q#µ#Q%')7)'(&)%&'&%)&-$)#(%(#)$)"[i]-34;){r+=i%2<1?' ':'*';if(++k%49<1)r+='\n';}return r;}

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

접근 방식을 변경 한 후 많은 바이트가 절약되었습니다. 도면을 2D 배열로 사용하여 파일별로 RLE 인코딩을 계산했습니다.

{ 11, 1, 25, 1, 18, 4, 10, 1, 5, 1, 10, 4, 12, 4, 12, 7, 12, 4, 8, 6, 12, 7, 12, 6, 5, 9, 9, 9, 9, 9, 3, 47, 1, 147, 1, 47, 3, 5, 7, 21, 7, 5, 6, 4, 7, 3, 4, 5, 4, 3, 7, 4, 11, 2, 7, 1, 6, 3, 6, 1, 7, 2, 7 }

홀수 인덱스는 s를 나타내며 심지어 인덱스는 *s를 나타냅니다. 그런 다음 인쇄 가능한 ASCII 표현으로 모든 숫자를 대체하고 ( '#'문자를 1로 사용) 다음을 얻었습니다.

-#;#4&,#'#,&.&.).&*(.).('+++++%Q#µ#Q%')7)'(&)%&'&%)&-$)#(%(#)$)

알고리즘은이 문자열을 압축 해제하고 적절한 위치에 줄 바꿈을 추가하여 도면을 계산합니다.


1
l변수 를 설정할 필요가 없으며 루프에서 직접 사용하십시오. .ToString(i, 2)-> .ToString(i,2)즉 공백을 제거하십시오.
TheLethalCoder

1e10해당 숫자에 대해 십진 또는 과학 ( ) 표현으로 바이트를 저장할 수 있습니까? 이 도전 은 실제로 여기서 도움이됩니다.
TheLethalCoder

@TheLethalCoder nope. 방금 확인했지만 (감동적인 도전), 나는 이미 가장 작은 표현을 사용하므로 운이 없습니다. 나는 숫자를 상수로 나눌 수 있는지 확인하기 위해 그들 사이에 가장 큰 제수를 찾으려고했지만 분명히 1입니다.
Charlie

2

PowerShell , 129128 바이트

-join('5+C+<.4+/+4.6.616.206160/33333-Y+s*t+Y-/1?1/0.1-./.-1.5,1+0-0+1,'|% t*y|%{(' ','*')[$i++%2]*($_-42)})-split'(.{49})'-ne''

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

언 골프 드 :

-join(
    '5+C+<.4+/+4.6.616.206160/33333-Y+s*t+Y-/1?1/0.1-./.-1.5,1+0-0+1,'|% toCharArray|%{
        (' ','*')[$i++%2]*($_-42)
    }
)-split'(.{49})'-ne''

산출:

           *                         *           
       ****          *     *          ****       
     ****            *******            ****     
   ******            *******            ******   
  *********         *********         *********  
 *********************************************** 
*************************************************
*************************************************
*************************************************
 *********************************************** 
  *****       *********************       *****  
    ****       ***    *****    ***       ****    
       **       *      ***      *       **

주요 아이디어는 매우 간단합니다

엠블렘 코딩 :

  1. 모든 엠블럼 선을 하나의 문자열로 연결
  2. 공간과 별표 수
  3. 각 세그먼트의 길이를 + + char로 인코딩

디코딩 (이 스크립트) :

  1. 암호 문자열에서 각 문자에 대한 문자 빼기 코드 42를 가져옵니다. 이것은 세그먼트의 길이입니다
  2. 공백 또는 별표로 반복되는 Length시간 으로 구성된 세그먼트 추가
  3. 줄을 나누려면 49 개의 기호마다 새 줄을 삽입하십시오.

똑똑한 것들

  1. 코딩 알고리즘은 3 개의 중간 별표 라인을 표시하기 위해 코드 189를 갖는 심볼을 제안한다. 이 기호는 ASCII가 아닙니다. 현대적인 환경에서는 정상적으로 작동하지만 스크립트 길이에는 모호성이 있습니다. 따라서 비 ASCII 기호 ½s*t(73 별표, 0 공백, 74 별표)로 바꿉니다.
  2. 마지막 줄에서 오른쪽 공간을 잘라 1 바이트를 절약했습니다. 미안, 배트맨
  3. 왜 오프셋이 42입니까? 그냥 원했다 :) 그리고 암호 문자열이 멋지게 보입니다.

추가 : 엠블렘의 코딩을위한 cip

(@"
           *                         *           
       ****          *     *          ****       
     ****            *******            ****     
   ******            *******            ******   
  *********         *********         *********  
 *********************************************** 
*************************************************
*************************************************
*************************************************
 *********************************************** 
  *****       *********************       *****  
    ****       ***    *****    ***       ****    
       **       *      ***      *       **       
"@ -replace"`n"-split'( +|\*+)'-ne''|%{[char]($_.Length+42)})-join''

1

수학, 271 바이트

T=Table;f[x_]:=""<>T["*",x];m={f@49};n={f@47};g[y_]:=""<>T[" ",y];k[a_,b_,c_,d_,e_]:={(s=f@a<>g@b<>f@c<>g@d<>f@e)<>StringDrop[StringReverse@s,1]};Grid@{k[1,13,0,0,0],k[4,10,1,3,0],k[4,12,0,0,4],k[6,12,0,0,4],k[9,9,0,0,5],n,m,m,m,n,k[5,7,0,0,11],k[4,7,3,4,3],k[2,7,1,6,2]}

1

Braingolf , 590 580 579 577 428 423 312 바이트

LeakyNun이 골프 신이므로 -111 바이트

14#
46*6394943[92+.6,5][8]#.[# ]#*[# ]#*#
[# ][#*][# ]#*[# ]#*[# ]#*...#
[# ][#*][# ][#*][# ]#*...#
# ..[#*][# ][#*][# ][#*]#
# .[#*][# ][#*][# ][#*]#
# [#*]#
&@#0[#*]#
!&@!&@# &@#.[#*]"
  "&@4645*643646366556[#*][# ][#*][# ][#*]"
    "[#*][# ]#*..# ...[#*]# ...#*..[# ][#*]#
[# ]#*.[# ]#*[# ]#*..[# ]#*[# ]#*.&@

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

Braingolf는 ASCII 예술 에는 좋지 않지만 시도해 보았습니다.

도대체 내가이 클러스터를 설명하고 있지 않다.


1

/// , 171166 바이트

\r\n소스에서 사용했기 때문에 5 바이트가 절약되었습니다 . lol.

/-/  //,/!!//'/**//&/*"//%/--//#/,,,,,!*//"/%-//!/''/"% &""" *
" !"%*% &%!
% !""!'&"!
- !*&"!'&"!'
-,&- ,&- ,*
 #'
!#
!#
!#
 #'
-!& ,,!& !*
%!" '*%!*%'& !
" *& &'&& '

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

"가장 경제적 인"부분 문자열을 단일 문자로 바꾸는 연속 반복을 사용하여 압축합니다. 두 가지 중 하나 일 수 있지만 거의 최적입니다.

  1. 메타 대체를 사용하여 벗어날 수 있습니다 (예 : 동적으로 정규식 삽입)
  2. 덜 경제적 인 부분 문자열을 먼저 교체하는 것이 (더욱 바람직하지 않음) 더 유리합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.