Закон Ома говорит нам, что ток (I) в амперах, протекающих через сопротивление (R) в Ом, когда на него подается напряжение (V), определяется следующим образом:
V = I / R
Аналогично мощность (P) в ваттах, рассеиваемых этим сопротивлением, определяется как:
P = V * I
Путем перестановки и подстановки могут быть получены формулы для расчета двух из этих величин, когда дана любая из двух других. Эти формулы обобщены следующим образом (обратите внимание, что это изображение используется E
вместо V
вольт):
Учитывая ввод любых двух из этих величин в строку, выведите две другие.
- Входные числа будут десятичными в любом формате, подходящем для вашего языка. Точность должна быть не менее 3 знаков после запятой. ( IEEE 754-2008 бинарные32 поплавки достаточны.)
- К каждому входному номеру будет добавлена единица. Это будет одно из значений
V A W R
напряжения, силы тока, мощности и сопротивления (или эквивалентной строчной буквы). Кроме того, вы можете использоватьΩ
вместоR
. У единиц не будет десятичных префиксов (кило-, милли- и т. Д.). - Две входные величины будут даны в любом порядке в одной строке, разделенные одним пробелом.
- Входные величины всегда будут действительными числами больше 0.
- Вывод будет в том же формате, что и ввод.
- Встроенные решения, разрешающие уравнения, запрещены.
Пример входов
1W 1A
12V 120R
10A 10V
8R 1800W
230V 13A
1.1W 2.333V
Соответствующие Выходы
1V 1R
0.1A 1.2W
1R 100W
120V 15A
2990W 17.692R
0.471A 4.948R
Следует отметить, что решения этой проблемы будут эффективно самообращения. Другими словами, если вы применяете решение для ввода A B
и получаете выходные данные C D
, а затем применяете решение для ввода C D
, то выходные данные должны быть A B
снова, хотя, возможно, не в порядке и возмущены из-за округления FP. Таким образом, тестовые входы и выходы могут использоваться взаимозаменяемо.
источник
Ответы:
Рубин 171 байт
Ввод в качестве аргумента функции. Вывод в стандартный вывод с завершающим пробелом (при необходимости может быть изменен)
объяснение
Все формулы могут быть выражены в форме,
b**x*d**y
где b & d - два входных значения, а x & y - степени. По причинам, связанным с игрой в гольф, выражение,(b**x*d**y)**0.5
наконец, было предпочтительным, поскольку оно означает, что x и y становятся целыми числами в диапазоне от -4 до 4В следующей таблице приведены необходимые выражения (входные данные отсортированы в алфавитном порядке) и закодированные значения для степеней. Где x и y - удвоенные степени, они кодируются как
(x+4)+(y+4)*9+9
или эквивалентно(x+4)+(y+5)*9
. Это помещает все кодировки в диапазон ASCII для печати. Степенные операторы опущены в формулах для краткости.n
является своего рода контрольной суммой, сделанной из символов блока ввода; может принимать значения 0,1,2,4,5,6 (3 не используется.)Неуправляемый в тестовой программе
Выход
источник
Python 3,
329347343339326305267251249245237 байтЭто довольно раздутый. Есть определенно еще много игры в гольф.
Редактировать:
временно исправил вывод. Почему-тоreturn' '.join(str(eval(z[m][i]))+t[i]for i in range(2))
отказывается работать должным образом.Редактировать: упал
eval
.Эта функция в настоящее время заимствует части ответа уровня реки С.Т. . Я изменил
ops
словарь, сначала в словарь измененных показателейexponent*2+4
дляb**((p-4)/2) * d**((q-4)/2)
, так что каждыйp
иq
будет однозначным числом. Например,b*d == b**1*d**1 == b**((6-4)/2)*d**((6-4)/2)
и результат будет66
в словаре.Затем я превратил словарь в строку
z
с теми модифицированными показателями и единицами измерения, которые необходимы в строке и в определенном порядке. Во-первых, значение ASCII каждого символа вARVW
моде 105, 2, 6, 7
. Когда любые два из этих значений добавляются, они дают уникальное число mod 10. Таким образом, каждой двухсимвольной комбинации может быть присвоен уникальный номер с(ord(x[0]) + ord(y[10] + 3) % 10
, даваяAR: 0, AV: 4, AW: 5, RV: 1, RW: 2, VW: 6
(очень похоже на контрольную сумму Lever River St). Расположение модифицированных показателей должно быть в этом порядке, т.[AR] [RV] [RW] [blank] [AV] [AW] [VW]
Е.z
Обеспечивает эффективный доступ (в байтах).Редактировать: Гольф список понимания под
return
. Гольф по определениюm
.Код:
Ungolfed:
источник
Python 3,
193187 байтПопробуйте онлайн
Преобразует ввод формы
<value> <unit> <value> <unit>
в операторы присваивания. Затем используйтеeval
каждую формулу,try/except
игнорируя ошибки тех, для которых переменные не были назначены.источник