Préambule
Dans la démarque Stack Exchange, nous utilisons ** pour mettre le texte en gras. Par exemple, cette démarque:
The **quick brown fox jumps over the lazy** dog.
Rend comme:
Le renard brun rapide saute par-dessus le chien paresseux .
Bien sûr, nous utilisons également ** pour fermer l'audace. Donc, moins de réponses seront en gras. Par exemple:
The **quick** brown fox jumps over the **lazy** dog.
Rend comme:
Le renard brun rapide saute par-dessus le chien paresseux .
Cependant, si l'audace n'est pas fermée, elle s'affiche comme non audacieuse :
The **quick brown fox jumps over the lazy dog.
Rend comme:
Le renard brun rapide ** saute par-dessus le chien paresseux.
Si le texte a une seule barre oblique inverse \
, la gras ne prend pas effet non plus:
The \**quick brown fox jumps over the lazy dog.**
Rend comme:
Le ** renard brun rapide saute par-dessus le chien paresseux. **
La fin de l'espace blanc entraîne un texte en gras (notez que l'espace blanc après le brun est un onglet unique):
The** quick** brown fox jumps over the lazy dog.**
Rend comme:
Le renard brun ** rapide ** saute par-dessus le chien paresseux. **
Nous pouvons également utiliser __ pour gras, mais notez qu'un seul peut être actif à la fois. Voici un exemple plus compliqué:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Rend comme:
Le renard brun rapide ** saute par- dessus le chien paresseux **.
La question:
Vous pouvez écrire un programme ou une fonction, texte ASCII donné soit comme String
argument ou sur STDIN, où les seuls caractères spéciaux sont **
, __
, \
(pour échapper) et les espaces de fin, déterminer le nombre de caractères gras , il y a. Cette valeur doit être imprimée dans STDOUT ou renvoyée par votre fonction. Vous n'avez pas besoin de prendre en charge de très longues chaînes; La longueur de chaîne est garantie de ne pas dépasser 30K
, ce qui est la limite pour une publication Stack Exchange.
Petits caractères:
- Puis-je lever une exception / autre erreur pour un cas et revenir normalement pour l'autre?
- Non. Il doit s'agir d'une valeur de retour claire, non ambiguë et non erronée pour les deux cas. La sortie STDERR sera ignorée.
- Les espaces entre les mots sont-ils considérés comme gras?
- Oui.
**quick brown**
contient 11 caractères en gras.
- Oui.
- Le
\
in\**
, s'il est en gras, doit-il être compté?- Non. Il s'affiche comme **, donc s'il doit être en gras, il ne comportera que 2 caractères.
- Soyez tout à fait clair: que voulez-vous dire par combien de personnages?
- Nombre total de caractères à rendre en gras. Cela signifie que ce
**
n'est pas rendu s'il transforme du texte, mais il est rendu s'il ne le fait pas. - Notez qu'il est possible de faire
**
être mis en gras de plusieurs manières, par exemple**\****
-> ** . - Ne considérez pas la possibilité que du texte puisse être converti en italique. La seule règle de démarque à considérer est ** = gras *.
- Nombre total de caractères à rendre en gras. Cela signifie que ce
- Sur Stack Exchange, HTML Bold fonctionne également. c'est-à-dire <b> </b>
- Oui, je suis au courant. Ne considérez pas ce cas, c'est du texte normal.
- Qu'en est-il du HTML entite? par exemple
<
-><
- Ceux-ci doivent également être considérés comme du texte normal, il n'y a pas de conversion d'entité HTML.
- J'ai pensé à un exemple que vous n'avez pas couvert ci-dessus!
- Les règles fonctionnent exactement comme si le texte était publié sur Stack Exchange, dans une réponse (pas un commentaire), sauf que les blocs de code ne sont pas considérés comme des caractères spéciaux . Le type quatre espaces et le type backtick. Si vous n'êtes pas sûr de la façon dont le texte doit être rendu, jetez-le simplement dans une boîte de réponse quelque part comme test, ce sont les règles que vous devez suivre.
Exemples:
Contribution:
The **quick brown fox jumps over the lazy** dog.
Production:
35
Contribution:
The **quick brown fox jumps over the lazy dog.
Production:
0
Contribution:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Production:
18
Contribution:
The __quick\____ brown fox **jumps over\** the** lazy \**dog.
Production:
23
Contribution:
The****quick brown fox****jumps over **the****lazy** dog.
Production:
11
Les échappatoires standard sont interdites.
**fox__ jumps**
met fin à cette mise en gras particulière.
\**
ou \__
sont des séquences d'échappement à trois caractères, mais dans StackExchange, il n'y a que des séquences d'échappement à deux caractères \*
ou \_
. Produit donc \***a**
un astérisque suivi d'un gras a
. Il y a aussi une autre évasion, \\
. Faut-il s'en occuper?
18
correct pour le troisième cas de test?