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
wc
la 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 wc
sortie 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, 5501
est le nombre "le plus long" à 4 chiffres, il 165
est donc rempli d'un espace et 90
de 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 wc
commande dans votre réponse. Au cas où ce n'était pas déjà évident.)
Cas de test ( \n
repré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"