Track
/
Haskell
Haskell
/
Esercizi
/
Duo di colori della resistenza
Duo di colori della resistenza

Duo di colori della resistenza

Facile

Istruzioni

Se vuoi costruire qualcosa con un Raspberry Pi, probabilmente userai dei resistori. Per questo esercizio, devi sapere due cose sui resistori:

  • Ogni resistore ha un valore di resistenza.
  • I resistori sono piccoli, così piccoli che se stampassi il valore di resistenza su di essi, sarebbe difficile da leggere.

Per aggirare questo problema, i produttori stampano delle bande colorate sui resistori per indicare i loro valori di resistenza. Ogni banda ha una posizione e un valore numerico.

Le prime 2 bande di un resistore hanno un semplice schema di codifica: ogni colore corrisponde a un singolo numero. Ad esempio, se stampassero una banda brown (valore 1) seguita da una banda green (valore 5), corrisponderebbe al numero 15.

In questo esercizio creerai un programma utile per non dover ricordare i valori delle bande. Il programma prenderà nomi di colori come input e produrrà in output un numero a due cifre, anche se l'input è composto da più di due colori!

I colori delle bande sono codificati come segue:

  • black: 0
  • brown: 1
  • red: 2
  • orange: 3
  • yellow: 4
  • green: 5
  • blue: 6
  • violet: 7
  • grey: 8
  • white: 9

Dall'esempio sopra: brown-green dovrebbe restituire 15, e anche brown-green-violet dovrebbe restituire 15, ignorando il terzo colore.

Suggerimenti

Devi implementare la funzione

value :: (Color, Color) -> Int

che accetta solo due colori e produce la componente numerica del valore della resistenza.

Bonus: test delle proprietà

Questo esercizio è una buona occasione per scrivere qualche test delle proprietà. Se non ne hai mai scritti prima, ecco alcune risorse:

  1. School of Haskell.
  2. Real world Haskell

Nel file di test abbiamo fornito un esempio di test delle proprietà con QuickCheck.

Esempi di proprietà che si possono testare:

  • value (x, y) >= 10 per tutti i (x, y) in cui x non è Black

  • Chiamare show su value (x, y) produce la stringa ottenuta applicando reverse a quella prodotta chiamando show su value (y, x).

  • Tutti i colori hanno nomi unici. (Per due colori qualsiasi, se i colori sono diversi, lo sono anche i loro nomi.)

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

Vuoi iniziare Duo di colori della resistenza?

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