Напишите программу или функцию, которая принимает входные данные: все доступные резисторы и значение сопротивления и выводит истинное значение того, возможно ли получить сопротивление с помощью этих резисторов.
Правила:
Подойдет любой формат для ввода.
Будет как минимум 1 доступный резистор, и ваша программа должна вывести минимум 10 доступных резисторов.
Сопротивление всех доступных резисторов и требуемое сопротивление будут положительными целыми числами.
Для доступных резисторов, если также возможно дробное значение, требуемое сопротивление может быть приблизительным значением (см. Пример).
Выходные данные должны быть любыми 2 уникальными значениями для Возможного и Не возможного.
Резисторы могут быть подключены любым способом.
Последовательное сопротивление: для n последовательных сопротивлений: Результат = R1 + R2 + R3 + .... Rn
Параллельное сопротивление: Для n параллельных сопротивлений: Результат = 1 / (1 / R1 + 1 / R2 + 1 / R3 + .... + 1 / Rn)
Схема может не требовать от всех резисторов получения необходимого сопротивления (в этом случае выведите True).
Победитель:
Это код-гольф, поэтому выигрывает самый короткий код.
Примеры:
R List
110 220,220 -> True
440 220,220 -> True
550 400,300 -> False
3000 1000,3000 -> True
750 1000,3000 -> True
333 1000,1000,1000 -> True (1000||1000||1000=333.333)
667 1000,1000,1000 -> True ((1000+1000)||1000=666.6666)
8000 1000,1000,7000 -> True
190 100,200,333,344,221 -> True
193 105,200,333,344,221 -> True
400 200,100 -> False
Пояснения к последним двум примерам: /physics/22252/resistor-circuit-that-isnt-parallel-or-series
источник
3 3 1
,3 3 2
?Ответы:
Python 3 , 253 байта
Я беру набор мощности всех значений резисторов, а затем вычисляю суммы для серии и 1 / сумму (1 / значения) для паралеля, а затем беру набор значений этих двух наборов. Когда вы берете сумму всех подмножеств и помещаете их в набор, тогда этот набор значений содержит значение или нет. -> вернуть True / False
@stephen спасибо :)
источник
b != 0
->b!=0
.Japt , 52 байта
Попробуй это!
Это было непросто, и мне пришлось сделать пару странных вещей, чтобы это сработало. Я не могу математически доказать, что это работает для всего, но оно работает для всех тестовых случаев, а также для моего дополнительного предложенного тестового примера . В частности, я знаю, что вызываемая мной функция
W
дает разные результаты в зависимости от порядка резисторов на входе, поэтому я запускаю ее при каждом возможном упорядочении каждой возможной комбинации резисторов. Я также знаю, что он выдаст список сопротивлений, которые все можно создать, используя входные резисторы. Я не знаю со 100% уверенностью, что эти две вещи вместе приводят к всевозможному сопротивлению.Объяснение:
источник
Рубин , 153 байта
Попробуйте онлайн!
Грубая сила. Я серьезно.
источник