"Корова" коротше [закрито]


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

Наскільки короткий може бути код? Корова і повітряна куля можуть бути трохи різними, але всі елементи повинні бути присутніми. Динамічний / багатолінійний куля - плюс.

Явний список необхідних елементів:

  • Текст;
  • Повітряна куля;
  • Лінія від корови до повітряної кулі;
  • Корова (око [с], місяць, вуха, тіло, ноги (мінімум два), вим’я, хвіст).

/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, для справедливості).


Я голосую за те, щоб закрити це як поза тему, оскільки специфікація формату є вкрай не описовою, що унеможливлює визначення достовірності результатів.
Мего

Відповіді:


26

Математика: Незавершена робота

Я приклею повітряну кулю, як тільки я зможу корову осісти:

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

введіть тут опис зображення


12
це зробило мій день.
аколіт

bahahahhahahahhaha
jamylak

7
... це ще зроблено?
noɥʇʎԀʎzɐɹƆ

Будь-який подальший розвиток на цій кулі?
Тейлор Скотт

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
Отримано. Не кожен сміливий називати цю «корову»
доктор Белісарій

1
Схиліть голову вліво, щоб побачити корову.
Ві.

@manatwork rпрапор повертає результат замість того, щоб змінювати операнд на місці ( <>звичайно, лише для читання, і його неможливо змінити).
примо

Дякую за пояснення, Ві. @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-ти раундів проти Майка-Тайсона, подібно до 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

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

Цю версію можна перевірити через безкоштовний перекладач APL на веб-сайті www.nars2000.org


Як правильно рахувати персонажів? Я нарахував тут 171 байт UTF-8 та 141 точку коду Unicode (включені нові рядки). / * Також не знайшли, що мені потрібно apt-get installдля запуску APL ... * /
Vi.

1
@Vi. Набір символів APL + WIN v5 базується на однобайтових символах. Я маю конвертувати їх у UTF-8, щоб змусити їх правильно відображатись на цьому сайті. Тому я вважаю, що я виправданий підрахунком символів, включаючи символи нового рядка, як одиничні байти. Я не впевнений, як можна запустити APL. Я зазвичай рекомендую безкоштовну версію на nars2000.org, але вона не підтримує відносне призначення.
Грем
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.