Les résistances ont généralement des bandes codées par couleur qui sont utilisées pour identifier leur résistance en Ohms . Dans ce défi, nous ne considérerons que les résistances normales à 4 bandes, bronzage et plomb axial. Nous les exprimerons comme:
xyzt
Où x
est la première bande pour le premier chiffre significatif, y
est la deuxième bande pour le deuxième chiffre significatif, z
la troisième bande pour le multiplicateur, et t
est la quatrième bande pour la tolérance .
Chacun xyzt
représente une lettre qui abrège la couleur de la bande:
K = Black
N = Brown
R = Red
O = Orange
Y = Yellow
G = Green
B = Blue
V = Violet
A = Gray
W = White
g = Gold
s = Silver
_ = None
Ainsi, par exemple, NKOg
est une résistance particulière.
La résistance peut être calculée à l'aide de ce tableau:
Comme le suggère le tableau:
x
ety
peut être des lettres , à l' exceptiong
,s
et_
.z
peut être tout sauf_
.- Nous bloquons
t
être seulementg
,s
ou_
.
La résistance est multipliée par 10 * x + y
le z
multiplicateur, jusqu'à une tolérance du t
pourcentage.
Par exemple, pour calculer la résistance de
NKOg
, on voit que:
N
signifie Brown pour 1.K
signifie noir pour 0.O
signifie Orange pour 10 3 .g
signifie or pour ± 5%.La résistance est donc
(10*1 + 0)*10^3
→10000 Ω ±5%
.
Défi
Écrivez un programme ou une fonction qui prend une chaîne de 4 caractères du formulaire xyzt
et imprime ou renvoie la résistance dans le formulaire [resistance] Ω ±[tolerance]%
.
- La résistance peut être "à l'envers", c'est-à-dire dans l'ordre inverse
tzyx
. Par exemple, les deuxNKOg
etgOKN
devraient produire10000 Ω ±5%
. - La résistance est toujours en ohms simples, jamais en kilohms, en mégohms, etc.
Ω
peut être remplacé parohms
, par exemple10000 ohms ±5%
.±
peut être remplacé par+/-
, par exemple10000 Ω +/-5%
.- Avoir des zéros de fin à droite d'un point décimal est très bien. (par exemple
10000.0 Ω +/-5%
) - Vous pouvez supposer que l'entrée est toujours valide (
x
ety
jamaisgs_
;z
jamais_
;t
seulementgs_
). - Toutes les résistances 10 × 10 × 12 × 3 = 3600 possibles (2 × 3600 entrées possibles) doivent être prises en charge même si certaines combinaisons de bandes de couleurs ne sont pas produites dans la vie réelle.
Le code le plus court en octets gagne.
Exemples
gOKN
→10000 ohms +/-5%
KKR_
→0 Ω +/-20%
ggKN
→1 ohms ±5%
ggGO
→3.5 Ω ±5%
ssGO
→0.350 Ω ±10%
GOOs
→53000 ohms +/-10%
YAK_
→48.0 ohms +/-20%
_WAV
→78000000000 Ω ±20%
gBBB
→66000000.000 ohms ±5%
_RYR
→2400.00 ohms ±20%
Ssi vous apprécierez mes défis, pensez à vérifier Building Block Bot Troupeaux!
la source
:(2/'e*s~
enregistre le[
.e
là où c'est nécessaire, mais je n'y ai jamais pensé/
et*
Python 3,
130114 octetsedit: @ Sp3000 souligne que l'ordre peut être mieux détecté avec
min(v,v[::-1])
plutôt quev[::(1,-1)[v[0]in'sg_']]
(en économisant 10 octets), ne pas vérifier l'index de_
et supprimer certains espaces inutiles.la source
min()
pour détecter le bon ordre - sympa.Perl, 93 octets
la source
Haskell,
135132130octetsExplication:
Grâce à nimi, j'ai rasé encore 2 octets.
la source