당신의 목표는 “Hello-World!”를 출력하는 가장 짧은 프로그램을 작성하는 것입니다. ASCII 예술로.
규칙 :
- 사람이 읽을 수 있어야합니다. 크기 (콜 / 행)에 대해서는 신경 쓰지 않습니다.
- 출력에는 공백 ( “”), 샤프 ( “#”) 및 줄 바꿈 만 포함해야합니다.
- 출력은 고정 폭 글꼴로 작동해야하지만 문자는 고정 폭 글꼴을 사용할 필요는 없습니다.
- 결과적으로, 각 문자는 최소한 하나의 공백으로 서로 분리되어야합니다
코드의 언어와 바이트 수로 제목을 추가하십시오.
답변
나는 이것을 절대적으로 즐겼다
Perl, 126116114102102 87 87 (69) 문자 (아스키 전용 및 외부 글꼴 없음)
현재 외부 글꼴을 사용하지 않는 가장 짧은 ASCII 솔루션입니다.
글쎄, 나는 우아한 해결책을 제시하고 싶었지만 @Ilmari Karonen은 나에게 도전했다 unpack
.
이 92 88 69 문자 코드는 @Ilmari Karonen의 것과 동일한 못생긴 읽을 수없는 출력을 생성합니다.
say map{y/01/ #/r}unpack"((b6)7a)*",'eT@j@DE
UUBjdeE
wTujjTA
eUBTddE'
압축을 풀지 않는보다 세련된 변형 (88 자) :
map{print$"x$_,$/x/4/,"#"x!/7/}7&ord,7&ord>>3for'HRyYOKLIIjIRHBa@AJIAIIIJaQHQNSRH'=~/./g
그러나 나는 그런 |. | e || .- |||., d! Hello-World와 비슷한 것은 아무것도 아닙니다! 허용되지 않아야하므로 실제 해결책은 여기에 있습니다-변형 변형, 87 문자 :
say map{y/01/ #/r}unpack"((b6)9a)*",'E`D@HB@Hd
EcD@HB@Hd
ggDsIbaIf
e`dDhRRHE
ECICPaQPf'
산출:
98 자에서보다 우아한 변형 :
map{print$"x$_,$/x/1/,"#"x!/7/}7&ord,7&ord>>3for'PW{nw^QD[w}vK@X@PcP@jCDjXQk[rRRbSQD\CWbXeX'=~/./g
산출:
이전 솔루션 (114 자), 다른 유형의 코딩 :
print'#'x(3&ord),$"x($:=15&ord>>2),$/x!$:for'EmM}U}]MBEQSM}U}]MBOFNMQOKUMSKUOBEM]MMM]IIIMIUQIAEQWMMgFROYQOB'=~/./g
산출:
답변
자바 스크립트, 178 바이트
c=document.createElement("canvas").getContext("2d");c.fillText("Hello-World!",0,7);d=c.getImageData(1,0,56,7).data;s="";for(i=3;i<1568;i+=4){s+=d[i]?"#":" ";s+=(i+1)%224?"":"\n"}
Firefox 27 Scratchpad에서 작동합니다.
# # # # # # # # # #
# # # # # # # # # # #
# # ## # # ## # # # # ## ## # ### #
##### # # # # # # # # # # # # # # # # #
# # #### # # # # ## # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # ### # # ## # # ## # # ### #
답변
매스 매 티카 101 99 98
이것은 표현을 래스터 화하고, 이진 이미지 데이터를 획득하고, 각각 1을 “#”로, 각각 0을 “”(빈 공간)으로 변환하고 출력을 12 x 130 문자 그리드로 표시합니다.
GraphicsGrid[ImageData@ImageResize[Binarize@Rasterize@Style["Hello-World!",99],130]
/.{1→"",0→"#"}]
Jonathan Van Matre 덕분에 한 캐릭터가 절약되었습니다.
답변
델파이 85 바이트
var s:tstringlist;begin s:=tstringlist.Create;s.LoadFromFile('\a');Write(s.Text);end.
가장 좋은 해결책은 아니지만 외부 리소스를 사용할 수 없다는 규칙은 없었습니다.
결과:
답변
Perl 5, 54 바이트 / 71 개의 인쇄 가능한 ASCII 문자
참고 : 이 답변의 두 번째 버전입니다. PHP 및 gzinflate ()를 사용하는 원래 64 바이트 / 95 문자 버전 은이 답변의 기록을 참조하십시오 .
다음은 71 자 인쇄 가능한 ASCII 버전입니다.
y/01/ #/,say for unpack'(B40)4',unpack u,'4I*`1`(JJI!$FFNRJU52HIJ0*))H'
54 바이트 버전에는 인쇄 할 수없는 문자가 포함되어 있으므로 16 진 덤프로 제공하고 있습니다. Unixish 시스템에서는 xxd -r
16 진 덤프를 실행 가능한 Perl 스크립트로 되돌릴 수 있습니다 .
0000000: 792f 3031 2f20 232f 2c73 6179 2066 6f72 y/01/ #/,say for
0000010: 2075 6e70 6163 6b27 2842 3430 2934 272c unpack'(B40)4',
0000020: 27a4 a011 008a aaa4 1126 9aec aad5 54a8 '........&....T.
0000030: a6a4 0a24 9a27 ...$.'
perl -M5.010
Perl 5.10+ say
기능 을 사용하려면 둘 다 함께 실행해야 합니다. 다음과 같은 출력을 생성합니다.
(SE의 거대한 행 높이는 ASCII 아트를보기 흉하고 읽기 어렵 기 때문에 스크린 샷으로 표시됩니다. 소문자 “e”는 다소 어색하지만 간신히 읽을 수있는 것으로 간주됩니다.)
추신. 위의 솔루션 출력이 너무 미니멀하다고 느껴지면 Tomas의 솔루션 과 비슷한 출력을 생성 하는 92 자 변형이 있습니다 .
y/01/ #/,say for unpack'(B56)*',unpack u,'CH!(`"(`"":,2``B``@GGDC\'(C#(YI!)("I)"2*,),`4,03D'
스크린 샷은 다음과 같습니다.
추신. 내가 확신 이 ( GolfScript, 51 개 문자는 당신이 사람을 계산하지 않는 경우) 가장 짧은 인쇄-ASCII 솔루션이며, 그 바로 호출 배너 / FIGLet 또는 다른 방법으로 그 속임수 :
'iJ@Q@HmURBIMM{JkUUJeMRAQIM'{2base(;{' #'=}/}%39/n*
출력은 위의 71-char Perl 솔루션과 동일합니다.
답변
셸 + 무화과 (35)
$ figlet -w 90 -f banner Hello-World!
# # # # ###
# # ###### # # #### # # # #### ##### # ##### ###
# # # # # # # # # # # # # # # # # ###
####### ##### # # # # ##### # # # # # # # # # # #
# # # # # # # # # # # # ##### # # #
# # # # # # # # # # # # # # # # # ###
# # ###### ###### ###### #### ## ## #### # # ###### ##### ###
답변
파이썬 260 215 186 152
>>> print'eJyNkFEKwDAIQ/93isC7/x3LyIJullHrR1BfJSIJPUHTlmiUPHbxC7L56wNCgZAxv3SjDWIxsoOb\nzMaBwyHYPJ5sVPNYxXism74vcIsFZlYyrg=='.decode('base64').decode('zip')
# # # # # # # # # #
# # # # # # # # # # #
# # ## # # ## # # # # ## ## # ### #
##### # # # # # # # # # # # # # # # # #
# # #### # # # # ## # # # # # # # # # # #
# # # # # # # # # # # # # # # # #
# # ### # # ## # # ## # # ### #
파이썬 196 183130114 (그러나 추악한)
>>> print'eJxTVlBWgCAgAQHKqBywAJeyAgJCZREcZWUYyaUMIpUVEKqRNcLEueDqEaZBLVVWQDITADIdFBw='.decode('base64').decode('zip')
# # # # # # # # # # #
# # # # # # # # # # # ## # ## #
### ## # # # # ## # # # # # # # # #
# # ## # # # # # # # # ## #
base64 인코딩에서 압축 데이터를 사용했습니다. 코드는 base64 인코딩에서 디코딩 한 다음 압축을 해제합니다.