Preâmbulo
Na marcação de Stack Exchange, usamos ** para negritar o texto. Por exemplo, esta redução:
The **quick brown fox jumps over the lazy** dog.
Renderiza como:
A rápida raposa marrom pula sobre o cachorro preguiçoso .
Obviamente, usamos ** para fechar a ousadia também. Portanto, menos da resposta será em negrito. Por exemplo:
The **quick** brown fox jumps over the **lazy** dog.
Renderiza como:
A rápida raposa marrom pula sobre o cachorro preguiçoso .
No entanto, se a ousadia não for fechada, ela será renderizada como não ousada :
The **quick brown fox jumps over the lazy dog.
Renderiza como:
A raposa marrom rápida salta sobre o cachorro preguiçoso.
Se o texto tiver uma única barra invertida \, a ousadia não terá efeito:
The \**quick brown fox jumps over the lazy dog.**
Renderiza como:
A rápida raposa marrom pula sobre o cachorro preguiçoso.
O espaço em branco à direita resulta em texto não dobrado (observe que o espaço em branco após o marrom é uma única guia):
The** quick** brown fox jumps over the lazy dog.**
Renderiza como:
A ** raposa ** raposa marrom pula sobre o cachorro preguiçoso. **
Também podemos usar __ para negrito também, mas observe que apenas um pode estar ativo por vez. Aqui está um exemplo mais complicado:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Renderiza como:
A rápida raposa marrom pula sobre o cachorro preguiçoso.
A questão:
Você pode escrever um programa ou função, dado texto ASCII ou como um Stringargumento ou em STDIN, onde os únicos caracteres especiais são **, __, \(para escapar) e espaços em branco, determinar quantos caracteres em negrito existem. Este valor deve ser impresso em STDOUT ou retornado da sua função. Você não precisa suportar seqüências muito longas; É garantido que o comprimento da string não exceda 30K, que é o limite para uma postagem do Stack Exchange.
Impressão fina:
- Posso lançar uma exceção / outro erro para um caso e retornar normalmente para o outro?
- Não. Ele deve ser um valor de retorno claro, inequívoco e sem erros para os dois casos. A saída STDERR será ignorada.
- Os espaços entre as palavras são considerados em negrito?
- Sim.
**quick brown**possui 11 caracteres em negrito.
- Sim.
- Caso o
\em\**, se em negrito, ser contado?- Não. É renderizado como **; portanto, se estiver em negrito, terá apenas 2 caracteres.
- Seja completamente claro: o que você quer dizer com quantos caracteres?
- Total de caracteres que seriam exibidos em negrito. Isso significa que não
**é renderizado se transformar texto, mas é renderizado se não transformar. - Observe que é possível fazer
**negrito de várias maneiras, por exemplo**\****- - ** . - Não considere a possibilidade de converter algum texto em itálico. A única regra de remarcação a considerar é ** = negrito *.
- Total de caracteres que seriam exibidos em negrito. Isso significa que não
- No Stack Exchange, o HTML Bold também funciona. ou seja, <b> </b>
- Sim, eu estou ciente. Não considere este caso, este é um texto normal.
- E quanto ao HTML? por exemplo
<-><- Estes também devem ser considerados como texto normal, não há conversão de entidade HTML.
- Pensei em um exemplo que você não abordou acima!
- As regras funcionam exatamente como se o texto tivesse sido postado no Stack Exchange, em uma resposta (não um comentário), exceto que os blocos de código não são considerados caracteres especiais . Tanto o tipo de quatro espaços quanto o tipo de bastão. Se você não tiver certeza de como o texto deve ser renderizado, basta jogá-lo em uma caixa de resposta em algum lugar como teste, essas são as regras que você deve seguir.
Exemplos:
Entrada:
The **quick brown fox jumps over the lazy** dog.
Resultado:
35
Entrada:
The **quick brown fox jumps over the lazy dog.
Resultado:
0
Entrada:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Resultado:
18
Entrada:
The __quick\____ brown fox **jumps over\** the** lazy \**dog.
Resultado:
23
Entrada:
The****quick brown fox****jumps over **the****lazy** dog.
Resultado:
11
As brechas padrão são proibidas.
**fox__ jumps**finaliza esse negrito específico.
\**ou \__existem seqüências de escape de três caracteres, mas no StackExchange existem apenas sequências de escape de dois caracteres \*ou \_. Então, \***a**produz um asterisco seguido de um negrito a. Há também outra fuga \\ . Devemos lidar com isso?
18correto para o terceiro caso de teste?