Berechnen Sie ein Produkt oder Verhältnis von SI-Einheiten.
Zum Beispiel sollte kg m / s s
(Kilogramm-Meter pro Sekunde im Quadrat) N
(Newton) zurückgegeben werden.
Die Eingabe ist immer entweder:
- Eine Liste von Symbolen für SI-Einheiten, die durch Leerzeichen getrennt sind (ein Produkt darstellen) oder
- Das Obige,
/
und das Obige (ein Verhältnis darstellend).
Die Eingabe enthält niemals andere Zeichen (z. B. numerische Literale oder andere Interpunktionszeichen).
Sie können davon ausgehen, dass dies immer einer SI-Einheit entspricht.
Verwenden Sie die folgenden Symbole:
Base quantities:
s # second
m # meter
kg # kilogram
A # ampere
Derived quantities:
N = kg m / s s # newton
J = N m # joule
W = J / s # watt
Hz = W / J # hertz
Pa = N / m m # pascal
C = s A # coulomb
V = J / C # volt
F = C / V # farad
Ω = V / A # ohm (you may use the O symbol instead, for a penalty of +3 bytes)
S = A / V # siemens
Wb = J / A # weber
T = Wb / m m # tesla
H = Wb / A # henry
Beispiele:
m => m
N m => J
J / W => s
A J / W => C
T m m => Wb
N / A m => T
V s / A => H
J S / F A => V
s / s s => Hz
Hz kg m Hz => N
Hz s / Ω => S
Wb / H => A
V Pa S s / C => Pa
N s / m Hz => kg
V A => W
s / Ω => F
J / A s A => Ω
Kürzester Code (in Bytes) gewinnt.
kg m / s s
wäre tatsächlich Kilogam-Meter-Sekunden pro Sekunde oder nur Kilogramm-Meter. Multiplikations- und Divisionsarbeit LTR. Was Sie suchen, istkg m / (s s)
. Dies gilt auch für die anderen Beispiele.1 / 2x
wirklich sox / 2
?Antworten:
CJam,
1841059896 BytesDas obige ist ein Hexdump; es kann mit umgekehrt werden
xxd -r
.Überprüfen Sie alle Testfälle gleichzeitig im CJam-Interpreter . 1
Testlauf
Idee
Wir können jede Einheit u = s a m b kg c A d als den Vektor t u = (a + c - d, b, c, d) codieren . 2
Auf diese Weise müssen wir für die Eingabe u 1 … u n / v 1 … v m nur (t u 1 +… + t u n ) - (t v 1 +… + t v m ) berechnen und prüfen, welche Einheit es entspricht.
Code
1 Beachten Sie, dass ich aufgrund der Einschränkungen des Online-Interpreters keine andere Codierung für Quellcode und E / A verwenden kann. Daher wird das Symbol Ω als UTF-8-Codierung (Î ©) angezeigt. Der offizielle Java-Interpreter teilt diese Einschränkung nicht.
2 Dies spart einige Bytes gegenüber der einfachen Zuordnung zu (a, b, c, d) , da der Bereich der ersten Koordinate verkürzt wird.
quelle
GNU sed, 1118
Viel zu lange, aber erledigt den Job.
Die Punktzahl enthält +1 für die
-r
Option zu sed. Als ob es hier darauf ankommt. Punktzahl ohne Kommentare.quelle
Javascript ES6, 479 Bytes
Ungolfed:
Testläufe:
quelle