Os resistores geralmente possuem bandas codificadas por cores que são usadas para identificar sua resistência em Ohms . Neste desafio, consideraremos apenas os resistores normais de 4 bandas, tan e chumbo axial. Vamos expressá-los como:
xyzt
Onde x
está a primeira banda para o primeiro número significativo, y
é a segunda banda para o segundo número significativo, z
a terceira banda para o multiplicador e t
a quarta banda para a tolerância .
Cada um dos xyzt
representa uma letra que abrevia a cor da 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
Então, por exemplo, NKOg
é um resistor em particular.
A resistência pode ser calculada com a ajuda desta tabela:
Como a tabela sugere:
x
ey
pode haver qualquer letrag
, excetos
, e_
.z
pode ser qualquer coisa, exceto_
.- Vamos restringir
t
a ser apenasg
,s
ou_
.
A resistência é multiplicada 10 * x + y
pelo z
multiplicador, até uma tolerância da t
porcentagem.
Por exemplo, para calcular a resistência de
NKOg
, vemos que:
N
significa marrom para 1.K
significa preto para 0.O
significa laranja para 10 3 .g
significa ouro para ± 5%.Então a resistência é
(10*1 + 0)*10^3
→10000 Ω ±5%
.
Desafio
Escreva um programa ou função que utilize uma seqüência de 4 caracteres do formulário xyzt
e imprima ou retorne a resistência no formulário [resistance] Ω ±[tolerance]%
.
- O resistor pode estar "de cabeça para baixo", ou seja, na ordem inversa
tzyx
. Por exemplo, ambosNKOg
egOKN
devem produzir10000 Ω ±5%
. - A resistência está sempre em ohms simples, nunca em quilohms, megohms, etc.
Ω
pode ser substituído porohms
, por exemplo10000 ohms ±5%
.±
pode ser substituído por+/-
, por exemplo10000 Ω +/-5%
.- Ter zeros à direita de um ponto decimal é bom. (por exemplo
10000.0 Ω +/-5%
) - Você pode assumir que a entrada é sempre válida (
x
ey
nuncags_
;z
nunca_
;t
somentegs_
). - Todos os 10 × 10 × 12 × 3 = 3600 possíveis resistores (2 × 3600 possíveis entradas) precisam ser suportados, mesmo que algumas combinações de bandas de cores não sejam produzidas na vida real.
O código mais curto em bytes vence.
Exemplos
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%
Se você gosta dos meus desafios, considere dar uma olhada nos Block Building Bot Flocks!
fonte
:(2/'e*s~
salva o[
.e
onde é necessário, mas eu nunca pensei de/
e*
Python 3,
130114 bytesedit: @ Sp3000 indica que a ordem pode ser detectada melhor com (em
min(v,v[::-1])
vez dev[::(1,-1)[v[0]in'sg_']]
(economizando 10 bytes), não verifique o índice_
e remova algum espaço em branco desnecessário.fonte
min()
para detectar a ordem correta - legal.Perl, 93 bytes
fonte
Haskell,
135 132130 bytesExplicação:
Graças a nimi, reduzi outros 2 bytes.
fonte