Рассчитайте произведение или соотношение единиц СИ.
Например, kg m / s s
(килограмм-метр в секунду в квадрате) должен возвращать N
(ньютон).
Ввод всегда будет либо:
- Список символов для единиц СИ, разделенных пробелами (представляющих продукт) или
- Выше
/
и выше (представляющих соотношение).
Ввод никогда не будет содержать никаких других символов (таких как числовые литералы или другие знаки пунктуации).
Вы можете предположить, что это всегда будет равно одной единице СИ.
Используйте следующие символы:
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
Примеры:
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 => Ω
Самый короткий код (в байтах) выигрывает.
kg m / s s
на самом деле будет килограмм-метр-секунды или просто килограмм-метр. Умножение и деление работы LTR. То, что вы ищете, этоkg m / (s s)
. Это также относится и к другим примерам.1 / 2x
самом деле означаетx / 2
?Ответы:
CJam,
1841059896 байтВыше , является шестнадцатеричным; оно может быть отменено с
xxd -r
.Проверьте все тестовые случаи одновременно в интерпретаторе CJam . 1
Тестовый забег
идея
Мы можем закодировать каждую единицу u = s a m b kg c A d как вектор t u = (a + c - d, b, c, d) . 2
Таким образом, для ввода и 1 … u n / v 1 … v m нам нужно только вычислить (t u 1 +… + t u n ) - (t v 1 +… + t v m ) и проверить, какая единица измерения это соответствует.
Код
1 Обратите внимание , что из - за ограничений в онлайн - переводчика, я не могу использовать кодировку исходного кода и ввода / вывода. Следовательно, символ Ω отображается в кодировке UTF-8 (Î ©). Официальный интерпретатор Java не разделяет это ограничение.
2 Это экономит несколько байтов в прямом отображении (a, b, c, d) , поскольку сокращает диапазон первой координаты.
источник
GNU sed, 1118
Слишком долго, но выполняет свою работу.
Оценка включает в себя +1 для
-r
опции для sed. Как будто это имеет значение здесь. Оценка исключает комментарии.источник
Javascript ES6, 479 байт
Ungolfed:
Тестовые прогоны:
источник