„Cowsay” w skrócie [zamknięte]

12

Symuluj cowsayw trybie domyślnym.

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

Jak krótki może być kod? Krowa i balon mogą się nieco różnić, ale wszystkie elementy powinny być obecne. Balon dynamiczny / wieloliniowy to plus.

Jawna lista wymaganych elementów:

  • Tekst;
  • Balon;
  • Linia od krowy do balonu;
  • Krowa (oko [s], miesiąc, uszy, ciało, nogi (minimum dwa), wymiona, ogon).

/usr/share/cowsay/cows/można uzyskać dostęp, ale oczywiście nie /usr/games/cowsaysam.

Uwaga: oto /usr/share/cowsay/cows/default.cowplik:

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

Użycie pliku jest opcjonalne. Gdy jest używany, musi być dostępny pełną ścieżką. (Użytkownicy systemu Windows mogą skopiować to do czegoś podobnego C:\usr\share\cowsay\co\default.cow, dla uczciwości).

Vi.
źródło
Głosuję za zamknięciem tego tematu jako nie na temat, ponieważ specyfikacja formatu jest wyjątkowo nieopisowa, co uniemożliwia określenie poprawności wyników.
Mego

Odpowiedzi:

26

Mathematica: Prace w toku

Kiedy zdołam nakłonić krowę do osiedlenia się, zdejmę balon:

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

wprowadź opis zdjęcia tutaj

Dr Belizariusz
źródło
12
wprawiło mnie w rewelacyjny nastrój.
akolit
bahahahhahahahahaha
jamylak
7
... czy to już zrobione?
noɥʇʎԀʎzɐɹƆ
Jakiś dalszy rozwój tego balonu?
Taylor Scott
16

Perl, 84 znaków

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

Wynik:

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

Trzeba przyznać, że grałem w krowę tak samo, jak grałem w kod. Ale krowa Mathematica i tak wygra :)

Uwaga: Wymaga Perla 5.16 dla /rnieniszczącej flagi substytucji.


źródło
Czy możesz nam powiedzieć, co to jest rpo s///? Nie można znaleźć takiej flagi w dokumentacji. Dziękuję Ci.
manatwork
3
Pozytywne. Nie każdy ma dość odwagi, by nazwać to „krową”
dr belizariusz 12.04.13
1
Pochyl głowę w lewo, aby zobaczyć krowę.
Vi.
@manatwork rflaga zwraca wynik, zamiast modyfikować operand w miejscu ( <>jest oczywiście tylko do odczytu i nie można go modyfikować).
primo
Dziękuję za wyjaśnienie, Vi. @belisarius, tutaj wygląda jamnik , ponieważ line-height: 1.4emzestaw bloków kodu, ale w terminalu wygląda lepiej.
manatwork
5

Rubin: 152 150 149 146 143 znaków

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}

Sztuka krowy jest odczytywana z pliku default.cow i dekorowana w sposób następujący po 12 rundach vs Mike-Tyson, podobnie jak cowthink -e 'o*' -T 'U~'wywołanie.

Tekst jest odczytywany ze standardowego wejścia i zawijany maksymalnie 40 znaków. Podziały wierszy w tekście wejściowym nie są obsługiwane.

Przykładowy przebieg:

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

Z gięciem grafiki: 138 135 136 znaków

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

Ponieważ elementy muszą być po prostu obecne, możemy użyć tego, co mamy na miejscu, zamiast definiować realistyczne.

Przykładowy przebieg:

bash-4.2$ ruby cow.rb <<< 'Hello poor little cow'
--------------------------------------------
( Hello poor little cow                    )
--------------------------------------------
        s   ^__^
         s  (es)\_______
            (__)\       )\/\
             ue ||----w |
                ||     ||
człowiek w pracy
źródło
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 |
       ||     ||
tartin
źródło
2

APL 133 140 138 122

Ta jedna linijka przyjmuje dane wejściowe na ekranie w postaci wektora znaków lub tablicy ujętej w cudzysłowy poprzez: ← ⍎⍞ Wygląd wydruku jest poprawiony poprzez włączenie początkowych i następujących po nim spacji.

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

Lokalizacje znaków krów w każdym rzędzie tablicy są określone jako 19-bitowe wektory boolowskie.

Aby skorzystać z danych wejściowych, użyj jednej linijki, a następnie tekstu bąbelka w cudzysłowach:

' Hello '

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

Tekst wielowierszowy jest wprowadzany jako tablica.

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

Tę wersję można przetestować za pomocą bezpłatnego interpretera APL na stronie www.nars2000.org

Graham
źródło
Jak poprawnie policzyć postacie? Naliczyłem tutaj 171 bajtów UTF-8 i 141 znaków kodowych Unicode (łącznie z nowymi liniami). / * Też nie znalazłem tego, co jest potrzebne apt-get installdo uruchomienia APL ... * /
Vi.
1
@Vi. Zestaw znaków APL + WIN v5 oparty jest na znakach jednobajtowych. Muszę przekonwertować je na UTF-8, aby poprawnie renderować na tej stronie. Dlatego uważam, że jestem uzasadniony licząc znaki, w tym znaki nowego wiersza jako pojedyncze bajty. Nie jestem pewien, jak uruchomić APL. Zwykle polecam darmową wersję na nars2000.org, ale wydaje się, że nie obsługuje względnego przypisania.
Graham,