Introducción:
Dos resistencias R1
y R2
, en paralelo (denotado R1 || R2
) tienen una resistencia combinada Rp
dada como:
o como se sugiere en los comentarios:
Tres resistencias, R1
, R2
y R3
en paralelo ( R1 || R2 || R3
) tienen una resistencia combinada (R1 || R2) || R3 = Rp || R3
:
o, nuevamente como se sugiere en los comentarios:
Estas fórmulas, por supuesto, pueden extenderse a un número indefinido de resistencias.
Desafío:
Tome una lista de valores de resistencia positiva como entrada y envíe la resistencia combinada si se colocan en paralelo en un circuito eléctrico. No puede asumir un número máximo de resistencias (excepto que su computadora puede manejarlo, por supuesto).
Casos de prueba:
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
El código más corto en cada idioma gana. Las explicaciones son altamente alentadas.
code-golf
math
physics
electrical-engineering
Stewie Griffin
fuente
fuente
Respuestas:
05AB1E ,
53 bytesPruébalo en línea!
Explicación
fuente
Haskell ,
1816 bytesPruébalo en línea!
fuente
foldr1(\r s->r*s/(r+s))
.MATLAB , 14 bytes
En MATLABp⩾1 como
norm(...,p)
calcula lap
forma de un vector. Esto generalmente se define paraPero afortunadamente para nosotros, también funciona parap=−1 . (Tenga en cuenta que no funciona en Octave).
¡No lo intentes en línea!
fuente
Jalea ,
53 bytesPruébalo en línea!
¿Cómo?
Inicialmente olvidé este formulario de mis días de ingeniería electrónica ... con qué facilidad lo olvidamos.
fuente
İ
se pronuncia de la misma manerai
que se pronuncia enlist
. ¿Es esta una forma de decir que el desafío fue fácil?PowerShell , 22 bytes
Pruébalo en línea!
Toma información a través de salpicaduras y usa el mismo 1 / suma de truco inverso que muchos de los otros están haciendo
fuente
Octava , 15 bytes
Pruébalo en línea!
Media armónica, dividida por
n
. Pan comido.fuente
APL (Dyalog Unicode) , 4 bytes
Pruébalo en línea!
-1 gracias a Adám .
fuente
÷1⊥÷
Pruébelo en línea!1∘⊥
es lo mismo que+/
para los vectores ...R , 15 bytes
Pruébalo en línea!
Sigue el mismo principio de media armónica visto en otras respuestas.
fuente
JavaScript, 28 bytes
Pruébalo en línea!
fuente
Perl 5
-pa -MList::Util=reduce
, 26 bytesPruébalo en línea!
fuente
Perl 6 , 14 bytes
Pruébalo en línea!
1 / **
es una función anónima que devuelve una lista de los recíprocos de sus argumentos.1 / *.sum
es otra función anónima que devuelve el recíproco de la suma de los elementos de su argumento de lista. Elo
operador compone esas dos funciones.fuente
bash + coreutils, 25 bytes
TIO
fuente
Wolfram Language (Mathematica) , 10 bytes
Pruébalo en línea!
fuente
HarmonicMean
y es más largo.MathGolf , 3 bytes
Lo mismo que otras respuestas, usando los builtins1norte ) y METRO( x1, . . . , xnorte) = 11X1+ 1X2+ . . . + 1Xnorte
∩
(Σ
(suma):Pruébalo en línea.
fuente
PHP , 51 bytes
Recíproco de suma de recíprocos. Entrada es
$a
.Pruébalo en línea!
fuente
1/array_reduce($a,fn($c,$i)=>$c+1/$i);
(38 bytes). Lea más en wiki.php.net/rfc/arrow_functionsJavaScript (ES6), 29 bytes
Pruébalo en línea!
o:
Pruébalo en línea!
Pero con este enfoque, usar
map()
(como lo hizo Shaggy ) es 1 byte más corto.fuente
Python 3 , 30 bytes
Pruébalo en línea!
fuente
Perl 5 (-p), 17 bytes
Pruébalo en línea!
fuente
x86-64 Código de máquina -
2018 bytesEntrada: convención de llamadas de Windows. El primer parámetro es el número de resistencias en
RCX
. Un puntero a las resistencias está adentroRDX
.*ps
Las instrucciones se utilizan ya que son un byte más pequeño. Técnicamente, solo puede tener alrededor de 2 ^ 61 resistencias, pero se quedará sin RAM mucho antes. La precisión tampoco es excelente, ya que la estamos usandorcpps
.fuente
Java 8, 24 bytes
Noté que aún no había una respuesta de Java, así que pensé en agregar una.
Pruébalo en línea.
Explicación:
Utiliza el mismo enfoque de media armónica que otras respuestas:
fuente
MATL , 5 bytes
Pruébalo en línea!
No estoy seguro de si "do two" (
,
) cuenta como un bucle, pero esta es solo la media armónica, dividida porn
.Alternativamente,
,-1^s
es de cinco bytes también.fuente
Código de máquina Intel 8087 FPU, 19 bytes
Utiliza las instrucciones de coma flotante basadas en pila en la FPU 8087 de la PC IBM original.
La entrada es puntero a los valores de resistencia en
[SI]
, número de resistencias enCX
. La salida tiene un solo valor de precisión (DD) en[DI]
.fuente
Dart , 42 bytes
Pruébalo en línea!
Tener que especificar explícitamente que el
num
tipo es un poco sucio, evita la inferencia de tipos, porque inferiría a los(dynamic, dynamic) => dynamic
cuales no se pueden obtener dobles por alguna razónfuente
PHP , 40 bytes
Pruébalo en línea!
Pruebas: ¡ Pruébelo en línea!
Similar a la solución de Yimin Rong pero sin elementos integrados y todos los bytes del programa están incluidos en el recuento de bytes.
fuente
Python 3,
5844 bytesUna función recursiva. Requiere que los argumentos se pasen sin empaquetar, así:
o
Explicación:
fuente
Carbón de leña , 7 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Funciona calculando la corriente dibujada por cada resistencia cuando se aplica 1V, tomando el total y calculando la resistencia que dibujaría esa corriente cuando se aplica 1V. Explicación:
fuente
J , 6 bytes
Pruébalo en línea!
fuente
+/&.:%
[MATLAB], 15 bytes
Un byte más que una excelente respuesta, pero tuve que usar otras funciones, así que aquí va:
Es bastante explícito, suma el inverso de las resistencias, luego invierte la suma para generar la resistencia paralela equivalente.
fuente
Adelante (gforth) , 49 bytes
Pruébalo en línea!
La entrada es una dirección de memoria y una longitud de matriz (utilizada como una matriz improvisada, ya que Forth no tiene una construcción de matriz incorporada)
Utiliza el método de suma de inversa, ya que la mayoría de las otras respuestas son
Explicación del código
fuente
expl3 (capa de programación LaTeX3), 65 bytes
Lo siguiente define una función que imprime el resultado en el terminal (desafortunadamente
expl3
tiene nombres de funciones muy detallados):Un script completo que se puede ejecutar desde la terminal, incluidos todos los casos de prueba, así como la configuración para ingresar
expl3
:Si se ejecuta con
pdflatex <filename>
lo siguiente es la salida de la consola:Explicación
\fp_show:n
: evalúa su argumento como una expresión de coma flotante e imprime el resultado en el terminal, cada macro expandible se expande durante ese proceso.\clist_map_function:nN
: toma dos argumentos, una lista separada por comas y una función / macro, si se llama como\clist_map_function:nN { l1, l2, l3 } \foo
se expande a algo así\foo{l1}\foo{l2}\foo{l3}
. En nuestro caso se usa en lugar de\foo
la macro\2
, que se expande a+1/
para que la expresión se expanda a+1/{l1}+1/{l2}+1/{l3}
fuente