Las resistencias comúnmente tienen bandas codificadas por colores que se utilizan para identificar su resistencia en ohmios . En este desafío solo consideraremos las resistencias normales de 4 bandas, bronceado, de plomo axial. Los expresaremos como:
xyzt
Donde x
está la primera banda para la primera figura significativa, y
es la segunda banda para la segunda figura significativa, z
la tercera banda para el multiplicador, y t
es la cuarta banda para la tolerancia .
Cada uno xyzt
representa una letra que abrevia el color de la banda:
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
Entonces, por ejemplo, NKOg
es una resistencia particular.
La resistencia se puede calcular con la ayuda de esta tabla:
Como sugiere la tabla:
x
yy
puede ser cualquier letra A excepcióng
,s
y_
.z
puede ser cualquier cosa excepto_
.- Se restringirá
t
a ser únicag
,s
o_
.
La resistencia es multiplicada por 10 * x + y
el z
multiplicador, a una tolerancia del t
porcentaje.
Por ejemplo, para calcular la resistencia de
NKOg
, vemos que:
N
significa marrón para 1.K
significa negro para 0.O
significa naranja para 10 3 .g
significa oro para ± 5%.Entonces la resistencia es
(10*1 + 0)*10^3
→10000 Ω ±5%
.
Reto
Escriba un programa o función que tome una cadena de 4 caracteres del formulario xyzt
e imprima o devuelva la resistencia en el formulario [resistance] Ω ±[tolerance]%
.
- La resistencia puede estar "al revés", es decir, en el orden inverso
tzyx
. Por ejemplo, ambosNKOg
ygOKN
deberían producir10000 Ω ±5%
. - La resistencia siempre está en ohmios simples, nunca kilohms, megaohms, etc.
Ω
puede ser reemplazado conohms
, por ej10000 ohms ±5%
.±
puede ser reemplazado con+/-
, por ej10000 Ω +/-5%
.- Tener ceros a la derecha de un punto decimal está bien. (por ejemplo
10000.0 Ω +/-5%
) - Puede suponer que la entrada siempre es válida (
x
yy
nuncags_
;z
nunca_
;t
sologs_
). - Todos los 10 × 10 × 12 × 3 = 3600 resistencias posibles (2 × 3600 entradas posibles) deben ser compatibles, incluso si algunas combinaciones de bandas de color no se producen en la vida real.
El código más corto en bytes gana.
Ejemplos
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%
Si y sólo si usted disfruta de mis retos, considera chequear Módulo Bot rebaños!
fuente
:(2/'e*s~
guarda el[
.e
donde es necesario, pero nunca pensé en/
y*
Python 3,
130114 byteseditar: @ Sp3000 señala que el orden se puede detectar mejor con (en
min(v,v[::-1])
lugar dev[::(1,-1)[v[0]in'sg_']]
ahorrar 10 bytes), no verificar el índice_
y eliminar algunos espacios en blanco innecesarios.fuente
min()
para detectar el orden correcto. Genial.Perl, 93 bytes
fuente
Haskell,
135 132130 bytesExplicación:
Gracias a nimi, eliminé otros 2 bytes.
fuente