Buenas tardes golfistas,
Nuestro desafío para hoy está inspirado en los cómics XKCD 356 y 370 . Vamos a escribir un programa para calcular la resistencia de un grupo de resistencias. Una advertencia de que esto es lo suficientemente difícil como para justificar ser un desafío de código, sin embargo, creo que hay cierto arte en escribir programas ligeramente más complejos en un formato de golf. La menor cantidad de personajes gana.
Calcular la resistencia se basa en las siguientes dos fórmulas:
- Si las resistencias están en serie, la resistencia es la suma de la resistencia de cada resistencia
- Si las resistencias están en paralelo, la resistencia es la inversa de la suma de la inversa de la resistencia de cada resistencia
Así por ejemplo:
Su desafío es, en la menor cantidad de caracteres posible, calcular la resistencia de un grupo de hasta 64 resistencias. Mis disculpas por la complejidad, particularmente de las reglas de entrada. He intentado definirlos de tal manera que todos los idiomas sean utilizables.
Cada resistencia se conectará a 2 o más resistencias más.
Se garantiza que la entrada sea válida, con solo una entrada y un punto de salida, que se conectará
La red será paralela en serie para evitar que se requieran más matemáticas de las que se presentan.
La entrada será vía archivo, argumento o stdin, dependiendo de lo que sea apropiado para su idioma.
La entrada consistirá en una serie de declaraciones separadas de línea nueva o cortadas hacia adelante que consisten en un número entero de la resistencia de la resistencia y espacios que separan las ID de las resistencias a las que está conectado un lado de la resistencia.
La ID de la primera resistencia será 1, incrementándose en uno para cada resistencia sucesiva
El inicio siempre tendrá un ID de 0
La resistencia final siempre tendrá una resistencia de 0 ohmios y solo tendrá las conexiones definidas en su línea.
Por ejemplo:
Podría ser representado como
3 0
6 1
1 0
5 0
0 2 3 4
- La salida puede ser stdout o file. Se puede representar de una de las siguientes maneras:
- Un número con un mínimo de 2 decimales, seguido de una nueva línea
- Una fracción que consiste en un número entero (el numerador), una barra diagonal y otro número entero (el denominador), seguido de una nueva línea. No es necesario que la fracción esté en su forma más baja: 4/4 o 10/8 son, por ejemplo, aceptables. La fracción debe ser precisa dentro de 1/100. No hay bonificación por ser perfectamente preciso: se proporciona una muleta para permitir que los idiomas sin operaciones de punto fijo o flotante compitan.
Espero que cubra todos los puntos. ¡Buena suerte!
1 2/1 0/0 1
valido?
/
No es una barra invertida. ¿Quiso decir `\ 'o una barra diagonal?