"Cowsay" en resumen [cerrado]

12

Simular cowsayen el modo predeterminado.

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

¿Qué tan corto puede ser el código? La vaca y el globo pueden ser ligeramente diferentes, pero todos los elementos deben estar presentes. El globo dinámico / multilínea es una ventaja.

Lista explícita de los elementos requeridos:

  • Texto;
  • Globo;
  • Línea de la vaca al globo;
  • La vaca (ojo (s), mes, orejas, cuerpo, patas (mínimo dos), ubre, cola).

/usr/share/cowsay/cows/se puede acceder, pero obviamente no a /usr/games/cowsaysí mismo.

Nota: aquí está el /usr/share/cowsay/cows/default.cowarchivo:

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

El uso del archivo es opcional. Cuando se usa, se debe acceder por la ruta completa. (Los usuarios de Windows pueden copiarlo en algo como C:\usr\share\cowsay\co\default.cow, para ser justos).

Vi.
fuente
Estoy votando para cerrar esto como fuera de tema porque la especificación para el formato es extremadamente no descriptiva, lo que hace que sea imposible determinar la validez de los resultados.
Mego

Respuestas:

26

Mathematica: trabajo en progreso

Fijaré el globo una vez que pueda lograr que la vaca se asiente:

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

ingrese la descripción de la imagen aquí

Dr. belisario
fuente
12
esto hizo mi dia.
acólito
bahahahhahahahhaha
jamylak
77
... ¿ya está hecho?
noɥʇʎԀʎzɐɹƆ
¿Algún desarrollo adicional en ese globo?
Taylor Scott
16

Perl, 84 caracteres

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

Salida:

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

Es cierto que jugué golf a la vaca tanto como jugué al código. Pero la vaca Mathematica va a ganar de todos modos :)

Nota: Requiere Perl 5.16 para la /rbandera de sustitución no destructiva.


fuente
¿Puedes decirnos por favor qué es eso rdespués del s///? No se puede encontrar dicha bandera en la documentación. Gracias.
manatwork
3
Votado No todos son lo suficientemente valientes como para llamar a eso "una vaca"
Dr. belisarius
1
Inclina la cabeza hacia la izquierda para ver la vaca.
Vi.
@manatwork, el rindicador devuelve el resultado, en lugar de modificar el operando en su lugar ( <>por supuesto, es de solo lectura y no se puede modificar).
primo
Gracias por la explicación, Vi. @belisarius, se ve un perro salchicha aquí porque el line-height: 1.4emconjunto para el código bloquea, pero en la terminal se ve mejor.
manatwork
5

Rubí: 152 150 149 146 143 caracteres

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}

El arte de la vaca se lee desde el archivo default.cow y se decora después de 12 rondas-vs-Mike-Tyson, de manera similar a una cowthink -e 'o*' -T 'U~'invocación.

El texto se lee desde la entrada estándar y se envuelve a lo sumo 40 caracteres. Los saltos de línea en el texto de entrada no son compatibles.

Ejecución de muestra:

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

Con doblado de arte: 138 135 136 caracteres

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

Como los elementos tienen que estar presentes, podemos usar lo que tenemos en lugar de definir elementos realistas.

Ejecución de muestra:

bash-4.2$ ruby cow.rb <<< 'Hello poor little cow'
--------------------------------------------
( Hello poor little cow                    )
--------------------------------------------
        s   ^__^
         s  (es)\_______
            (__)\       )\/\
             ue ||----w |
                ||     ||
hombre trabajando
fuente
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
fuente
2

APL 133 140 138 122

Este liner toma la entrada de la pantalla en forma de un vector de caracteres o matriz entre comillas a través de: ← ⍎⍞ La apariencia de la salida se mejora al incluir espacios iniciales y siguientes en la entrada.

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

Las ubicaciones de los caracteres de vaca en cada fila de la matriz se especifican como vectores booleanos de 19 bits.

Para usar la entrada, el único liner seguido del texto de burbuja entre comillas:

' Hello '

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

El texto de varias líneas se ingresa como una matriz.

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

Esta versión se puede probar a través del intérprete APL gratuito en www.nars2000.org

Graham
fuente
¿Cómo contar correctamente los personajes? Conté 171 bytes UTF-8 y 141 puntos de código Unicode aquí (nuevas líneas incluidas). / * Tampoco he encontrado lo que necesito apt-get installpara ejecutar APL ... * /
Vi.
1
@Vi. El juego de caracteres APL + WIN v5 se basa en caracteres de un solo byte. Tengo que convertirlos a UTF-8 para que se procesen correctamente en este sitio. Por lo tanto, creo que estoy justificado para contar los caracteres, incluidos los caracteres de nueva línea como bytes individuales. No estoy seguro de cómo puede ejecutar APL. Normalmente recomiendo la versión gratuita en nars2000.org pero no parece admitir la asignación relativa.
Graham el