Biorąc pod uwagę sekwencje zdarzeń o prawdopodobieństwach od 0,0 do 1,0, generuj i wyprowadzaj prawdopodobieństwo wystąpienia każdej kombinacji. Możesz założyć, że podana jest ciąg liczb w dowolnej konstrukcji wybranego przez ciebie języka.
Oto przykład; możesz założyć, że długość kombinacji sekwencji pasuje do pamięci:
{ 0.55, 0.67, 0.13 }
Program wydrukuje każdą kombinację i związane z nią prawdopodobieństwo wystąpienia tej sekwencji. 1 oznacza, że zdarzenie w tym indeksie sekwencji wejściowej miało miejsce, a 0 oznacza, że to zdarzenie nie miało miejsca. Pożądane dane wyjściowe są poniżej (nie dbam o drukowanie pracy, to tylko w celach informacyjnych algorytmu):
[0,0,0] = (1 - 0.55) * (1-0.67) * (1-0.13) = 0.129195
[0,0,1] = (1 - 0.55) * (1-0.67) * (0.13) = 0.019305
[0,1,0] = (1 - 0.55) * (0.67) * (1-0.13) = 0.262305
[0,1,1] = (1 - 0.55) * (0.67) * (0.13) = 0.039195
[1,0,0] = (0.55) * (1-0.67) * (1-0.13) = 0.157905
[1,0,1] = (0.55) * (1-0.67) * (0.13) = 0.023595
[1,1,0] = (0.55) * (0.67) * (1-0.13) = 0.320595
[1,1,1] = (0.55) * (0.67) * (0.13) = 0.047905
Problem ten jest stycznie związany z obliczaniem „produktu kartezjańskiego”.
Pamiętaj, to jest kodowanie w golfa, więc wygrywa kod z najmniejszą liczbą bajtów.
[0.129195, 0.019305, 0.262305, ..., 0.047905]
wystarczyłoby jako wyjście, czy jest [0,0,0], [0,0,1], ...
konieczne?