短い「カウサイ」[閉まっている]


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、公平性のために、のようなものにコピーできます)。


この形式の仕様は非常に記述的ではないため、出力の妥当性を判断することができないため、これをトピック外として閉じることに投票しています。
メゴ

回答:



16

Perl、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///ですか?ドキュメントにそのようなフラグが見つかりません。ありがとうございました。
マナトワーク

3
賛成。誰もがそれを「牛」と呼ぶほど勇敢ではない
ベリサリウス博士13

1
頭を左に曲げて牛を見てください。
Vi。

@manatwork rは、その場でオペランドを修正する代わりに、結果を返します(<>もちろん読み取り専用であり、修正できません)。
primo

説明してくれてありがとう、Vi。@belisarius、コードのセットがブロックされているため、ここでダックスフントの外観を取得しますline-height: 1.4emが、端末ではより良く見えます。
マナトワーク

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~'呼び出しと同様にafter-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

この1つのライナーは、次を介して引用符で囲まれた文字ベクトルまたは配列の形式で画面入力を受け取ります。

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

配列の各行の牛文字の位置は、19ビットのブールベクトルとして指定されます。

入力を使用するには、1つのライナーに引用符で囲まれたバブルテキストを続けます。

' 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個のUnicodeコードポイントをカウントしました(改行を含む)。/ * apt-get installAPLを実行するために必要なものも見つかりませんでした... * /
Vi。

1
@Vi。APL + WIN v5文字セットは、シングルバイト文字に基づいています。このサイトで適切にレンダリングするには、それらをUTF-8に変換する必要があります。したがって、改行文字を含む文字を1バイトとして数えることは正当だと思います。APLを実行する方法がわかりません。私は通常nars2000.orgの無料版をお勧めしますが、相対的な割り当てをサポートしていないようです。
グラハム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.