Oblicz iloczyn lub stosunek jednostek SI.
Na przykład kg m / s s
(kilogram metr na sekundę do kwadratu) powinien zwracać N
(niuton).
Dane wejściowe zawsze będą:
- Lista symboli dla jednostek SI, rozdzielonych spacjami (reprezentujących produkt) lub
- Powyższe
/
i powyższe (reprezentujące stosunek).
Dane wejściowe nigdy nie będą zawierać żadnych innych znaków (takich jak literały numeryczne lub inne znaki interpunkcyjne).
Możesz założyć, że zawsze będzie to jedna jednostka SI.
Użyj następujących symboli:
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
Przykłady:
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 => Ω
Najkrótszy kod (w bajtach) wygrywa.
kg m / s s
w rzeczywistości wynosiłby kilogamometr-sekundę na sekundę lub zaledwie kilogram-metr. Mnożenie i dzielenie pracy LTR. To czego szukaszkg m / (s s)
. Dotyczy to również innych przykładów.1 / 2x
naprawdę znaczyx / 2
?Odpowiedzi:
CJam,
1841059896 bajtówPowyżej jest zrzut heksowy; można to odwrócić za pomocą
xxd -r
.Sprawdź wszystkie przypadki testowe jednocześnie w interpreterie CJam . 1
Testowe uruchomienie
Pomysł
Możemy zakodować każdą jednostkę u = s a m b kg c A d jako wektor t u = (a + c - d, b, c, d) . 2)
W ten sposób dla wejścia u 1 … u n / v 1 … v m musimy tylko obliczyć (t u 1 +… + t u n ) - (t v 1 +… + t v m ) i sprawdzić, która jednostka odpowiada.
Kod
1 Należy pamiętać, że z powodu ograniczeń tłumacza internetowego nie mogę używać innego kodowania dla kodu źródłowego i We / Wy. Dlatego symbol Ω pojawia się jako kodowanie UTF-8 (Î ©). Oficjalny tłumacz Java nie ma tego ograniczenia.
2 To oszczędza kilka bajtów w stosunku do bezpośredniego mapowania do (a, b, c, d) , ponieważ skraca zakres pierwszej współrzędnej.
źródło
GNU sed, 1118
Zbyt długo, ale wykonuje zadanie.
Wynik obejmuje +1 za
-r
opcję sed. Jakby to miało znaczenie. Wynik nie uwzględnia komentarzy.źródło
JavaScript ES6, 479 bajtów
Nie golfowany:
Przebiegi testowe:
źródło