간단히 "Cowsay"[닫힘]


12

cowsay기본 모드에서 시뮬레이션 하십시오.

$ cowsay <<< Hello
 _______
< Hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

$ perl -e 'print "Long text "x20' | cowsay
 __________________________________________
/ Long text Long text Long text Long text  \
| Long text Long text Long text Long text  |
| Long text Long text Long text Long text  |
| Long text Long text Long text Long text  |
\ Long text Long text Long text Long text  /
 ------------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

코드가 얼마나 짧을 수 있습니까? 소와 풍선은 약간 다를 수 있지만 모든 요소가 있어야합니다. 동적 / 여러 줄 풍선은 플러스입니다.

필수 요소의 명시 적 목록 :

  • 본문;
  • 풍선;
  • 젖소에서 풍선으로 선;
  • 젖소 (눈, 달, 귀, 몸, 다리 (최소 2), 젖통, 꼬리).

/usr/share/cowsay/cows/액세스 할 수 있지만 분명히 /usr/games/cowsay그 자체는 아닙니다 .

참고 : 여기 /usr/share/cowsay/cows/default.cow파일이 있습니다 :

$the_cow = <<"EOC";
        $thoughts   ^__^
         $thoughts  ($eyes)\\_______
            (__)\\       )\\/\\
             $tongue ||----w |
                ||     ||
EOC

파일 사용법은 선택 사항입니다. 사용하는 경우 전체 경로로 액세스해야합니다. (Windows 사용자는 C:\usr\share\cowsay\co\default.cow공정성을 위해 파일 을 복사 할 수 있습니다 ).


형식에 대한 사양이 매우 비 설명 적이므로 출력의 유효성을 결정하는 것이 불가능하기 때문에 이것을 주 제외로 닫으려고 투표하고 있습니다.
Mego

답변:



16

펄, 84 자

print$a='-'x52,<>=~s/.{1,50}\b/sprintf"
|%-50s|",$&/rge,"$a
\\   
]:p
| )=
| P= 
 ¬"

산출:

----------------------------------------------------
|Long text Long text Long text Long text Long text |
|Long text Long text Long text Long text Long text |
|Long text Long text Long text Long text Long text |
|Long text Long text Long text Long text Long text |
----------------------------------------------------
\   
]:p
| )=
| P= 
 ¬

틀림없이, 나는 코드를 골프 때만 큼 암소를 골프로 쳤다. 그러나 Mathematica 암소는 어쨌든 이길 것입니다 :)

참고 :/r 비파괴 대체 플래그 에는 Perl 5.16이 필요합니다 .


r이후에 무엇인지 알려주 s///시겠습니까? 설명서에서 이러한 플래그를 찾을 수 없습니다. 감사합니다.
manatwork

3
공감. 모두가 그 소를 소라고 부르기에 충분히 용감한 것은 아닙니다
Dr. belisarius

1
젖소를보기 위해 머리를 왼쪽으로 숙입니다.
Vi.

@manatwork r플래그는 피연산자를 수정하는 대신 결과를 반환합니다 ( <>물론 읽기 전용이며 수정할 수 없습니다).
primo

설명 주셔서 감사합니다, Vi. @ belisarius, 코드 블록 세트 때문에 닥스 훈트 모양을 얻지 line-height: 1.4em만 터미널에서는 더 좋아 보입니다.
manatwork

5

루비 : 152 개 150 149 146 143 문자

load'/usr/share/cowsay/cows/default.cow'
p=%w{U~ o* o o}
puts l=?-*44,gets.gsub(/(.{1,40})\b\s*/){"( %-41s)\n"%$1}+l,$the_cow.gsub(/\$\w+/){p.pop}

암소 예술은 default.cow 파일에서 읽히고 cowthink -e 'o*' -T 'U~'호출 과 비슷한 12-rounds-vs-Mike-Tyson 방식으로 장식 됩니다.

텍스트는 표준 입력에서 읽히고 최대 40 자입니다. 입력 텍스트의 줄 바꿈은 지원되지 않습니다.

샘플 실행 :

bash-4.2$ perl -e 'print "Long text "x15' | ruby cow.rb 
--------------------------------------------
( Long text Long text Long text Long text  )
( Long text Long text Long text Long text  )
( Long text Long text Long text Long text  )
( Long text Long text Long text            )
--------------------------------------------
        o   ^__^
         o  (o*)\_______
            (__)\       )\/\
             U~ ||----w |
                ||     ||

: 예술의 굽힘과 함께 138 135 136 자

load'/usr/share/cowsay/cows/default.cow'
puts l=?-*44,gets.gsub(/(.{1,40})\b\s*/){"( %-41s)\n"%$1}+l,$the_cow.gsub(/\$.+?([use]+)\b/,'\1')

요소가 방금 존재해야하므로 현실적인 요소를 정의하는 대신 현재 위치에있는 것을 사용할 수 있습니다.

샘플 실행 :

bash-4.2$ ruby cow.rb <<< 'Hello poor little cow'
--------------------------------------------
( Hello poor little cow                    )
--------------------------------------------
        s   ^__^
         s  (es)\_______
            (__)\       )\/\
             ue ||----w |
                ||     ||

2

K, 178

{-1'g,({"+ ",x,((&/(c-4;60-#x))#" ")," +"}'l),(g:,(&/(64;4+c::#*l:(60*!-_-(#x)%60)_x))#"+"),("+  ^__^";" + (oo)\\_______";"   (__)\\       )\\/\\";"       ||----w |";"       ||     ||");}

.

k){-1'g,({"+ ",x,((c-#x)#" ")," +"}'l),(g:,(&/(64;4+c::#*l:(60*!-_-(#x)%60)_x))#"+"),("+  ^__^";" + (oo)\\_______";"   (__)\\       )\\/\\";"       ||----w |";"       ||     ||");}"Hello codegolf.stackexchange.com"
++++++++++++++++++++++++++++++++++++
+ Hello codegolf.stackexchange.com +
++++++++++++++++++++++++++++++++++++
+  ^__^
 + (oo)\_______
   (__)\       )\/\
       ||----w |
       ||     ||

2

APL 133 140 138 122

이 하나의 라이너는 다음을 통해 따옴표로 묶은 문자형 벡터 또는 배열의 형태로 화면 입력을 가져옵니다.

('∘'⍪'∘',((¯2↑1,⍴t)⍴t←⍎⍞),'∘')⍪'∘'⋄5 19⍴(,⍉(19⍴2)⊤323584 196592 63503 4072 3096)\'∘^__^∘(oo)\_______(__)\)\/\||----w|||||'

배열의 각 행에서 소 문자 위치는 19 비트 부울 벡터로 지정됩니다.

따옴표 안의 풍선 텍스트 뒤에 하나의 라이너를 입력하려면 :

' Hello '

°°°°°°°°°
° Hello °
°°°°°°°°°
°  ^__^
 ° (oo)\_______
   (__)\       )\/\
       ||----w |
       ||     ||

여러 줄 문자가 배열로 입력됩니다.

3 36⍴' Multi-line text input as an array. '

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
° Multi-line text input as an array. °
° Multi-line text input as an array. °
° Multi-line text input as an array. °
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
°  ^__^
 ° (oo)\_______
   (__)\       )\/\
       ||----w |
       ||     ||

이 버전은 www.nars2000.org에서 무료 APL 통역사를 통해 테스트 할 수 있습니다.


문자를 올바르게 계산하는 방법은 무엇입니까? 나는 여기에 171 UTF-8 바이트와 141 유니 코드 코드 포인트를 계산했습니다 (줄 바꿈 포함). / * 또한 apt-get installAPL을 실행 하기 위해 필요한 것을 찾지 못했습니다 ... * /
Vi.

1
@Vi. APL + WIN v5 문자 세트는 단일 바이트 문자를 기반으로합니다. 이 사이트에서 올바르게 렌더링하려면 UTF-8로 변환해야합니다. 따라서 줄 바꿈 문자를 단일 바이트로 포함하는 문자를 계산하는 것이 정당하다고 생각합니다. APL을 어떻게 실행할 수 있는지 잘 모르겠습니다. 나는 일반적으로 nars2000.org 에서 무료 버전을 권장 하지만 상대 할당을 지원하지 않는 것 같습니다.
Graham
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.