Track
/
Haskell
Haskell
/
Esercizi
/
Gocce di pioggia
Gocce di pioggia

Gocce di pioggia

Facile

Introduzione

Gocce di pioggia è una versione un po' più complessa della sfida FizzBuzz, un classico quesito da colloquio.

Istruzioni

Il tuo compito è convertire un numero nei suoni delle gocce di pioggia corrispondenti.

Se un numero dato:

  • è divisibile per 3, aggiungi "Pling" al risultato.
  • è divisibile per 5, aggiungi "Plang" al risultato.
  • è divisibile per 7, aggiungi "Plong" al risultato.
  • non è divisibile per 3, 5 o 7, il risultato dovrebbe essere il numero come stringa.

Esempi

  • 28 è divisibile per 7, ma non per 3 o 5, quindi il risultato sarebbe "Plong".
  • 30 è divisibile per 3 e 5, ma non per 7, quindi il risultato sarebbe "PlingPlang".
  • 34 non è divisibile per 3, 5 o 7, quindi il risultato sarebbe "34".
Note

Un modo comune per verificare se un numero è esattamente divisibile per un altro è confrontare con zero il resto o il modulo. La maggior parte dei linguaggi fornisce operatori o funzioni per uno (o entrambi) di questi.

Suggerimenti

Devi implementare la funzione convert che restituisce il numero convertito in un suono di goccia di pioggia. Puoi usare la firma fornita se non sei sicuro dei tipi, ma non lasciare che limiti la tua creatività:

convert :: Int -> String

Questo esercizio lavora con dati testuali. Per ragioni storiche, il tipo String di Haskell è sinonimo di [Char], una lista di caratteri. Per una gestione più efficiente dei dati testuali, si può usare il tipo Text.

Come estensione facoltativa di questo esercizio, puoi

  • Leggi qualcosa sui tipi di stringa in Haskell.
  • Aggiungi - text all'elenco delle dipendenze in package.yaml.
  • Importa Data.Text nel modo seguente:
import qualified Data.Text as T
import           Data.Text (Text)
  • Ora puoi scrivere ad esempio convert :: Int -> Text e fare riferimento ai combinatori di Data.Text come ad esempio T.pack.
  • Consulta la documentazione per Data.Text,
  • Puoi quindi sostituire tutte le occorrenze di String con Text in Raindrops.hs:
convert :: Int -> Text

Questa parte è del tutto facoltativa.

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

Vuoi iniziare Gocce di pioggia?

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

Approfondimento su Gocce di pioggia!

Esplora soluzioni che usano pipeline funzionali, la moltiplicazione di matrici, soluzioni precalcolate basate su tabelle tramite una macro, un approccio orientato agli oggetti, un uso notevole sia di Python che di TCL, e un'edizione enterprise.