Rezystory zwykle mają kolorowe paski , które służą do identyfikacji ich rezystancji w omach . W tym wyzwaniu rozważymy tylko normalne 4-pasmowe, tanowe oporniki osiowo-ołowiowe. Wyrażymy je jako:
xyzt
Gdzie x
jest pierwsze pasmo dla pierwszej cyfry znaczącej, y
to drugie pasmo dla drugiej cyfry znaczącej, z
trzecie pasmo dla mnożnika i t
jest czwartym pasmem dla tolerancji .
Każda z nich xyzt
reprezentuje literę, która skraca kolor paska:
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
Na przykład NKOg
jest jakiś konkretny opornik.
Opór można obliczyć za pomocą tej tabeli:
Jak sugeruje tabela:
x
iy
mogą być dowolne litery exceptg
,s
oraz_
.z
może być cokolwiek oprócz_
.- Będziemy ograniczać
t
się tylkog
,s
czy_
.
( Oto przydatny kalkulator rezystancji, który obsługuje dokładnie taki sam zestaw rezystorów, jak my. )
Opór jest pomnożony 10 * x + y
przez z
mnożnik, z tolerancją t
procentową.
Na przykład, aby obliczyć opór
NKOg
, widzimy, że:
N
oznacza brązowy dla 1.K
oznacza czarny dla 0.O
oznacza pomarańczowy dla 10 3 .g
oznacza złoto za ± 5%.Tak więc opór wynosi
(10*1 + 0)*10^3
→10000 Ω ±5%
.
Wyzwanie
Napisz program lub funkcję, która pobiera 4-znakowy ciąg formularza xyzt
i wyświetla lub zwraca opór w formularzu [resistance] Ω ±[tolerance]%
.
- Rezystor może być „do góry nogami”, tj. W odwrotnej kolejności
tzyx
. Na przykład obaNKOg
igOKN
powinny produkować10000 Ω ±5%
. - Rezystancja jest zawsze wyrażona w zwykłych omach, nigdy w kiloomach, megaomach itp.
Ω
można zastąpićohms
np10000 ohms ±5%
.±
można zastąpić+/-
np10000 Ω +/-5%
.- Końcowe zera po prawej stronie przecinka dziesiętnego jest w porządku. (np.
10000.0 Ω +/-5%
) - Możesz założyć, że dane wejściowe są zawsze prawidłowe (
x
iy
nigdygs_
;z
nigdy_
;t
tylkogs_
). - Wszystkie 10 × 10 × 12 × 3 = 3600 możliwych rezystorów (2 × 3600 możliwych wejść) muszą być obsługiwane, nawet jeśli niektóre kombinacje pasm kolorów nie są produkowane w rzeczywistości.
Najkrótszy kod w bajtach wygrywa.
Przykłady
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%
IFF lubisz moje wyzwaniom, należy rozważyć checking out budulcem Bot stad!
źródło
:(2/'e*s~
ratuje[
.e
, gdzie jest to konieczne, ale nigdy nie myślałem o/
i*
Python 3,
130114 bajtówedit: @ Sp3000 wskazuje, że kolejność można lepiej wykryć za pomocą (
min(v,v[::-1])
zamiastv[::(1,-1)[v[0]in'sg_']]
10 bajtów), nie sprawdzaj indeksu_
i usuwaj niepotrzebne białe znaki.źródło
min()
na wykryciu prawidłowego uporządkowania - miło.Perl, 93 bajty
źródło
Haskell,
135 132130 bajtówWyjaśnienie:
Dzięki nim ogoliłem kolejne 2 bajty.
źródło