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

Duo di colori della resistenza

Medio

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.

Definire la sintassi

Caution

Questo esercizio è pensato come un seguito di Resistor Color e si basa su di esso. Anche se puoi risolvere gli esercizi di pratica in qualsiasi ordine, ti invitiamo a seguire la sequenza suggerita.

In questo esercizio ti viene fornita la sintassi dei colori già predefinita tramite il prefisso c*, ad esempio c*black. Dovrai poi definire una sintassi che associ una sequenza di colori a un numero, in base alle istruzioni. I colori sono racchiusi tra *[[ e ]] e separati da , , ad esempio *[[c*black, c*yellow, c*violet]].

Per questo compito probabilmente dovrai usare le notazioni oppure le macro. Potresti dare un'occhiata a un riferimento.

Dato che la nuova sintassi viene espansa in fase di compilazione, qualsiasi test non verrebbe compilato se non fosse definita tutta la sintassi necessaria. Per questo motivo, invece di affidarci ai tradizionali test a runtime, usiamo #guard_msgs. Questo comando confronta un determinato docstring con un messaggio generato da un altro comando, in questo caso #eval, e segnala un errore se sono diversi. Puoi considerare l'assenza di un errore come un test superato.

Se lavori in locale o nel playground online di Lean, riceverai un riscontro immediato su qualsiasi errore segnalato da #guard_msgs tramite Lean InfoView.

Caution

Il test runner online attualmente non supporta l'importazione dell'intera libreria di meta-programmazione Lean. Anche se sei libero di usare qualsiasi funzionalità disponibile in Lean di default, comprese quelle nel namespace Lean, aggiungere import Lean o importare moduli specifici dal namespace Lean farà fallire la tua soluzione quando la invii a Exercism.

Nota che importare la libreria Lean non è necessario per risolvere questo esercizio.

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

Vuoi iniziare Duo di colori della resistenza?

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