오늘 부드러 웠습니까?


9

데비안 리눅스 배포판 (그리고 우분투, 칼리 등의 데비안 기반 배포판)은 APT라는 패키지 관리자를 사용합니다. 프로그램을 설치하려면 foo터미널에 입력하십시오

sudo apt-get install foo

APT의 하나의 작은 부활절 달걀은 다음과 같습니다

apt-get moo

입력 후 다음과 같은 출력이 생성됩니다.

                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   
..."Have you mooed today?"...

이 EXACT 출력을 가능한 적은 바이트로 생성하는 프로그램을 작성해야합니다. (후행 공백과 줄 바꾸기 포함)

다음은 \n줄 바꿈 문자를 나타 내기 위해 추가되고 *후행 공백을 나타내는 동일한 출력입니다.

                 (__)*\n
                 (oo)*\n
           /------\/*\n
          / |    ||***\n
         *  /\---/\*\n
            ~~   ~~***\n
..."Have you mooed today?"...\n

의견에서 요청한대로 다음은 mooing의 md5sum입니다.

35aa920972944a9cc26899ba50024115  -

1
나는 그것이 적성이 아닌 APT라고 생각합니다. 적성 에는 슈퍼 카우 파워가 없습니다
SE가 EVIL이기 때문에 아디 츠 종료

@aditsu 오, 나는 적성이 무엇인지 오해 한 것 같습니다. 적성은 apt-get의 이름이라고 생각했습니다.
제임스

참고로 apt-get moo|md5sum? 의 출력을 게시 할 수 있습니까?
SE가 EVIL이기 때문에 aditsu가 종료했습니다.

25
Bash, 11 bytes : apt-get moo: P
Dennis

5
@Dennis는 아치 리눅스에서 작동하지 않습니다 ... 결과를 재현 할 수 없습니다 : P
Otomo

답변:


6

배쉬, 95 바이트

0000000: 7a 63 61 74 3c 3c 27 27 0a 1f 8b 08 01 01 01 01 01  zcat<<''.........
0000011: 02 03 53 40 07 1a f1 f1 9a 0a 5c 98 c2 f9 f9 a8 c2  ..S@......\......
0000022: fa ba 60 10 a3 8f 2c aa af 50 03 a2 6a 40 24 42 58  ..`...,..P..j@$BX
0000033: 0b 28 11 03 54 ab 1f 83 6a 70 5d 1d 8c e0 d2 d3 d3  .(..T...jp]......
0000044: 53 f2 48 2c 4b 55 a8 cc 2f 55 c8 cd cf 4f 4d 51 28  S.H,KU../U...OMQ(
0000055: c9 4f 49 ac b4 57 02 ca 70 01                       .OI..W..p.

위는 뒤집을 수있는 16 진 덤프입니다. 파일을 만들려면 다음을 실행하십시오.

xxd -r -c 17 > 55918.sh

16 진 덤프를 붙여넣고을 누른 Enter다음 Ctrl+를 누릅니다 D.

생성 된 파일을 실행하려면 다음을 실행하십시오.

bash 55918.sh 2>&-

다른 파일 이름도 가능합니다.

zutilfli 는 Coreutils 프로그램 zcat과 호환되며 gzip, bzip2 및 xz보다 더 나은 압축을 달성하므로 압축기 로 zopfli 를 선택했습니다 .

zcat<<''EOF까지 다음 줄을 읽고에 입력으로 공급합니다 zcat.

bash와 마찬가지로 zcat은 경고를 표시합니다 (HEREDOC가 빈 줄로 종료되지 않기 때문에). 이 경고는 STDERR (에 의해 억제됨)에 인쇄 2>&-되며 기본적 으로 Meta에 대한 합의에 따라 허용됩니다 .


10

CJam, 96

이것은 많은 불쾌한 바이트를 사용하므로 여기에 16 진수 덤프가 있습니다.

00000000  22 ee 51 1e 53 41 15 ee  51 20 53 41 15 9a 5f 5a  |".Q.SA..Q SA.._Z|
00000010  b9 5f 41 15 8c 5f 41 f9  38 24 2a 15 7e 55 1c 5f  |._A.._A.8$*.~U._|
00000020  b9 30 5f b9 41 15 a8 26  2a 26 2a 15 36 45 91 c3  |.0_.A..&*&*.6E..|
00000030  ed cb 41 f3 df eb 41 db  20 cb c9 41 e9 df c9 c3  |..A...A. ..A....|
00000040  f3 7f 45 36 15 22 7b 69  32 6d 64 5c 5f 63 5c 37  |..E6."{i2md\_c\7|
00000050  6d 64 22 20 5f 6f 2d 7c  7e 2e 22 3d 2a 3f 7d 2f  |md" _o-|~."=*?}/|

Java 인터프리터로 파일을 실행할 수 있습니다. 다음과 같은 ISO-8859-1 인코딩을 사용해야 할 수도 있습니다.
java -Dfile.encoding=ISO-8859-1 …

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

동등한 ASCII 버전 :

[238 81 30 83 65 21 238 81 32 83 65 21 154 95 90 185 95 65 21 140 95 65 249 56 36 42 21 126 85 28 95 185 48 95 185 65 21 168 38 42 38 42 21 54 69 145 195 237 203 65 243 223 235 65 219 32 203 201 65 233 223 201 195 243 127 69 54 21]:c
{i2md\_c\7md" _o-|~."=*?}/

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

설명:

반복되는 7 개의 문자가 있습니다 _o-|~... 그들 각각은 0에서 6까지의 숫자 n으로 인코딩 될 수 있습니다. 각 반복 시퀀스마다 문자 색인 (n)과 반복 횟수 (k)를 단일 바이트로 인코딩 2 * (k * 7 + n)하고 있습니다. 암호. 그리고 나는 단일 문자를로 인코딩하고 2 * c + 1있습니다. 여기서 c는 ASCII 코드입니다. 모든 것은 초기 문자열에 들어가고 나머지 프로그램은 그것을 해독합니다.

{…}/      for each character in the string
  i       convert to integer (extended-ASCII code)
  2md     integer division by 2, obtaining the quotient (q) and remainder (r)
           r decides whether it's a repetition or single character
  \_      swap q and r, and duplicate q
  c\      convert q to character and move it before the other q
           this is for the r=1 case (single character)
  7md     divide q by 7, obtaining the quotient (k) and remainder (n)
  "…"=    get the corresponding character from that string (decoding n)
  *       repeat the character k times
  ?       use the single character or the repetition, depending on r

이전 버전 (109) :

" H(_2) 
 H(o2) 
 B/-6\/ 
 A/ | 4|2 3
 9* 2/\-3/\ 
 C~2 3~2 3
.6"{_'M,48>&{~*}&}/3/"Have you mooed today?"`*N

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


6

피스, 100

r"17 (__) 
17 (oo) 
11 /6-\/ 
10 / |4 ||3 
9 *  /\\3-/\ 
12 ~~3 ~~3 
3.\"Have you mooed today?\"3."9

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

r"string"9 run-length-decodes 문자열을 디코딩합니다.

편집하다:

다음은 97 char 솔루션입니다. Demonstration . 아마도 이것은 97 바이트 (iso-8859-1) 일 가능성이 큽니다. 그러나 바이트를 기록하고 설명하는 데 너무 피곤합니다. 내일 저녁에, 나는 추측한다.


4

GolfScript (107 바이트)

이것은 매우 간단한 인코딩입니다. 줄 바꿈은로 바뀌고 ^공백은 길이로 인코딩됩니다. 결과에는 인쇄 할 수없는 문자가 포함되어 있으므로 여기에 xxd출력 으로 표시 합니다.

0000000: 2711 285f 5f29 015e 1128 6f6f 2901 5e0b  '.(__).^.(oo).^.
0000010: 2f2d 2d2d 2d2d 2d5c 2f01 5e0a 2f01 7c04  /------\/.^./.|.
0000020: 7c7c 035e 092a 022f 5c2d 2d2d 2f5c 015e  ||.^.*./\---/\.^
0000030: 0c7e 7e03 7e7e 035e 2e2e 2e22 4861 7665  .~~.~~.^..."Have
0000040: 0179 6f75 016d 6f6f 6564 0174 6f64 6179  .you.mooed.today
0000050: 3f22 2e2e 2e27 7b2e 3332 3c7b 2220 222a  ?"...'{.32<{" "*
0000060: 7d2a 7d25 225e 222f 6e2a 0a              }*}%"^"/n*.

온라인 데모

이것은 해당 CJam 코드보다 한 문자 짧습니다. 트레이드 오프는 '메인 문자열의 구분 기호로 사용 하고 ( \을 이스케이프하기 위해 2 s "저장) i디코딩 루프에서 문자 값을 정수로 변환하기 위해 저장 하고 무료 후행 줄 바꿈을 얻습니다. 단일 문자 문자열 리터럴을 대체 할 문자 리터럴 사용


이 질문은 간략하게 태그되었으므로 , 나는 또한 인쇄 가능한 문자 (108)만으로 버전을 만들었습니다.

'Y(__)I
Y(oo)I
S/------\/I
R/I|L||K
Q*J/\---/\I
T~~K~~K
..."HaveIyouImooedItoday?"...'{.82-.*82<{72-' '*}*}%

대신 문자로 공간의 실행 길이 인코딩 ^A^R(그리고 인코딩 ^J으로 ^피하기 충돌로), 그것은 그대로 줄 바꿈을 떠나으로 실행 길이 인코딩 IY.

또한 제 범용 GolfScript Kolmogorov 프로그램은 120 바이트 프로그램을 생성합니다.


1

루아, 186178 바이트

@DJ McMayhem의 제안으로 8 바이트가 절약되었습니다.

p=print s=" "a=s:rep(17)b=s:rep(9)p(a.."(__) ")p(a.."(oo) ")p(b.."  /------\\/ ")p(b.." / |    ||   ")p(b.."*  /\\---/\\ ")p(b.."   ~~   ~~   ")p"...\"Have you mooed today?\"..."

언 골프 드 :

p=print --Save the print function for later use
s=" " --Space character
a=s:rep(17) --string.rep(string, times) repeats the given string
b=s:rep(9)
p(a.."(__) ") --print out the lines
p(a.."(oo) ")
p(b.."  /------\\/ ")
p(b.." / |    ||   ")
p(b.."*  /\\---/\\ ")
p(b.."   ~~   ~~   ")
p"...\"Have you mooed today?\"..."

19 행에서 2 행을a=repeat(" ",17)
James

아 감사합니다 :) 내가 그런 일을 할 수 있는지 알아 내려고 노력했다 ...
Nikolai97

1

> <> 217 바이트

!v"                 (__) "a"                 (oo) "a"           /------\/ "a"          / |    ||   "a"         *  /\---/\ "a"            ~~   ~~   "a"..."c3*2-"Have you mooed today?"c3*2-"..."a!
 >r>l0)?v;
    ^   o<

불행히도 이것은 지루한 답변입니다. 스택 전체에 소 (10)를 더하여 줄을 바꾸면서 전체 젖소를 끌어 당기는 끈을 읽는 것으로 시작합니다 (a). 그런 다음 소를 끌어 당기는 고리로 들어갑니다.

원래 공백 세트를 추가하기 위해 루프를 만들었지 만 실제로 공백을 넣는 것보다 바이트 단위로 더 비쌉니다.

편집 : 물고기가 "> <>"로 작성된 것을 잊었다


1

PowerShell, 144 바이트

$a="        "
"$a$a (__) "
"$a$a (oo) "
"$a   /------\/ "
"$a  / |    ||   "
"$a *  /\---/\ "
"$a    ~~   ~~   "
'..."Have you mooed today?"...'

위 코드는 Unix 스타일의 줄 바꿈 ( \n) 을 인쇄하는 환경에서 제대로 작동합니다 . 예를 들어 Linux 에서 Pash 를 사용하여 올바른 출력을 생성합니다 .

수학적으로 PowerShell의 경우 $a변수에 8 개의 공백을 두는 것이 가장 $b좋습니다 . 변수와 젖소 사이에 너무 많은 추가 공간이있어서 가치가 있기 때문에 더 많은 것을 의미합니다. 머리.


4
"줄 바꾸기 문자"는 로케일 / 플랫폼에 따라 다르므로 출력을 다른 것으로 사용할 수 있습니다.
sleblanc

1. "줄 바꾸기 문자"와 같은 것은 없습니다. \r캐리지 리턴이며 \n줄 바꿈입니다. 함께 \r\nWindows에서 줄 바꿈을 형성합니다. 2. PowerShell은 Windows만이 아닙니다. 나는 당신의 코드를 테스트했다.Pash ( 모니터 용 Windows PowerShell의 오픈 소스 구현)로 했으며 출력에 적절한 MD5 해시가 있습니다. 3. 위의 내용으로 인해 귀하의 게시물을 언 위키 할 자유가있었습니다. 이에 동의하지 않으면 다시 위키하십시오.
Dennis

매우 흥미로운 @Dennis ... 난 사이의 차이를 알고 있어요 \r\n하고 \n있지만, 내가 말했듯이, 나는 뭔가 중대한 사안 일없이 Windows에서 MD5 올바른을 가져올 수 없습니다. 그래도 편집 해 주셔서 감사합니다. 먼저 Pash에 대해서도 들었습니다. 감사합니다. 나는 ;-) ... Cygwin에서 아래 작성하는 방법을 복잡하게 할 것이라고 궁금
AdmBorkBork

0

분자 , 145 바이트

"   "_____:a"  (__) 
";a____"  (oo) 
";a__"  /------\\/ 
";a__" / |    ||   
";a__"*  /\\---/\\ 
";a____"~~"b"~~
...\"Have you mooed today?\"..."

ASCII art 압축을 시도한 첫 번째 : P

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