Introduction:
Deux résistances R1
et R2
, en parallèle (notées R1 || R2
) ont une résistance combinée Rp
donnée par:
Trois résistances R1
, R2
et R3
en parallèle ( R1 || R2 || R3
) ont une résistance combinée (R1 || R2) || R3 = Rp || R3
:
ou encore, comme suggéré dans les commentaires:
Ces formules peuvent bien entendu être étendues à un nombre indéfini de résistances.
Défi:
Prenez une liste de valeurs de résistance positives en entrée et sortez la résistance combinée si elles ont été placées en parallèle dans un circuit électrique. Vous ne pouvez pas supposer un nombre maximum de résistances (sauf que votre ordinateur peut bien sûr le gérer).
Cas de test:
1, 1
0.5
1, 1, 1
0.3333333
4, 6, 3
1.3333333
20, 14, 18, 8, 2, 12
1.1295
10, 10, 20, 30, 40, 50, 60, 70, 80, 90
2.6117
Le code le plus court dans chaque langue gagne. Les explications sont fortement encouragées.
la source
Réponses:
05AB1E ,
53 octetsEssayez-le en ligne!
Explication
la source
Haskell ,
1816 octetsEssayez-le en ligne!
la source
foldr1(\r s->r*s/(r+s))
.MATLAB , 14 octets
Dans MATLABp⩾1 comme
norm(...,p)
calcule lap
-norm d'un vecteur. Ceci est généralement défini pourMais heureusement pour nous, cela fonctionne aussi pourp=−1 . (Notez que cela ne fonctionne pas dans Octave.)
Ne l'essayez pas en ligne!
la source
Gelée ,
53 octetsEssayez-le en ligne!
Comment?
Au début, j'ai oublié ce formulaire de mes jours d'ingénierie électronique ... avec quelle facilité nous oublions.
la source
İ
est prononcé de la même façoni
est prononcéelist
. Est-ce une façon de dire que le défi a été facile?PowerShell , 22 octets
Essayez-le en ligne!
Prend l'entrée via l'éclaboussure et utilise le même 1 / somme de tour inverse que la plupart des autres font
la source
Octave , 15 octets
Essayez-le en ligne!
Moyenne harmonique, divisée par
n
. Peasy facile.la source
APL (Dyalog Unicode) , 4 octets
Essayez-le en ligne!
-1 merci à Adám .
la source
÷1⊥÷
Essayez-le en ligne!1∘⊥
c'est la même chose que+/
pour les vecteurs ...R , 15 octets
Essayez-le en ligne!
Suit le même principe de moyenne harmonique vu dans d'autres réponses.
la source
JavaScript, 28 octets
Essayez-le en ligne!
la source
Perl 5
-pa -MList::Util=reduce
, 26 octetsEssayez-le en ligne!
la source
Perl 6 , 14 octets
Essayez-le en ligne!
1 / **
est une fonction anonyme qui renvoie une liste des inverses de ses arguments.1 / *.sum
est une autre fonction anonyme qui retourne l'inverse de la somme des éléments de son argument list. L'o
opérateur compose ces deux fonctions.la source
bash + coreutils, 25 octets
TIO
la source
Wolfram Language (Mathematica) , 10 octets
Essayez-le en ligne!
la source
HarmonicMean
et est plus long.MathGolf , 3 octets
∩
Σ
Essayez-le en ligne.
la source
PHP , 51 octets
Réciproque de la somme des réciproques. L'entrée est
$a
.Essayez-le en ligne!
la source
1/array_reduce($a,fn($c,$i)=>$c+1/$i);
(38 octets). En savoir plus sur wiki.php.net/rfc/arrow_functionsJavaScript (ES6), 29 octets
Essayez-le en ligne!
ou:
Essayez-le en ligne!
Mais avec cette approche, l'utilisation
map()
(comme l'a fait Shaggy ) est plus courte d'un octet.la source
Python 3 , 30 octets
Essayez-le en ligne!
la source
Perl 5 (-p), 17 octets
Essayez-le en ligne!
la source
x86-64 Code machine -
2018 octetsEntrée - Convention d'appel Windows. Le premier paramètre est le nombre de résistances
RCX
. Un pointeur vers les résistances se trouveRDX
.*ps
les instructions sont utilisées car elles sont plus petites d'un octet. Techniquement, vous ne pouvez avoir qu'environ 2 ^ 61 résistances mais vous serez à court de RAM bien avant. La précision n'est pas grande non plus, puisque nous utilisonsrcpps
.la source
Java 8, 24 octets
J'ai remarqué qu'il n'y avait pas encore de réponse Java, alors j'ai pensé en ajouter une.
Essayez-le en ligne.
Explication:
Utilise la même approche de la moyenne harmonique que les autres réponses:
la source
MATL , 5 octets
Essayez-le en ligne!
I'm not sure if "do twice" (
,
) counts as a loop, but this is just the harmonic mean, divided byn
.Alternately,
,-1^s
is five bytes as well.la source
Intel 8087 FPU machine code, 19 bytes
This uses the stack-based floating point instructions in the original IBM PC's 8087 FPU.
L'entrée est un pointeur sur les valeurs des résistances en
[SI]
, nombre de résistances enCX
. Output is to a single precision (DD) value at[DI]
.la source
Dard , 42 octets
Essayez-le en ligne!
num
Devoir spécifier explicitement le type est un peu nul, empêche l'inférence de type, car il en déduirait que ne(dynamic, dynamic) => dynamic
peut pas donner de double pour une raison quelconquela source
PHP , 40 octets
Essayez-le en ligne!
Tests: Essayez-le en ligne!
Semblable à la solution de Yimin Rong mais sans intégré et tous les octets de programme sont inclus dans le nombre d'octets.
la source
Python 3,
5844 octetsUne fonction récursive. Nécessite que les arguments soient passés décompressés, comme ceci:
ou
Explication:
la source
Fusain , 7 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Fonctionne en calculant le courant consommé par chaque résistance lorsque 1 V est appliqué, en prenant le total et en calculant la résistance qui tirerait ce courant lorsque 1 V est appliqué. Explication:
la source
J , 6 octets
Essayez-le en ligne!
la source
+/&.:%
[MATLAB], 15 octets
Un octet de plus que flawr excellente réponse, mais j'ai dû utiliser d'autres fonctions alors voici:
C'est plutôt explicite, il additionne l'inverse des résistances, puis inverse la somme pour sortir la résistance parallèle équivalente.
la source
Forth (gforth) , 49 octets
Essayez-le en ligne!
L'entrée est une adresse mémoire et une longueur de tableau (utilisée comme tableau impromptu, car Forth n'a pas de construction de tableau intégrée)
Utilise la méthode de la somme des inverses car la plupart des autres réponses sont
Explication du code
la source
expl3 (couche de programmation LaTeX3), 65 octets
Ce qui suit définit une fonction qui imprime le résultat sur le terminal (a malheureusement
expl3
des noms de fonction très verbeux):Un script complet qui peut être exécuté depuis le terminal comprenant tous les cas de test ainsi que la configuration pour entrer
expl3
:Si exécuté avec
pdflatex <filename>
ce qui suit est la sortie de la console:Explication
\fp_show:n
: évalue son argument comme une expression à virgule flottante et imprime le résultat sur le terminal, chaque macro extensible est développée pendant ce processus.\clist_map_function:nN
: prend deux arguments, une liste séparée par des virgules et une fonction / macro, si elle est appelée comme\clist_map_function:nN { l1, l2, l3 } \foo
elle se développe en quelque chose comme\foo{l1}\foo{l2}\foo{l3}
. Dans notre cas, au lieu de\foo
la macro\2
est utilisée, qui se développe pour+1/
que l'expression se développe pour+1/{l1}+1/{l2}+1/{l3}
la source