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

รหัสสั้นแค่ไหน? วัวและบอลลูนอาจแตกต่างกันเล็กน้อย แต่องค์ประกอบทั้งหมดควรมีอยู่ บอลลูนแบบไดนามิก / หลายบรรทัดเป็นบวก

รายการองค์ประกอบที่ต้องการอย่างชัดเจน:

  • ข้อความ;
  • บอลลูน;
  • บรรทัดจากวัวสู่บอลลูน
  • วัว (ตา [s], เดือน, หู, ร่างกาย, ขา (ขั้นต่ำสอง), เต้านม, หาง)

/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

คำตอบ:


26

Mathematica: อยู่ระหว่างดำเนินการ

ฉันจะปักลูกโป่งลงเมื่อฉันได้วัวมาชำระ:

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

ป้อนคำอธิบายรูปภาพที่นี่


12
นี่ทำให้วันของฉัน
acolyte

bahahahhahahahahaha
jamylak

7
... มันเสร็จแล้วหรือยัง
noɥʇʎԀʎzɐɹƆ

การพัฒนาเพิ่มเติมในบอลลูนนั้น
Taylor Scott

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 จะชนะต่อไป :)

หมายเหตุ:ต้องใช้ Perl 5.16 สำหรับ/rแฟล็กการทดแทนที่ไม่ทำลาย


คุณช่วยบอกเราหน่อยได้ไหมว่าอะไรrหลังจากนั้นs///? ไม่พบการตั้งค่าสถานะดังกล่าวในเอกสารประกอบ ขอบคุณ.
จัดการ

3
upvoted ไม่ใช่ทุกคนที่กล้าพอที่จะเรียกว่า "วัว"
ดร. เบลิซาเรี

1
ก้มศีรษะของคุณไปทางซ้ายเพื่อดูวัว
วิ

@ จัดทำ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 และตกแต่งในลักษณะหลัง -12-round-vs-Mike-Tyson คล้ายกับการcowthink -e 'o*' -T 'U~'เรียก

ข้อความถูกอ่านจากอินพุตมาตรฐานและมีความยาวไม่เกิน 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|||||'

ตำแหน่งของอักขระ cow ในแต่ละแถวของอาร์เรย์ถูกระบุเป็นเวกเตอร์บูลีน 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 |
       ||     ||

รุ่นนี้สามารถทดสอบได้ผ่านล่าม APL ฟรีที่ www.nars2000.org


วิธีการนับตัวอักษรอย่างถูกต้อง? ฉันนับ 171 UTF-8 ไบต์และ 141 Unicode codepoints ที่นี่ (รวมบรรทัดใหม่) / * ยังไม่พบสิ่งที่ฉันต้องapt-get installเรียกใช้ APL ... * /
Vi

1
@Vi ชุดอักขระ APL + WIN v5 ขึ้นอยู่กับอักขระไบต์เดียว ฉันต้องแปลงเป็น UTF-8 เพื่อให้สามารถแสดงผลได้อย่างถูกต้องบนเว็บไซต์นี้ ดังนั้นฉันเชื่อว่าฉันเป็นธรรมในการนับตัวอักษรรวมถึงอักขระขึ้นบรรทัดใหม่เป็นไบต์เดียว ฉันไม่แน่ใจว่าคุณจะใช้งาน APL ได้อย่างไร ฉันมักจะแนะนำรุ่นฟรีที่nars2000.orgแต่ดูเหมือนจะไม่สนับสนุนการมอบหมายที่เกี่ยวข้อง
เกรแฮม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.