преамбула
В уценке Stack Exchange мы используем ** для выделения текста. Например, эта уценка:
The **quick brown fox jumps over the lazy** dog.
Представляет как:
Булки через ленивую собаку.
Конечно, мы используем **, чтобы закрыть смелость, а также. Так что меньше ответа будет жирным. Например:
The **quick** brown fox jumps over the **lazy** dog.
Представляет как:
Быстро коричневая лиса перепрыгивает через ленивую собаку.
Однако, если жирность не закрыта, она отображается как не жирная :
The **quick brown fox jumps over the lazy dog.
Представляет как:
Быстрая коричневая лиса прыгает через ленивую собаку.
Если текст имеет одну обратную косую черту \
, жирность также не вступает в силу:
The \**quick brown fox jumps over the lazy dog.**
Представляет как:
Быстрая коричневая лиса прыгает через ленивую собаку.**
Конечный пробел приводит к появлению пустого текста (обратите внимание, пробел после коричневого цвета - это одна вкладка):
The** quick** brown fox jumps over the lazy dog.**
Представляет как:
Быстрая коричневая лиса прыгает через ленивую собаку.**
Мы также можем использовать __ для жирного шрифта, но учтите, что одновременно может быть активен только один. Вот более сложный пример:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Представляет как:
Быстро ** коричневый fox__ скачка over__ the__ ленивого ** собаки.
Вопрос:
Вы можете написать программу или функцию, данный текст ASCII либо в качестве String
аргумента или на STDIN, где только специальные символы **
, __
, \
(для выхода) и конечные пробелы, определить , сколько символов полужирный есть. Это значение должно быть напечатано в STDOUT или возвращено из вашей функции. Вам не нужно поддерживать очень длинные строки; Длина строки гарантированно не должна превышать 30K
, что является пределом для сообщения Stack Exchange.
Хорошая печать:
- Могу ли я выдать исключение / другую ошибку для одного случая и вернуть нормально для другого?
- Нет. Это должно быть либо ясное, однозначное, не ошибочное возвращаемое значение для обоих случаев. Вывод STDERR будет игнорироваться.
- Являются ли пробелы между словами жирными?
- Да.
**quick brown**
имеет 11 смелых символов в нем.
- Да.
- Если
\
в\**
, если жирным шрифтом, подсчитываются?- Нет. Он отображается как **, поэтому, если он будет выделен жирным шрифтом, он будет содержать только 2 символа.
- Будьте совершенно ясны: что вы подразумеваете под количеством символов?
- Всего символов, которые будут выделены жирным шрифтом. Это означает , что
**
это не оказало , если он преобразует текст, но оказывается , если он не делает. - Обратите внимание, что это можно сделать
**
жирным шрифтом несколькими способами, например**\****
-> ** . - Не думайте, что какой-то текст может быть переведен в курсив. Только уценки правило рассмотреть ** = полужирный *.
- Всего символов, которые будут выделены жирным шрифтом. Это означает , что
- На Stack Exchange работает HTML Bold. то есть <b> </ b>
- Да, я в курсе. Не рассматривайте этот случай, это обычный текст.
- А как насчет HTML? например
<
-><
- Они также должны рассматриваться как обычный текст, здесь нет преобразования сущностей HTML.
- Я подумал о примере, который вы не описали выше!
- Правила действуют точно так же, как если бы текст был размещен на Stack Exchange в ответе (не в комментарии), за исключением того, что блоки кода не считаются специальными символами . И четыре типа пробела и тип обратного удара. Если вы не уверены в том, как должен отображаться текст, просто бросьте его в поле для ответов где-нибудь в качестве теста, вот правила, которым вы должны следовать.
Примеры:
Входные данные:
The **quick brown fox jumps over the lazy** dog.
Выход:
35
Входные данные:
The **quick brown fox jumps over the lazy dog.
Выход:
0
Входные данные:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Выход:
18
Входные данные:
The __quick\____ brown fox **jumps over\** the** lazy \**dog.
Выход:
23
Входные данные:
The****quick brown fox****jumps over **the****lazy** dog.
Выход:
11
Стандартные лазейки запрещены.
**fox__ jumps**
прекращает этот конкретный жирный шрифт.
\**
или \__
являются трехсимвольными escape-последовательностями, но в StackExchange есть только двухсимвольные escape-последовательности \*
или \_
. Так что \***a**
выдает звездочку, за которой следует жирный шрифт a
. Есть еще один побег \\
. Должны ли мы справиться с этим?
18
Правильно ли для третьего контрольного примера?