Widerstände haben üblicherweise farbcodierte Bänder , mit denen sie identifiziert werden Widerstand in Ohm angegeben wird . Bei dieser Herausforderung werden nur die normalen 4-Band-Widerstände mit gelbbrauner, axialer Leitung betrachtet. Wir werden sie ausdrücken als:
xyzt
Wo x
ist das erste Band für die erste bedeutende Figur,y
das zweite Band für die zweite signifikante Zahl, z
das dritte Band für den Multiplikator und t
das vierte Band für die Toleranz ist .
Jedes von xyzt
stellt einen Buchstaben dar, der die Farbe des Bandes abkürzt:
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
So ist zum Beispiel NKOg
ein bestimmter Widerstand.
Der Widerstand kann mit Hilfe dieser Tabelle berechnet werden:
Wie aus der Tabelle hervorgeht:
x
undy
kann beliebige Buchstaben außer seing
,s
und_
.z
kann alles sein außer_
.- Wir beschränken
t
nur seing
,s
oder_
.
Der Widerstand ist 10 * x + y
mal der z
Multiplikator bis zu einer Toleranz des t
Prozentsatzes.
Um beispielsweise den Widerstand von zu berechnen
NKOg
, sehen wir Folgendes:
N
bedeutet braun für 1.K
bedeutet Schwarz für 0.O
bedeutet Orange für 10 3 .g
bedeutet Gold für ± 5%.Der Widerstand ist also
(10*1 + 0)*10^3
→10000 Ω ±5%
.
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine 4-stellige Zeichenfolge des Formulars verwendet xyzt
und den Widerstand im Formular ausgibt oder zurückgibt [resistance] Ω ±[tolerance]%
.
- Der Widerstand kann "umgedreht" sein, dh in umgekehrter Reihenfolge
tzyx
. Zum Beispiel beidesNKOg
undgOKN
soll produzieren10000 Ω ±5%
. - Der Widerstand ist immer in einfachen Ohm, niemals in Kiloohm, Megaohm usw.
Ω
kann ersetzt werden durchohms
z10000 ohms ±5%
.±
kann ersetzt werden durch+/-
z10000 Ω +/-5%
.- Nachgestellte Nullen rechts vom Dezimalpunkt sind in Ordnung. (zB
10000.0 Ω +/-5%
) - Sie können davon ausgehen, dass die Eingabe immer gültig ist (
x
undy
niemalsgs_
,z
niemals_
,t
nurgs_
). - Alle 10 × 10 × 12 × 3 = 3600 möglichen Widerstände (2 × 3600 mögliche Eingänge) müssen unterstützt werden, auch wenn einige Farbbandkombinationen nicht im wirklichen Leben hergestellt werden.
Der kürzeste Code in Bytes gewinnt.
Beispiele
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%
Wenn Ihnen meine Herausforderungen gefallen, sollten Sie Block Building Bot Flocks ausprobieren!
quelle
:(2/'e*s~
spart die[
.e
wo es notwendig ist, aber ich habe nie an/
und*
Python 3,
130114 Bytesedit: @ SP3000 weist darauf hin , dass die Reihenfolge kann besser mit erfaßt werden ,
min(v,v[::-1])
anstattv[::(1,-1)[v[0]in'sg_']]
(10 Byte zu speichern), nicht überprüft den Index_
und einige unnötigen Leerzeichen entfernen.quelle
min()
, die richtige Reihenfolge zu ermitteln - schön.Perl, 93 Bytes
quelle
Haskell,
135-132130 BytesErläuterung:
Dank Nimi habe ich noch 2 Bytes abgeschabt.
quelle