«Cowsay» en bref [fermé]

12

Simulez cowsaydans le mode par défaut.

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

Quelle est la longueur du code? La vache et le ballon peuvent être légèrement différents, mais tous les éléments doivent être présents. Le ballon dynamique / multiligne est un plus.

Liste explicite des éléments requis:

  • Texte;
  • Ballon;
  • Ligne de la vache au ballon;
  • La vache (œil [s], mois, oreilles, corps, jambes (minimum deux), pis, queue).

/usr/share/cowsay/cows/peut être consulté, mais évidemment pas /usr/games/cowsaylui-même.

Remarque: voici le /usr/share/cowsay/cows/default.cowfichier:

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

L'utilisation du fichier est facultative. Lorsqu'il est utilisé, il doit être accessible par un chemin complet. (Les utilisateurs de Windows peuvent le copier sur quelque chose comme C:\usr\share\cowsay\co\default.cow, par souci d'équité).

Vi.
la source
Je vote pour fermer ceci comme hors sujet parce que la spécification du format est extrêmement non descriptive, ce qui rend impossible la détermination de la validité des sorties.
Mego

Réponses:

26

Mathematica: Travail en cours

J'arrêterai le ballon une fois que j'aurai réussi à régler la vache:

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

entrez la description de l'image ici

Dr. belisarius
la source
12
cela a fait ma journée.
acolyte
bahahahhahahahhaha
jamylak
7
... est-ce déjà fait?
noɥʇʎԀʎzɐɹƆ
Y a-t-il d'autres développements sur ce ballon?
Taylor Scott
16

Perl, 84 caractères

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

Production:

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

Certes, je jouais à la vache autant que je jouais au code. Mais la vache Mathematica va quand même gagner :)

Remarque: Requiert Perl 5.16 pour l' /rindicateur de substitution non destructif.


la source
Pouvez-vous nous dire ce que c'est raprès le s///? Impossible de trouver un tel indicateur dans la documentation. Je vous remercie.
manatwork
3
A voté. Tout le monde n'est pas assez courageux pour appeler cela "une vache"
Dr. belisarius
1
Inclinez la tête vers la gauche pour voir la vache.
Vi.
@manatwork l' rindicateur renvoie le résultat, au lieu de modifier l'opérande en place ( <>est bien sûr en lecture seule, et ne peut pas être modifié).
primo
Merci pour l'explication, Vi. @belisarius, il obtient un look de teckel ici parce que l' line-height: 1.4emensemble pour les blocs de code, mais dans le terminal, il a l'air mieux.
manatwork
5

Rubis: 152 150 149 146 143 143 caractères

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}

L'art de la vache est lu à partir du fichier default.cow et décoré de la manière après 12 rounds vs Mike-Tyson, similaire à une cowthink -e 'o*' -T 'U~'invocation.

Le texte est lu à partir de l'entrée standard et encapsulé au plus 40 caractères. Les sauts de ligne dans le texte d'entrée ne sont pas pris en charge.

Exemple d'exécution:

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

Avec flexion artistique: 138 135 136 136 caractères

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

Comme les éléments doivent être juste présents, nous pouvons utiliser ce que nous avons en place au lieu d'en définir des réalistes.

Exemple d'exécution:

bash-4.2$ ruby cow.rb <<< 'Hello poor little cow'
--------------------------------------------
( Hello poor little cow                    )
--------------------------------------------
        s   ^__^
         s  (es)\_______
            (__)\       )\/\
             ue ||----w |
                ||     ||
homme au travail
la source
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 |
       ||     ||
tmartin
la source
2

APL 133 140 138 122

Ce liner prend l'entrée d'écran sous la forme d'un vecteur de caractères ou d'un tableau entre guillemets via: ← ⍎⍞ L'apparence de la sortie est améliorée en incluant des espaces de début et de suite dans l'entrée.

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

Les emplacements des caractères de vache sur chaque ligne du tableau sont spécifiés en tant que vecteurs booléens de 19 bits.

Pour utiliser la saisie d'une ligne, suivie du texte de la bulle entre guillemets:

' Hello '

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

Le texte multiligne est entré sous forme de tableau.

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

Cette version peut être testée via l'interpréteur APL gratuit sur www.nars2000.org

Graham
la source
Comment compter correctement les personnages? J'ai compté 171 octets UTF-8 et 141 points de code Unicode ici (nouvelles lignes incluses). / * Je n'ai pas non plus trouvé ce dont j'avais besoin apt-get installpour exécuter APL ... * /
Vi.
1
@Vi. Le jeu de caractères APL + WIN v5 est basé sur des caractères à un octet. Je dois les convertir en UTF-8 pour les rendre correctement sur ce site. Par conséquent, je crois que je suis justifié de compter les caractères, y compris les caractères de nouvelle ligne comme octets uniques. Je ne sais pas comment vous pouvez exécuter APL. Je recommande normalement la version gratuite sur nars2000.org mais elle ne semble pas prendre en charge l' assignation relative.
Graham