Wyzwanie
Biorąc pod uwagę listę jednostek podstawowych SI, listę równań i cel, musisz wyprowadzić jednostki celu, używając tylko jednostek podstawowych.
Jednostki pochodne
Z Wikipedii:
Międzynarodowy Układ Jednostek (SI) określa zbiór siedmiu jednostek podstawowych, z których pochodzą wszystkie pozostałe jednostki miary SI. Każda z tych pozostałych jednostek (jednostki pochodne SI) jest albo bezwymiarowa, albo może być wyrażona jako iloczyn mocy jednej lub więcej jednostek podstawowych.
Na przykład, pochodne SI jednostkę powierzchni jest metr kwadratowy (m 2 ), i pochodne SI jednostka gęstości jest kilogram na metr sześcienny (kg / m 3 lub kg m -3 ).
Siedem jednostek podstawowych SI to:
- Ampere, A.
- Candela, cd
- Kelvin, K
- Kilogram, kg
- Metr, m
- Mol, mol
- Po drugie, s
Przykład
Wejście
Jednostki podstawowe:
d [m]
m [kg]
t [s]
Równania:
v = d/t
a = v/t
F = m*a
E = F*d
Cel:
E
Wynik
E [kg*m*m/s/s]
Wejście
Jednostki podstawowe:
G [cd]
L [m]
y [A]
a [K]
Równania:
T = y*y/L
A = T*G
Cel:
A
Wynik
A [cd*A*A/m]
Zasady
Jednostki będą zawsze podawane w formie
a [b]
Gdzie a
będzie pojedyncza wielka lub mała litera alfabetu i b
będzie to jednostka (jeden lub więcej znaków).
Równanie będzie miało postać
a = c
Gdzie c
będzie wyrażenie, które będzie zawsze używać tylko wcześniej zdefiniowanych jednostek i operatorów *
oraz /
.
Moce muszą zostać rozszerzone. Na przykład jednostka obszaru jest oficjalnie m^2
, ale należy to przedstawić jako m*m
. To samo odnosi się do negatywnych uprawnień, takie jak prędkość ( m*s^-1
), które powinny być reprezentowane przez podział: m/s
. Podobnie jednostki przyspieszenia m/s^2
lub m*s^-2
powinny być reprezentowane jako m/s/s
.
Nie musisz nic anulować. Na przykład dane wyjściowe C*s/kg/s
są prawidłowe, nawet jeśli można je anulować do C/kg
.
Nie ma zamówienie specyficzne dla mnożenia: kg*s/m
, s/m*kg
, s*kg/m
wszystkie są ważne (ale /m*s*kg
to nieważne).
Uwaga: Nigdy nie będziesz musiał dzielić przez jednostkę pochodną.
Zwycięski
Najkrótszy kod w bajtach wygrywa
Odpowiedzi:
Siatkówka ,
5048 bajtówWypróbuj online!
Wyjaśnienie
Usuń wszystkie znaki równości wraz ze spacją przed nimi. Kto i tak potrzebuje ...
Dokonuje to zamian znanych ilości. Wielokrotnie dopasowuje definicję ilości (ilość to dowolny znak przed spacją, a po niej ciąg znaków), a także pewne miejsce po definicji, w którym ta ilość jest używana, i wstaw definicję do użycia. Wykluczyć jednostki z tych meczów (poprzez zapewnienie, że nie ma
]
po meczu), tak, że nie zastąpi[m]
się[[kg]]
np. Podstawienie to powtarza się, dopóki wyrażenie regularne nie będzie już zgodne (co oznacza, że nie ma już użycia ilości, a wszystkie wiersze zostały przekształcone w wyrażenia jednostek).Odrzuć wszystkie oprócz ostatniej linii.
Na koniec usuń zewnętrzne nawiasy kwadratowe. Zasadniczo chcemy zachować pierwszą
[
i ostatnią,]
ale odrzucić wszystkie pozostałe. Ci inni zawsze pojawiają się z operatorem pomiędzy, więc albo jako]*[
albo jako]/[
. Ale co ważniejsze, są to jedyne przypadki, w których po a]
następują dwa kolejne znaki. Dopasowujemy więc wszystkie]
po dwóch znakach po nich i zastępujemy je drugim z tych trzech znaków, aby zachować operator.źródło
JavaScript (ES6),
155153152 bajtówBierze jednostki podstawowe i równania jako tablice ciągów.
Pokaż fragment kodu
Wyjaśnienie
źródło