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

Trio di colori della resistenza

Medio

Istruzioni

Se vuoi costruire qualcosa con un Raspberry Pi, probabilmente userai dei resistori. Per questo esercizio, ti basta sapere solo tre cose:

  • Ogni resistore ha un valore di resistenza.

  • I resistori sono piccoli, così piccoli che, se ci stampassi sopra il valore di resistenza, sarebbe difficile da leggere. Per aggirare questo problema, i produttori stampano sui resistori delle bande colorate che ne indicano il valore di resistenza.

  • Ogni banda rappresenta una cifra di un numero. Per 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 che ti aiuterà a non dover ricordare i valori delle bande. Il programma prenderà 3 colori in input e produrrà in output il valore corretto, in ohm. Le bande colorate sono codificate così:

  • black: 0

  • brown: 1

  • red: 2

  • orange: 3

  • yellow: 4

  • green: 5

  • blue: 6

  • violet: 7

  • grey: 8

  • white: 9

In «Duo di colori dei resistori» hai decodificato i primi due colori. Per esempio: orange-orange ha dato il valore principale 33. Il terzo colore indica quanti zeri vanno aggiunti al valore principale. Il valore principale più gli zeri ci dà un valore in ohm. Per l'esercizio non importa che cosa siano davvero gli ohm. Per esempio:

  • orange-orange-black sarebbe 33 senza zeri, che diventa 33 ohms.
  • orange-orange-red sarebbe 33 con 2 zeri, che diventa 3300 ohms.
  • orange-orange-orange sarebbe 33 con 3 zeri, che diventa 33000 ohms.

(Se la matematica è il tuo forte, puoi pensare agli zeri come a esponenti del 10. Se la matematica non è il tuo forte, vai con gli zeri. È davvero la stessa cosa, solo detta in parole povere invece che in gergo matematico.)

Questo esercizio consiste nel tradurre i colori in un'etichetta:

"... ohms"

Quindi un input di "orange", "orange", "black" dovrebbe restituire:

"33 ohms"

Quando si arriva a resistori più grandi, si usa un prefisso metrico per indicare un ordine di grandezza maggiore degli ohm, come "kiloohms". È simile a dire «2 chilometri» invece di «2000 metri», o «2 chilogrammi» per «2000 grammi».

Per esempio, un input di "orange", "orange", "orange" dovrebbe restituire:

"33 kiloohms"

Definire la sintassi

Caution

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

In questo esercizio ti viene fornita una sintassi per i colori già predefinita tramite il prefisso c*, ad esempio c*black. Devi poi definire una sintassi che associ una sequenza di colori a un valore di resistenza con la sua unità SI, eventualmente con un prefisso metrico, secondo le istruzioni. I colori sono racchiusi tra *[[ e ]] e separati da , , ad esempio *[[c*black, c*yellow, c*violet]].

Questo compito probabilmente ti richiederà di usare notazioni o macro. Potresti dare un'occhiata a una documentazione di riferimento.

Dato che la nuova sintassi viene espansa in fase di compilazione, qualsiasi test non riuscirebbe a compilare se non fosse definita tutta la sintassi richiesta. Per questo motivo, invece di affidarci ai tradizionali test a runtime, usiamo #guard_msgs. Questo comando confronta un docstring dato 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.

Note

Il valore della resistenza dovrebbe essere prodotto in output usando l'unità Ω (ohm). Questo carattere unicode può essere generato in locale o nel playground online di Lean con la scorciatoia \ohm. Se lavori nell'editor online di Exercism, puoi copiare il carattere direttamente dalle istruzioni.

Caution

Al momento il test runner online non supporta l'importazione dell'intera libreria di meta-programmazione Lean. Sei libero di usare qualsiasi funzionalità disponibile in Lean di default, comprese quelle all'interno del namespace Lean, ma aggiungere import Lean o importare moduli specifici dal namespace Lean farà fallire la tua soluzione quando la invii a Exercism.

Tieni presente 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 Trio di colori della resistenza?

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