ETL

ETL

Facile

Introduzione

Lavori per un'azienda che produce un gioco online multigiocatore chiamato Lexiconia.

Per giocare, ogni giocatore riceve 13 lettere, che deve riordinare per formare delle parole. Lettere diverse hanno valori in punti diversi, perché con alcune lettere è più facile formare parole che con altre.

Il gioco è stato lanciato originariamente in inglese, ma è molto popolare e ora l'azienda vuole espandersi anche ad altre lingue.

Lingue diverse devono supportare valori in punti diversi per le lettere. I valori in punti dipendono da quanto spesso le lettere vengono usate rispetto alle altre lettere di quella lingua.

Per esempio, la lettera «C» è piuttosto comune in inglese e vale solo 3 punti. In norvegese, invece, è una lettera molto rara e vale 10 punti.

Per rendere più semplice aggiungere nuove lingue, il tuo team deve cambiare il modo in cui le lettere e i loro valori in punti vengono memorizzati nel gioco.

Istruzioni

Il tuo compito è cambiare il formato dei dati delle lettere e dei loro valori in punti nel gioco.

Al momento, le lettere sono memorizzate in gruppi in base al loro punteggio, in una mappatura uno-a-molti.

  • 1 punto: «A», «E», «I», «O», «U», «L», «N», «R», «S», «T»,
  • 2 punti: «D», «G»,
  • 3 punti: «B», «C», «M», «P»,
  • 4 punti: «F», «H», «V», «W», «Y»,
  • 5 punti: «K»,
  • 8 punti: «J», «X»,
  • 10 punti: «Q», «Z»,

Questo va cambiato per memorizzare ogni singola lettera con il suo punteggio in una mappatura uno-a-uno.

  • «a» vale 1 punto.
  • «b» vale 3 punti.
  • «c» vale 3 punti.
  • «d» vale 2 punti.
  • ecc.

Nell'ambito di questo cambiamento, il team ha anche deciso di rendere le lettere minuscole invece che maiuscole.

Note

Se vuoi vedere come erano strutturati prima i dati e come devono cambiare, dai un'occhiata agli esempi nella suite di test.

Suggerimenti

Questo esercizio lavora con dati testuali. Per ragioni storiche, il tipo String di Haskell è sinonimo di [Char], un array di caratteri. Per gestire i dati testuali in modo più efficiente, si può usare il tipo Text.

Come estensione opzionale di questo esercizio, puoi

  • Leggere qualcosa sui tipi di stringa in Haskell.

  • Aggiungere - text alle dipendenze in package.yaml.

  • Importare Data.Text nel modo seguente:

      import qualified Data.Text as T
      import           Data.Text (Text)
    
  • Ora puoi scrivere ad esempio transform :: Map Int Text -> Map Char Int e riferirti ai combinatori di Data.Text come ad esempio T.toLower.

  • Consulta la documentazione di Data.Text.

Questa parte è del tutto opzionale.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Haskell Exercism

Vuoi iniziare ETL?

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