Dzień dobry golfiści,
Nasze dzisiejsze wyzwanie jest inspirowane komiksami XKCD 356 i 370 . Napiszemy program do obliczania rezystancji grupy rezystorów. Ostrzeżenie, że jest to prawie wystarczająco trudne, aby uzasadnić wyzwanie kodowe, myślę jednak, że istnieje pewna sztuka pisania nieco bardziej złożonych programów w formacie golfowym. Najniższa liczba znaków wygrywa.
Obliczanie oporu opiera się na dwóch następujących wzorach:
- Jeśli rezystory są szeregowo, rezystancja jest sumą rezystancji każdego rezystora
- Jeśli rezystory są równoległe, rezystancja jest odwrotnością sumy odwrotności rezystancji każdego rezystora
Więc - na przykład:
Twoim zadaniem jest, w jak najmniejszej liczbie znaków, obliczyć opór grupy do 64 rezystorów. Przepraszam za złożoność, szczególnie zasad wprowadzania danych. Próbowałem zdefiniować je w taki sposób, aby każdy język był użyteczny.
Każdy rezystor zostanie podłączony do 2 lub więcej innych rezystorów.
Dane wejściowe są gwarantowane, z jednym wejściem i jednym punktem wyjścia, które się połączą
Sieć będzie szeregowo równoległa, aby nie wymagać więcej matematyki niż to, co jest prezentowane
Dane wejściowe będą dokonywane za pomocą pliku, argumentu lub standardowego wejścia, w zależności od tego, co jest odpowiednie dla twojego języka.
Dane wejściowe będą składały się z szeregu oddzielnych instrukcji nowej linii lub przecinanych do przodu, zawierających liczbę całkowitą rezystancji rezystora oraz spacje oddzielające identyfikatory rezystorów, do których podłączona jest jedna strona rezystora.
Identyfikator pierwszego rezystora będzie wynosił 1, zwiększając się o jeden dla każdego kolejnego rezystora
Początek zawsze będzie miał identyfikator 0
Rezystor końcowy zawsze będzie miał rezystancję 0 omów, a połączenia będą mieć tylko zdefiniowane na swojej linii
Na przykład:
Może być reprezentowany jako
3 0
6 1
1 0
5 0
0 2 3 4
- Wyjściem może być wyjście standardowe lub plik. Może być reprezentowany na jeden z następujących sposobów:
- Liczba z minimum 2 miejscami po przecinku, po której następuje nowa linia
- Ułamek składający się z liczby całkowitej (licznika), ukośnika i innej liczby całkowitej (mianownika), po której następuje nowa linia. Frakcja nie musi być w najniższej formie - na przykład dopuszczalne są 4/4 lub 10/8. Ułamek musi być dokładny w granicach 1/100. Nie ma żadnej premii za bycie idealnie dokładnym - jest to podstawa umożliwiająca konkurowanie językach bez operacji stałych lub zmiennoprzecinkowych.
Mam nadzieję, że obejmuje to wszystkie punkty. Powodzenia!
1 2/1 0/0 1
ważny?
/
nie jest odwrotnym ukośnikiem. Miałeś na myśli `\ 'lub ukośnik?