Preambolo
Nel markdown di Stack Stack, usiamo ** per mettere in grassetto il testo. Ad esempio, questo markdown:
The **quick brown fox jumps over the lazy** dog.
Rendering come:
La rapida volpe marrone salta sopra il cane pigro .
Naturalmente, usiamo anche ** per chiudere l'audacia. Quindi meno della risposta sarà in grassetto. Per esempio:
The **quick** brown fox jumps over the **lazy** dog.
Rendering come:
La rapida volpe marrone salta sopra il cane pigro .
Tuttavia, se l'audacia non è chiusa, viene visualizzata come non audace :
The **quick brown fox jumps over the lazy dog.
Rendering come:
La ** veloce volpe marrone salta sopra il cane pigro.
Se il testo ha una singola barra rovesciata \, il grassetto non ha effetto:
The \**quick brown fox jumps over the lazy dog.**
Rendering come:
La ** veloce volpe marrone salta sopra il cane pigro. **
Lo spazio bianco finale genera un testo non piegato (nota, lo spazio bianco dopo il marrone è una singola scheda):
The** quick** brown fox jumps over the lazy dog.**
Rendering come:
La ** veloce ** volpe marrone salta sopra il cane pigro. **
Possiamo anche usare __ anche in grassetto, ma nota che solo uno può essere attivo alla volta. Ecco un esempio più complicato:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Rendering come:
La veloce ** volpe marrone _ salta sopra__ il _ cane pigro **.
La domanda:
Si può scrivere un programma o una funzione, dato testo ASCII o come un Stringargomento o su STDIN, dove gli unici caratteri speciali sono **, __, \(per sfuggire) e spazio bianco in coda, determinare il numero di caratteri in grassetto ci sono. Questo valore deve essere stampato su STDOUT o restituito dalla funzione. Non è necessario supportare stringhe molto lunghe; La lunghezza della stringa è garantita non più di 30K, che è il limite per un post di Stack Stack.
Stampa fine:
- Posso generare un'eccezione / altro errore per un caso e restituire normalmente per l'altro?
- No. Deve essere un valore di ritorno chiaro, inequivocabile e non errato per entrambi i casi. L'uscita STDERR verrà ignorata.
- Gli spazi tra le parole sono considerati in grassetto?
- Sì.
**quick brown**contiene 11 caratteri in grassetto.
- Sì.
- Se l'
\a\**, se grassetto, contare?- No. Viene visualizzato come **, quindi se deve essere in grassetto dovrebbe contenere solo 2 caratteri.
- Sii completamente chiaro: cosa intendi con quanti personaggi?
- Caratteri totali che renderebbero grassetto. Ciò significa che non
**viene visualizzato se trasforma il testo, ma viene visualizzato in caso contrario. - Nota che è possibile
**essere in grassetto in diversi modi, ad es.**\****-> ** . - Non considerare la possibilità che alcuni testi possano essere convertiti in corsivo. L' unica regola di markdown da considerare è ** = grassetto *.
- Caratteri totali che renderebbero grassetto. Ciò significa che non
- Su Stack Exchange, anche HTML Bold funziona. cioè <b> </b>
- Sì, lo so. Non considerare questo caso, questo è un testo normale.
- Che dire di HTML entit? es.
<-><- Anche questi dovrebbero essere considerati come testo normale, non esiste una conversione di entità HTML.
- Ho pensato ad un esempio che non hai trattato sopra!
- Le regole funzionano esattamente come se il testo fosse pubblicato su Stack Exchange, in una risposta (non in un commento), tranne per il fatto che i blocchi di codice non sono considerati caratteri speciali . Entrambi i quattro tipi di spazio e il tipo di backtick. Se non si è sicuri su come debba essere eseguito il rendering del testo, basta inserirlo in una casella di risposta da qualche parte come test, queste sono le regole da seguire.
Esempi:
Ingresso:
The **quick brown fox jumps over the lazy** dog.
Produzione:
35
Ingresso:
The **quick brown fox jumps over the lazy dog.
Produzione:
0
Ingresso:
The __quick**__ brown **fox__ jumps** over__ the__ lazy **dog.
Produzione:
18
Ingresso:
The __quick\____ brown fox **jumps over\** the** lazy \**dog.
Produzione:
23
Ingresso:
The****quick brown fox****jumps over **the****lazy** dog.
Produzione:
11
Le scappatoie standard sono vietate.
**fox__ jumps**termina quel particolare grassetto.
\**o \__sono sequenze di escape di tre caratteri, ma in StackExchange ci sono solo sequenze di escape di due caratteri \*o \_. Quindi \***a**produce un asterisco seguito da un grassetto a. C'è anche un'altra fuga, \\ . Dovremmo gestirlo?
18corretto per il terzo caso di test?