Schreiben Sie ein Programm oder eine Funktion, die Eingaben übernimmt: alle verfügbaren Widerstände und einen Widerstandswert und gibt einen Wahrheitswert darüber aus, ob es möglich ist, den Widerstand mithilfe dieser Widerstände zu ermitteln oder nicht.
Regeln:
Jedes Format für die Eingabe reicht aus.
Es ist mindestens 1 Widerstand verfügbar, und Ihr Programm sollte mindestens 10 Widerstände ausgeben.
Der Widerstand aller verfügbaren Widerstände und der erforderliche Widerstand sind positive ganze Zahlen.
Wenn für verfügbare Widerstände auch ein Bruchwert möglich ist, kann der erforderliche Widerstand der angenäherte Wert sein (siehe Beispiel).
Die Ausgabe sollte aus 2 eindeutigen Werten für Möglich und Nicht möglich bestehen.
Die Widerstände können auf irgendeine Weise angeschlossen werden.
Series Resistance: Für n Widerstände in der Reihe: Ergebnis = R1 + R2 + R3 + .... Rn
Parallelwiderstand : Für n parallele Widerstände: Ergebnis = 1 / (1 / R1 + 1 / R2 + 1 / R3 + .... + 1 / Rn)
Die Schaltung benötigt möglicherweise nicht alle Widerstände, um den erforderlichen Widerstand zu erhalten (Ausgang True, wenn dies der Fall ist).
Gewinner:
Dies ist Code-Golf, also gewinnt der kürzeste Code.
Beispiele:
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
Erläuterung der letzten beiden Beispiele: /physics/22252/resistor-circuit-that-isnt-parallel-or-series
quelle
3 3 1
ist mit3 3 2
?Antworten:
Python 3 , 253 Bytes
Ich nehme das Powerset aller Widerstandswerte und berechne dann die Summen für Serien und 1 / Summe (1 / Werte) für Paralel. Dann nehme ich ein Powerset dieser beiden Sets. Wenn Sie die Summe aller Teilmengen nehmen und in eine Menge einfügen, enthält dieser Mengen-Eiter den Wert oder nicht. -> True / False zurückgeben
@stephen danke :)
quelle
b != 0
->b!=0
.Japt , 52 Bytes
Versuch es!
Dies war eine schwierige Frage, und ich musste ein paar seltsame Dinge tun, damit es funktionierte. Ich kann mathematisch nicht beweisen, dass dies für alles funktioniert, aber es funktioniert für alle Testfälle sowie für meinen zusätzlich vorgeschlagenen Testfall . Insbesondere weiß ich, dass die von mir definierte Funktion
W
abhängig von der Reihenfolge der Widerstände in ihrem Eingang unterschiedliche Ergebnisse liefert, sodass ich sie bei jeder möglichen Reihenfolge jeder möglichen Kombination von Widerständen ausführe. Ich weiß auch, dass es eine Liste von Widerständen erzeugen wird, die alle mit den Eingangswiderständen erzeugt werden können. Ich weiß nicht mit 100% iger Sicherheit, dass diese beiden Dinge zusammen mit jedem möglichen Widerstand enden.Erläuterung:
quelle
Ruby , 153 Bytes
Probieren Sie es online aus!
Rohe Gewalt. Ich meine es so.
quelle