Napisz program lub funkcję, która pobiera dane wejściowe: wszystkie dostępne rezystory oraz wartość rezystancji i generuje prawdziwą wartość określającą, czy można uzyskać rezystancję za pomocą tych rezystorów.
Zasady:
Wystarczy dowolny format wejściowy.
Będzie co najmniej 1 dostępny rezystor, a twój program powinien generować co najmniej 10 dostępnych rezystorów.
Rezystancja wszystkich dostępnych rezystorów i wymagana rezystancja będą dodatnimi liczbami całkowitymi.
W przypadku dostępnych rezystorów, jeśli możliwa jest również wartość ułamkowa, wymagana rezystancja może być wartością przybliżoną (patrz przykład)
Dane wyjściowe powinny być dowolnymi 2 unikatowymi wartościami Możliwe i Niemożliwe.
Rezystory można podłączyć w dowolny sposób.
Rezystancja szeregowa : Dla n rezystancji szeregowych: Wynik = R1 + R2 + R3 + .... Rn
Rezystancja równoległa : Dla n równoległych rezystancji: Wynik = 1 / (1 / R1 + 1 / R2 + 1 / R3 + .... + 1 / Rn)
Obwód może nie wymagać od wszystkich rezystorów uzyskania wymaganej rezystancji (w takim przypadku należy wybrać wartość True).
Zwycięzca:
To jest golf golfowy, więc wygrywa najkrótszy kod.
Przykłady:
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
Objaśnienie dwóch ostatnich przykładów: /physics/22252/resistor-circuit-that-isnt-parallel-or-series
źródło
3 3 1
,3 3 2
?Odpowiedzi:
Python 3 , 253 bajty
Biorę zestaw mocy wszystkich wartości rezystorów, a następnie obliczam sumy dla szeregu i 1 / suma (1 / wartości) dla równoległych, a następnie biorę zestaw mocy z tych dwóch zestawów. Gdy weźmiesz sumę wszystkich podzbiorów i umieścisz je w zestawie, ten zestaw eiter będzie zawierał wartość lub nie. -> zwraca wartość Prawda / Fałsz
@stephen dzięki :)
źródło
b != 0
->b!=0
.Japt , 52 bajty
Spróbuj!
To był trudny i musiałem zrobić kilka dziwnych rzeczy, aby zadziałało. Nie mogę matematycznie udowodnić, że to działa na wszystko, ale działa na wszystkie przypadki testowe, a także na mój dodatkowy proponowany przypadek testowy . W szczególności wiem, że funkcja, którą definiuję,
W
wywołuje, daje różne wyniki w zależności od kolejności rezystorów na wejściu, więc uruchamiam ją przy każdej możliwej kolejności każdej możliwej kombinacji rezystorów. Wiem również, że stworzy listę rezystancji, które wszystkie można utworzyć za pomocą rezystorów wejściowych. Nie wiem ze 100% pewnością, że te dwie rzeczy razem kończą się wszelkim możliwym oporem.Wyjaśnienie:
źródło
Rubin , 153 bajty
Wypróbuj online!
Brutalna siła. Mam na myśli to.
źródło