Ce défi est similaire à l'ancien , mais avec certaines parties floues de la spécification et des exigences d'E / S moins strictes.
Étant donné l'entrée d'une chaîne composée uniquement d'ASCII imprimables et de sauts de ligne, affichez ses diverses métriques (octet, mot, nombre de lignes).
Les mesures que vous devez générer sont les suivantes:
Nombre d'octets. Étant donné que la chaîne d'entrée reste en ASCII, il s'agit également du nombre de caractères.
Nombre de mots. Il s'agit de
wcla définition d'un "mot:" n'importe quelle séquence non blanche. Par exemple,abc,def"ghi"est un «mot».Nombre de lignes. Cela va de soi. L'entrée contiendra toujours une nouvelle ligne de fin, ce qui signifie que le nombre de lignes est synonyme de «nombre de nouvelles lignes». Il n'y aura jamais plus d'un seul saut de ligne.
La sortie doit reproduire exactement la wcsortie par défaut (à l'exception du nom de fichier):
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
Notez que le nombre de lignes vient en premier, puis le nombre de mots et enfin le nombre d'octets. De plus, chaque comptage doit être rempli à gauche avec des espaces de sorte qu'ils soient tous de la même largeur. Dans l'exemple ci-dessus, 5501est le nombre "le plus long" à 4 chiffres, il 165est donc rempli d'un espace et 90de deux. Enfin, les numéros doivent tous être joints en une seule chaîne avec un espace entre chaque numéro.
Puisqu'il s'agit de code-golf , le code le plus court en octets gagnera.
(Oh, et au fait ... vous ne pouvez pas utiliser la wccommande dans votre réponse. Au cas où ce n'était pas déjà évident.)
Cas de test ( \nreprésente une nouvelle ligne; vous pouvez également avoir éventuellement besoin d'une nouvelle ligne supplémentaire):
"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"