''' **Exercise A:** Write a program where two different types of particles diffuse randomly within the graphical window. Use ten particles of each type, where each type has its own colour, size, and speed. Hint: Store the properties of each particle in a list. Because the properties are different types of variables, create a list for each property. For instance, one list to store the sizes of all 20 particles, another list to store the colors of all the 20 particles, etc. **Exercise B:** Extend your code such that the particles seize to move when they meet/collide with a particle of the other type. We define meeting/collision as the distance of less than 15 coordinate units. Use the following equation of Pythagoras to calculate the distance `d` between two particles `P` and `Q`: d = sqrt{(Px - Qx)^2 + (Py - Qy)^2} Hints: - In case it takes too long before particles stop, increase the distance for collision. - In exercise A, you’ve created multiple lists in which you store the different properties of each particle. In that exercise it might seem convenient to create a different lists per particle type, but would that still be convenient if you had, e.g., 300 different types of particles, all interacting with each other? Instead, try to see the type of a particle as a "property" of being of a different type. So, create a list in which you store the type of each particle and create a list to store the sizes of all the particles, a list to store the shapes of all the particles, one colour list, etc. **Exercise C:** Extend your code such that it only stops particles from moving when they meet a particle of the other type that is moving as well (with a distance less than 5 coordinate units). Increase the number of particles and change the ratio between the two types to 40:60. Hint: use an extra list in which you store the property of whether a particle is moving. **Exercise D:** Extend your program such that if a particle binds (meets) a particle of the other type, it should change colour, stop moving, and stay bound for 50 timesteps. After those 50 timesteps, the particles should again change colour and start moving again, but remain unable to bind again for another 20 timesteps. After those 20 timesteps, the particles should go back to their original color and be able to bind again. Hint: Create an extra variable (list) containing a property of the particle keeping track of the passed runs of the `while` loop. This will help to keep track of the timesteps in which the particle is bound or unable to bind. **Exercise E:** Extend your code such that it lets particles bind with a probability of 0.1 per timestep and release with a probability of 0.01 per timestep. Notice that you will need to know which particles are bound together to release them both at the same time step. Hint: Use `random` function to create a probability to test. '''