Este desafío es similar al anterior , pero con algunas partes poco claras de la especificación elaboradas y requisitos de E / S menos estrictos.
Dada una entrada de una cadena que consta de solo ASCII imprimible y nuevas líneas, genera sus diversas métricas (byte, palabra, recuento de líneas).
Las métricas que debe generar son las siguientes:
Recuento de bytes. Como la cadena de entrada permanece dentro de ASCII, este también es el recuento de caracteres.
El recuento de palabras. Esta es
wc
la definición de una "palabra:" cualquier secuencia de espacio no en blanco. Por ejemplo,abc,def"ghi"
es una "palabra".Recuento de líneas. Esto se explica por sí mismo. La entrada siempre contendrá una nueva línea final, lo que significa que el recuento de líneas es sinónimo de "recuento de nuevas líneas". Nunca habrá más de una nueva línea final.
La salida debe replicar exactamente la wc
salida predeterminada (excepto el nombre del archivo):
llama@llama:~$ cat /dev/urandom | tr -cd 'A-Za-z \n' | head -90 > example.txt
llama@llama:~$ wc example.txt
90 165 5501 example.txt
Tenga en cuenta que el recuento de líneas es lo primero, luego el recuento de palabras y finalmente el recuento de bytes. Además, cada recuento debe ir rellenado a la izquierda con espacios para que todos tengan el mismo ancho. En el ejemplo anterior, 5501
es el número "más largo" con 4 dígitos, por lo que 165
se rellena con un espacio y 90
con dos. Finalmente, todos los números deben unirse en una sola cadena con un espacio entre cada número.
Como se trata de code-golf , ganará el código más corto en bytes.
(Ah, y por cierto ... no puedes usar el wc
comando en tu respuesta. En caso de que eso ya no sea obvio).
Casos de prueba ( \n
representa una nueva línea; opcionalmente, también puede requerir una nueva línea adicional):
"a b c d\n" -> "1 4 8"
"a b c d e f\n" -> " 1 6 12"
" a b c d e f \n" -> " 1 6 16"
"a\nb\nc\nd\n" -> "4 4 8"
"a\n\n\nb\nc\nd\n" -> " 6 4 10"
"abc123{}[]()...\n" -> " 1 1 16
"\n" -> "1 0 1"
" \n" -> "1 0 4"
"\n\n\n\n\n" -> "5 0 5"
"\n\n\na\nb\n" -> "5 2 7"