“Cowsay” singkatnya [ditutup]

12

Simulasikan cowsaydalam mode default.

$ 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 |
                ||     ||

Seberapa pendek kodenya? Sapi dan balon bisa sedikit berbeda, tetapi semua elemen harus ada. Balon dinamis / multiline adalah nilai tambah.

Daftar eksplisit dari elemen yang diperlukan:

  • Teks;
  • Balon;
  • Garis dari sapi ke balon;
  • Sapi (mata), bulan, telinga, tubuh, kaki (minimal dua), ambing, ekor).

/usr/share/cowsay/cows/dapat diakses, tetapi jelas tidak dengan /usr/games/cowsaysendirinya.

Catatan: di sini adalah /usr/share/cowsay/cows/default.cowfile:

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

Penggunaan file adalah opsional. Saat digunakan, itu harus diakses oleh jalur penuh. (Pengguna Windows dapat menyalinnya ke sesuatu seperti C:\usr\share\cowsay\co\default.cow, untuk keadilan).

Vi.
sumber
Saya memberikan suara untuk menutup ini sebagai di luar topik karena spesifikasi untuk format ini sangat non-deskriptif, yang membuatnya tidak mungkin untuk menentukan validitas output.
Mego

Jawaban:

26

Mathematica: Bekerja dalam proses

Saya akan menjabarkan balon begitu saya bisa mendapatkan sapi untuk menyelesaikan:

ExampleData[{"Geometry3D", "Cow"}]

masukkan deskripsi gambar di sini

Belisarius
sumber
12
ini membuat hari saya.
acolyte
bahahahhahahahhaha
jamylak
7
... sudah selesai?
noɥʇʎԀʎzɐɹƆ
Adakah perkembangan lebih lanjut pada balon itu?
Taylor Scott
16

Perl, 84 karakter

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

Keluaran:

----------------------------------------------------
|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= 
 ¬

Diakui, saya bermain golf sapi seperti halnya saya golf kode. Tetapi sapi Mathematica akan tetap menang :)

Catatan: Memerlukan Perl 5.16 untuk /rbendera pengganti yang tidak merusak.


sumber
Bisakah Anda memberi tahu kami apa yang rsetelah itu s///? Tidak dapat menemukan bendera tersebut di dokumentasi. Terima kasih.
manatwork
3
Terpilih. Tidak semua orang cukup berani menyebutnya "seekor sapi"
Dr. belisarius
1
Tundukkan kepala Anda ke kiri untuk melihat sapi itu.
Vi.
@manatwork rbendera mengembalikan hasilnya, alih-alih memodifikasi operan di tempatnya ( <>tentu saja hanya-baca, dan tidak dapat dimodifikasi).
primo
Terima kasih atas penjelasannya, Vi. @ Belisarius, ini mendapatkan tampilan dachshund di sini karena line-height: 1.4emset untuk blok kode, tetapi di terminal terlihat lebih baik.
manatwork
5

Ruby: 152 150 149 146 143 karakter

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}

Seni sapi dibaca dari file default.cow dan didekorasi dengan gaya setelah-12-putaran-vs-Mike-Tyson, mirip dengan cowthink -e 'o*' -T 'U~'doa.

Teks dibaca dari input standar dan dibungkus paling banyak 40 karakter. Jeda baris dalam teks input tidak didukung.

Contoh dijalankan:

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 |
                ||     ||

Dengan art bending: 138 135 136 karakter

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')

Karena elemen-elemen harus hadir begitu saja, kita dapat menggunakan apa yang kita miliki alih-alih mendefinisikan yang realistis.

Contoh dijalankan:

bash-4.2$ ruby cow.rb <<< 'Hello poor little cow'
--------------------------------------------
( Hello poor little cow                    )
--------------------------------------------
        s   ^__^
         s  (es)\_______
            (__)\       )\/\
             ue ||----w |
                ||     ||
manatwork
sumber
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 |
       ||     ||
tmartin
sumber
2

APL 133 140 138 122

Liner satu ini mengambil input layar dalam bentuk vektor karakter atau array yang dilampirkan dalam tanda kutip melalui: ← ⍎⍞ Tampilan output ditingkatkan dengan memasukkan spasi memimpin dan berikut dalam input.

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

Lokasi karakter sapi pada setiap baris array ditentukan sebagai vektor boolean 19 bit.

Untuk menggunakan input, satu liner, diikuti oleh teks gelembung dalam tanda kutip:

' Hello '

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

Teks multi-baris adalah input sebagai array.

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 |
       ||     ||

Versi ini dapat diuji melalui juru APL gratis di www.nars2000.org

Graham
sumber
Bagaimana cara menghitung karakter dengan benar? Saya menghitung 171 byte UTF-8 dan 141 Unicode codepoint di sini (termasuk baris baru). / * Juga belum menemukan apa yang saya butuhkan apt-get installuntuk menjalankan APL ... * /
Vi.
1
@ Vi. Rangkaian karakter APL + WIN v5 didasarkan pada karakter byte tunggal. Saya harus mengonversikannya ke UTF-8 untuk membuatnya ditampilkan dengan benar di situs ini. Karena itu saya percaya saya dibenarkan dalam menghitung karakter termasuk karakter baris baru sebagai byte tunggal. Saya tidak yakin bagaimana Anda dapat menjalankan APL. Saya biasanya merekomendasikan versi gratis di nars2000.org tetapi tampaknya tidak mendukung penetapan relatif.
Graham