Закон Кирхгофа гласит, что когда вы суммируете все токи (положительные для токов, идущих на соединение, и отрицательные для тока, выходящего из соединения), вы всегда получите 0.
Посмотрите на следующую диаграмму:
Используя закон Кирхгофа, вы можете видеть, что i1 + i4 - i2 - i3 = 0, поэтому i1 + i4 = i2 + i3.
Учитывая два списка, один со всеми токами, входящими в соединение, и один со всеми токами, выходящими из соединения, кроме одного, выведите последний.
Testcases:
[1, 2, 3], [1, 2] = 3
[4, 5, 6], [7, 8] = 0
[5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1] = 6
Во втором списке всегда есть элемент меньше первого списка. Выход не может быть отрицательным. Самая маленькая программа выигрывает.
code-golf
array-manipulation
electrical-engineering
Шестьдесят шесть
источник
источник
Ответы:
Желе, 2 байта
Попробуй это здесь!
Принимает входящие токи в первом аргументе и уходящие токи во втором аргументе.
_
вычитает их попарно, оставляя один элемент из более длинного списка как есть, иS
суммирует результат.источник
Haskell, 14 байтов
Пример использования:
( (.sum).(-).sum ) [5,7,3,4,5,2] [8,4,5,2,1]
->6
.Суммируйте каждый список и возьмите разницу.
источник
CJam,
86 байтовДля ввода используются два массива в стиле CJam.
Запустите все тестовые случаи.(Это считывает несколько тестовых случаев одновременно и включает структуру для обработки каждой строки отдельно, отбрасывая ожидаемый результат от ввода.)
объяснение
.-
работает надежно, потому что мы гарантируем, что первый список всегда длиннее второго. (В противном случае посторонние элементы второго списка будут добавлены к результату, который будет добавлять их к сумме, а не вычитать их.)источник
MATL , 3
4,0байтаВходы: сначала выходя из токов, затем вводя токи.
Попробуйте онлайн!
источник
Javascript, 36 байт
Показать фрагмент кода
источник
05AB1E , 4 байта
Код:
Объяснение:
Благодаря Луису Мендо за напоминание, что мне нужно реализовать функцию сцепления. Если бы я реализовал это раньше, это было бы 3 байта:
Неконкурентная версия (3 байта):
Первый список - выходящий текущий список, второй - входящий текущий список. Код:
Объяснение:
Использует кодировку CP-1252.
источник
Mathematica,
1711 байтовДовольно просто.
источник
Common Lisp, 40
источник
Perl 6 , 11 байт
Использование:
источник
Python 3, 24 байта
или
Python 2, 19 байт
в зависимости от того, требуется ли мне напечатать результат или просто создать функцию, которая его возвращает.
источник
ES6, 39 байт
Потому что я хотел использовать
reduceRight
.источник
Python 2, 30 байт
источник
Pyth, 6 байт
объяснение
Попробуй здесь
источник
К5, 5 байт
Разница по (
-/
) сумме по (+/
) каждому ('
).В бою:
источник
Pyth, 5 байт
Попробуйте онлайн. Тестирование.
M
арs
ит на обоих входных списков, тоF
старое вычитание (-
).Это также можно записать как
-sQsE
, что занимает списки в две строки.источник
𝔼𝕊𝕄𝕚𝕟, 5 символов / 7 байтов
Try it here (Firefox only).
Wut.
объяснение
sum(input1) - sum(input2)
источник
Common Lisp REPL, SBCL
2824 байтазапишите это в REPL:
затем напишите списки ввода, как это:
Я надеюсь, что можно использовать такой формат списка (вместо, например
'(2 3 4)
), который я использовал ответ coredump качестве формулы для своего решения, а затем достиг его эффекта вычисления другим способом.объяснение
Позвольте
e_1,...,e_n
быть элементами первого списка иf_1,...,f_{n-1}
быть элементами второго списка. Мы хотим оценить выражение(-(+ e_1 e_2 ... e_n)f_1 f_2 ...f_{n-1})
Это означало бы вычитание элементов второго списка из суммы элементов первого списка. Нужное выражение строится так:обратная связь останавливает оценку
#1=
экономит немного письма, помня,@(read)
,@
останавливает эффекты обратной кавычки (так что (чтение) будет оцениваться) и удаляет элементы из списка.(read)
просит ввода#1#
"загружает" объект Lisp, сохраненный#1=
#.
выполняет оценку печатного представления объекта Lispисточник