Data una sequenza di eventi con probabilità tra 0,0 e 1,0, generare e derivare la probabilità che si verifichi ciascuna combinazione. Si può presumere che una sequenza di numeri sia fornita in qualunque costrutto fornito dalla lingua scelta.
Ecco un esempio; puoi presumere che la lunghezza delle combinazioni della sequenza si adatti alla memoria:
{ 0.55, 0.67, 0.13 }
Il programma stampa ogni combinazione e la probabilità associata che si verifichi tale sequenza. Un 1 indica che si è verificato l'evento in quell'indice della sequenza di input e uno 0 indica che l'evento non si è verificato. L'output desiderato è inferiore (non mi interessa stampare il lavoro, è solo a scopo informativo dell'algoritmo):
[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
Questo problema è tangenzialmente correlato al calcolo di un "prodotto cartesiano".
Ricorda, questo è code-golf, quindi vince il codice con il minor numero di byte.
[0.129195, 0.019305, 0.262305, ..., 0.047905]
sufficiente come output o sono [0,0,0], [0,0,1], ...
necessari?