Another Rosalind problem, where an easy formula is hidden under a huge background.

**Let’s try to understand the problem by illustrating the example case**

Example case: **2 2 2 produces 0.78333**

Here,

k = number of homozygous dominant = number of YY = 2

m = number of heterozygous = number of Yy = 2

n = number of homozygous recessive = number of yy = 2

So, there are 2 + 2 + 2 = 6 organisms. Since they can all mate each other, it gives us 15 pairs (6 * (6–1) /2 = 15). We have to fiund out:

(number of productions where dominant allele “Y” is present) / (total number of productions)

You could actually generate all possible pairs, collect and their production, and calculate the result.

**Mate**

The key here to generate productions for all cases. There are 6 possible cases:

**1. Homozygous dominant-Homozygous dominant(YY — YY)**

Produces all homozygous dominant

**2. Homozygous Recessive-Homozygous Recessive (yy-yy)**

Produces all homozygous recessive

**3. Heterozygous-Heterozygous (Yy-Yy)**

Produces 2 heterozygous, 1 homozygous dominant, and 1 homozygous recessive

**4. Homozygous Dominant-Heterozygous (YY-Yy)**

Produces 2 heterozygous, 2 homozygous dominant

**5. Homozygous Recessive-Heterozygous (yy-Yy)**

Produces 2 heterozygous, 2 homozygous receissive

**5. Homozygous Dominant-Homozygous Recessive(YY-yy)**

Produces 4 heterozygous

Since each pair gives you 4 possible productions, for 15 possible pairs, there are total 15 X 4 = 60 possible productions. You can count and find out that among them, dominant allele (Y) is present in 47 cases, and 47/60 = **0.78333**, which is the result.

**Code**

However, I found other people solved this with even much shorter code. One guy even solved it with a one-line formula. You might want to check them too.

Any questions — please leave a comment. Glad to help!