Вызов
Учитывая список базовых единиц СИ, список уравнений и цель, вы должны получить единицы цели, используя только базовые единицы.
Производные единицы
Из Википедии:
Международная система единиц (СИ) определяет набор из семи базовых единиц, из которых получены все остальные единицы измерения СИ. Каждая из этих других единиц (производных единиц СИ) либо безразмерна, либо может быть выражена как произведение степеней одной или нескольких базовых единиц.
Например, единица площади, полученная из СИ, представляет собой квадратный метр (м 2 ), а единица плотности, полученная из СИ, - это килограмм на кубический метр (кг / м 3 или кг м -3 ).
Семь базовых единиц СИ:
- Ампер, А
- Кандела, CD
- Кельвин, К
- Килограмм, кг
- Метр, м
- Моль, моль
- Во-вторых, с
пример
вход
Базовые единицы:
d [m]
m [kg]
t [s]
Уравнения:
v = d/t
a = v/t
F = m*a
E = F*d
Цель:
E
Вывод
E [kg*m*m/s/s]
вход
Базовые единицы:
G [cd]
L [m]
y [A]
a [K]
Уравнения:
T = y*y/L
A = T*G
Цель:
A
Вывод
A [cd*A*A/m]
правила
Единицы будут всегда указываться в форме
a [b]
Где a
будет одна заглавная или строчная буква алфавита и b
будет единица (один или несколько символов).
Уравнение будет в виде
a = c
Где c
будет выражение, которое будет когда-либо использовать только ранее определенные единицы и операторы *
и /
.
Полномочия должны быть расширены. Например, единица площади официально m^2
, но вы должны представить это как m*m
. Же относится и к отрицательным степеням , таким как скорость ( m*s^-1
) , которые должны быть представлены в виде деления: m/s
. Аналогично, единицы измерения ускорения m/s^2
или m*s^-2
должны быть представлены как m/s/s
.
Вы не должны делать какие-либо отмены. Например, вывод C*s/kg/s
действителен, даже если он может быть отменен до C/kg
.
Там нет конкретного порядка для умножения: kg*s/m
, s/m*kg
, s*kg/m
являются корректными (но /m*s*kg
недействителен).
Примечание: вам никогда не придется делить на производную единицу.
выигрыш
Самый короткий код в байтах выигрывает
Ответы:
Сетчатка ,
5048 байтПопробуйте онлайн!
объяснение
Удалите все знаки равенства вместе с пробелом перед ними. Кому это нужно в любом случае ...
Это выполняет замены известных количеств. Он многократно соответствует определению количества (количество - это любой символ перед пробелом, а определение - строке после него), а также определенное место после определения, где используется это количество, и вставьте определение для использования. Мы исключаем единицу из этих матчей (по гарантируя , что нет
]
после матча), так что мы не заменить[m]
с[[kg]]
, например. Эта замена повторяется до тех пор, пока регулярное выражение не перестанет совпадать (это означает, что не осталось использований количества, а все строки были превращены в выражения единиц).Откажитесь от всего, кроме последней строки.
Наконец, удалите посторонние квадратные скобки. По сути, мы хотим оставить первое
[
и последнее,]
но отбросить все остальные. Эти другие всегда появляются с оператором между ними, так что либо как,]*[
либо как]/[
. Но что еще более важно, это единственные случаи, когда]
за символом a следуют еще два символа. Таким образом, мы сопоставляем все]
с двумя символами после них, и заменяем это вторым из этих трех символов, чтобы сохранить оператор.источник
JavaScript (ES6),
155153152 байтаПринимает базовые единицы и уравнения как массивы строк.
Показать фрагмент кода
объяснение
источник