Desafio
Dada uma lista de unidades base do SI, uma lista de equações e um alvo, você deve derivar as unidades do alvo usando apenas as unidades base.
Unidades Derivadas
Da Wikipedia:
O Sistema Internacional de Unidades (SI) especifica um conjunto de sete unidades base das quais todas as outras unidades de medida SI são derivadas. Cada uma dessas outras unidades (unidades derivadas do SI) é adimensional ou pode ser expressa como um produto das potências de uma ou mais unidades básicas.
Por exemplo, a unidade de área derivada do SI é o metro quadrado (m 2 ) e a unidade de densidade derivada do SI é o quilograma por metro cúbico (kg / m 3 ou kg m -3 ).
As sete unidades básicas do SI são:
- Ampère, A
- Candela, cd
- Kelvin, K
- Quilograma, kg
- Medidor, m
- Mole, mol
- Segundo, s
Exemplo
Entrada
Unidades base:
d [m]
m [kg]
t [s]
Equações:
v = d/t
a = v/t
F = m*a
E = F*d
Alvo:
E
Resultado
E [kg*m*m/s/s]
Entrada
Unidades base:
G [cd]
L [m]
y [A]
a [K]
Equações:
T = y*y/L
A = T*G
Alvo:
A
Resultado
A [cd*A*A/m]
Regras
As unidades serão sempre dadas na forma
a [b]
Onde a
será uma única letra alfabética maiúscula ou minúscula e b
será uma unidade (um ou mais caracteres).
A equação estará na forma
a = c
Onde c
haverá uma expressão que somente usará unidades definidas anteriormente e os operadores *
e /
.
Os poderes devem ser expandidos. Por exemplo, a unidade de área é oficialmente m^2
, mas você deve representar isso como m*m
. O mesmo aplica-se para os poderes negativos, tais como a velocidade ( m*s^-1
), que devem ser representados como uma divisão: m/s
. Da mesma forma, as unidades de aceleração, m/s^2
ou m*s^-2
, devem ser representadas comom/s/s
.
Você não precisa fazer nenhum cancelamento. Por exemplo, uma saída C*s/kg/s
é válida mesmo que possa ser cancelada até C/kg
.
Não há nenhuma ordem específica para a multiplicação: kg*s/m
, s/m*kg
, s*kg/m
são todos válidos (mas /m*s*kg
é inválido).
Nota: Você nunca precisará dividir por uma unidade derivada.
Ganhando
O código mais curto em bytes vence