Track
/
Haskell
Haskell
/
Esercizi
/
Conteggio delle parole
Conteggio delle parole

Conteggio delle parole

Medio

Introduzione

Insegni inglese come lingua straniera a studenti delle scuole superiori.

Hai deciso di basare tutto il tuo percorso sulle serie TV. Devi analizzare quali parole vengono usate e quanto spesso si ripetono.

Questo ti permetterà di scegliere le serie più semplici per iniziare e di aumentare gradualmente la difficoltà con il passare del tempo.

Istruzioni

Il tuo compito è contare quante volte ogni parola compare in un sottotitolo di un dramma.

I sottotitoli di questi drammi usano solo caratteri ASCII.

I personaggi spesso parlano in un inglese colloquiale, usando contrazioni come they're o it's. Anche se queste contrazioni derivano da due parole (ad esempio we are), la contrazione (we're) è considerata un'unica parola.

Le parole possono essere separate da qualsiasi forma di punteggiatura (ad esempio ":", "!" o "?") o da spazi bianchi (ad esempio "\t", "\n" o " "). L'unica punteggiatura che non separa le parole è l'apostrofo nelle contrazioni.

I numeri sono considerati parole. Se i sottotitoli dicono It costs 100 dollars., allora 100 sarà una parola a sé.

Le parole non distinguono maiuscole e minuscole. Per esempio, la parola you compare tre volte nella frase seguente:

You come back, you hear me? DO YOU HEAR ME?

L'ordine dei conteggi delle parole nei risultati non ha importanza.

Ecco un esempio che racchiude diversi degli elementi discussi sopra:

  • parole semplici
  • contrazioni
  • numeri
  • parole che non distinguono maiuscole e minuscole
  • punteggiatura (compresi gli apostrofi) per separare le parole
  • diverse forme di spazi bianchi per separare le parole

"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.

La mappatura per questo sottotitolo sarebbe:

123: 1
agent: 1
cried: 1
fled: 1
i: 1
password: 2
so: 1
special: 1
that's: 1
the: 2

Suggerimenti

Per completare questo esercizio devi implementare la funzione wordCount, che prende un testo e restituisce quante volte compare ogni parola.

Se è la prima volta che risolvi questo esercizio, ti consigliamo di attenerti alla firma fornita:

wordCount :: String -> [(String, Int)]

Più avanti, potrebbe essere una buona idea tornare su questo problema e giocare con altri tipi di dati e librerie:

  • Text, dal pacchetto text.
  • Map, dal pacchetto containers.
  • MultiSet, dal pacchetto multiset

La suite di test è stata progettata intenzionalmente per accettare quasi qualsiasi firma di tipo che abbia senso, quindi ti invitiamo a trovare quella che ritieni migliore.


Fonte

Questo è un classico problema giocattolo, ma ce lo siamo ricordati vedendolo nel Go Tour.
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Haskell Exercism

Vuoi iniziare Conteggio delle parole?

Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.