0.0 ile 1.0 arasında olasılıkları olan bir dizi olay göz önüne alındığında, meydana gelen her bir kombinasyonun olasılığını üretir ve türetir. Seçtiğiniz dilde hangi yapıda olursa olsun bir dizi sayı sağlandığını varsayabilirsiniz.
İşte bir örnek; dizinin kombinasyonlarının uzunluğunun belleğe sığdığını varsayabilirsiniz:
{ 0.55, 0.67, 0.13 }
Program, her bir kombinasyonu ve bu sekansın meydana gelme olasılığını basacaktır. 1, giriş dizisinin o dizinindeki olayın meydana geldiğini ve 0, o olayın meydana gelmediğini belirtir. İstenen çıktı aşağıdadır (İşi yazdırmayı umursamıyorum, bu sadece algoritmanın bilgilendirme amaçlıdır):
[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
Bu sorun teğetsel olarak bir "Kartezyen ürün" hesaplamasıyla ilgilidir.
Unutmayın, bu kod golfüdür, bu yüzden en az bayt içeren kod kazanır.
[0.129195, 0.019305, 0.262305, ..., 0.047905]
Çıktı olarak yeterli mi yoksa [0,0,0], [0,0,1], ...
gerekli mi?