Cowsay trực tiếp ngắn gọn [đóng cửa]


12

Mô phỏng cowsayở chế độ mặc định.

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

Làm thế nào ngắn có thể là mã? Con bò và quả bóng bay có thể hơi khác nhau, nhưng tất cả các yếu tố nên có mặt. Bong bóng năng động / đa dòng là một lợi thế.

Danh sách rõ ràng của các yếu tố cần thiết:

  • Bản văn;
  • Quả bóng bay;
  • Dòng từ bò đến bóng bay;
  • Con bò (mắt [s], tháng, tai, cơ thể, chân (tối thiểu hai con), bầu vú, đuôi).

/usr/share/cowsay/cows/có thể được truy cập, nhưng rõ ràng không phải là /usr/games/cowsaychính nó.

Lưu ý: đây là /usr/share/cowsay/cows/default.cowtập tin:

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

Sử dụng các tập tin là tùy chọn. Khi được sử dụng, nó phải được truy cập bằng đường dẫn đầy đủ. (Người dùng Windows có thể sao chép nó vào một cái gì đó như C:\usr\share\cowsay\co\default.cow, cho công bằng).


Tôi đang bỏ phiếu để đóng cái này ngoài chủ đề vì đặc điểm kỹ thuật cho định dạng cực kỳ không mô tả, điều này khiến cho việc xác định tính hợp lệ của đầu ra là không thể.
Mego

Câu trả lời:



16

Perl, 84 ký tự

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

Đầu ra:

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

Phải thừa nhận rằng, tôi đã đánh golf con bò nhiều như tôi đánh gôn. Nhưng con bò Mathicala dù sao cũng sẽ chiến thắng :)

Lưu ý: Yêu cầu Perl 5.16 cho /rcờ thay thế không phá hủy.


Bạn có thể cho chúng tôi biết rsau đó là s///gì không? Không thể tìm thấy cờ như vậy trong tài liệu. Cảm ơn bạn.
manatwork

3
Nâng cao. Không phải ai cũng đủ can đảm để gọi đó là "một con bò"
Tiến sĩ belisarius

1
Cúi đầu trái để nhìn con bò.
Vi.

@manatwork rcờ trả về kết quả, thay vì sửa đổi toán hạng tại chỗ ( <>tất nhiên là chỉ đọc và không thể sửa đổi).
primo

Cảm ơn bạn đã giải thích, Vi. @ Belisarius, nó nhận được một cái nhìn dachshund ở đây vì line-height: 1.4embộ cho các khối mã, nhưng trong thiết bị đầu cuối có vẻ tốt hơn.
manatwork

5

Ruby: 152 150 149 146 143 ký tự

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}

Nghệ thuật bò được đọc từ tệp default.cow và được trang trí theo cách sau 12 vòng-vs-Mike-Tyson, tương tự như một cowthink -e 'o*' -T 'U~' lời mời.

Văn bản được đọc từ đầu vào tiêu chuẩn và được bao bọc tối đa 40 ký tự. Ngắt dòng trong văn bản đầu vào không được hỗ trợ.

Chạy mẫu:

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

Với nghệ thuật uốn cong: 138 135 136 ký tự

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

Khi các yếu tố phải có mặt, chúng ta có thể sử dụng những gì chúng ta có thay vì xác định những yếu tố thực tế.

Chạy mẫu:

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

Lớp lót này lấy đầu vào màn hình ở dạng vectơ ký tự hoặc mảng được đặt trong dấu ngoặc kép qua: ← Sự xuất hiện của đầu ra được cải thiện bằng cách bao gồm các khoảng trắng ở đầu và sau trong đầu vào.

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

Các vị trí ký tự bò trên mỗi hàng của mảng được chỉ định là các vectơ boolean 19 bit.

Để sử dụng đầu vào, một lớp lót theo sau là văn bản bong bóng trong dấu ngoặc kép:

' Hello '

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

Văn bản nhiều dòng được nhập dưới dạng một mảng.

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

Phiên bản này có thể được kiểm tra thông qua trình thông dịch APL miễn phí tại www.nars2000.org


Làm thế nào để đếm đúng các ký tự? Tôi đã đếm 171 byte UTF-8 và 141 bảng mã Unicode ở đây (bao gồm các dòng mới). / * Cũng không tìm thấy những gì tôi cần apt-get installđể chạy APL ... * /
Vi.

1
@Vi. Bộ ký tự APL + WIN v5 dựa trên các ký tự byte đơn. Tôi phải chuyển đổi chúng thành UTF-8 để khiến chúng hiển thị đúng trên trang web này. Do đó, tôi tin rằng tôi hợp lý trong việc đếm các ký tự bao gồm các ký tự dòng mới dưới dạng các byte đơn. Tôi không chắc làm thế nào bạn có thể chạy APL. Tôi thường giới thiệu phiên bản miễn phí tại nars2000.org nhưng nó không xuất hiện để hỗ trợ gán tương đối.
Graham
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.