«Коровай» вкратце [закрыто]


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

Mathematica: работа в процессе

Я свяжу шар, как только смогу заставить корову осесть:

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

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


12
это сделало мой день.
помощник

бахахахахахахаххаха
джамилак

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///? Не могу найти такой флаг в документации. Спасибо.
manatwork

3
Upvoted. Не все достаточно смелы, чтобы называть это "коровой"
доктор Белизарий

1
Склони голову влево, чтобы увидеть корову.
Ви.

@manatwork rфлаг возвращает результат вместо изменения операнда на месте ( <>конечно, только для чтения и не может быть изменен).
Прим

Спасибо за объяснение, Ви. @belisarius, он получает таксу взгляд здесь , потому что line-height: 1.4emнабор для кодовых блоков, но в терминале он выглядит лучше.
manatwork

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.