A program performing this task will contain a loop with a loop variable which takes the values 1-10. The value of this variable can be used for printing the question number. Start characters for each question can be selected with the rand() function. Remember that rand() produces a number between 0 and 1. In order to obtain one of the 26 integer numbers (0,1,2,...,25) you need to multiply rand() with 26 and take the integer part of the result (int()). Also use rand() for obtaining the relative positions. If we temporarily accept 0 as a relative position then there are 21 of these positions in the range -10-10. These can be selected with rand() by multiplying the function with 21, taking the integer part of the result and subtracting 10 from that outcome. This computation will generate some illegal values. Zero is not allowed as relative position and the relative position in combination with a character might point outside of a-z (that is their sum could be smaller than zero or larger than 25). Your program needs to test if one of these cases has occurred and generate new values for the start character and relative position if the combination of them is invalid. The easiest way to do this is to repeat the main loop (1-10), that is generating the questions without increasing the loop variable. We advise to use while() for implementing the loop since this allows optional increases of the loop variable. Conversion of numbers to characters can be done with the function chr(). Examples: chr(97) = 'a', chr(98) = 'b' and so on. Both the start character and the target character can be computed this way. The next required action is to print the question. Do not forget to put an extra space before the question number if it is smaller than ten. The relative positions 1 (st), 2 (nd) and 3 (rd) require unique suffixes. Behind the other question numbers you can print "th". Use a sequence of if-elsif to print the right suffix. Also use if-else for printing "following" and "before" appropriately. The answer can be read as a line. Checking the answer can be done by comparing it with the target character. Apply chomp() to the answer before performing the check. Keep a separate variable, initialized at zero, for storing the number of correct answers. Increase this variable for each correct answer. Show the contents of the variable when ten questions have been answered.