1. Create a pseudocode algorithm that will accept the name of the motorists and the type of offence for the ticket. Determine if the tickets will be awarded a demerit point and check the current point(s) each motorist has on his or her licence. Display the updated points for the motorist. If the motorist has over 19 points, his or her licence will be suspended for 2 years. Other suspensions are based on 10 – 13 points for 6 months suspension and 14 – 19 points for 1 year suspension. Store the list of all suspended motorists. Display the names of the suspended motorists and the penalties.

Loop {

read name, offence
points = getPoints(name)
demerit = getDemerit(offence)
points++ if (demerit)
if (not demerit) then display("Your lucky day -- no demerit point this time.")
else
if (points > 19) then {display("Get a bike, loser! You now have",points," points."); penalty = "2-year")
else if (points >= 14) then {display("1-year suspension! You now have ",points," points."); penalty = "1-year"}
else if (points >= 10) then {display("6-month suspension! You now have ",points," points."); penalty = "six months"}
else display("Your point total is now ",points)
if points >= 10 then storeSuspended(name,penalty)
}
for each suspendedDriver display(name,penalty)

Let's get this algorithm cracking with some clownish creativity!

1. Start by creating an empty list called "suspended_motorists" to store all the suspended motorists.

2. Prompt the user to enter the name of the motorist and the type of offense for the ticket.

3. Use conditional statements to determine if the offense will award a demerit point. For instance, if the offense is speeding or not wearing a seatbelt, add 1 demerit point. If it's using a banana instead of a steering wheel, add 10 demerit points, since that's just bananas!

4. Check the current points the motorist has on their license. If they have over 19 points, give them a two-year suspension. That's a lot of clowning around!

- If the points are between 14 and 19, give them a one-year suspension. They'll have lots of time for balloon animal training!

- If the points are between 10 and 13, suspend them for six months. They'll have some clowning around time, but not as much as the others!

5. Add the name of the suspended motorist to the "suspended_motorists" list.

6. Display the updated points for the motorist, with a funny message like "You've got more points than a circus has clowns!"

7. Repeat steps 2 to 6 as many times as needed.

8. Finally, display the names of the suspended motorists along with their respective penalties, like "Suspended Motorists:"

- For each suspended motorist, show their name and the length of their suspension - for example, "Bozo Clown: Suspended for 2 years!" or "Jester Joker: Suspended for 6 months!"

Remember, this is just a pseudo-code algorithm for a clownish interpretation of the problem. You'll have to translate it into a programming language of your choice!

Here's a step-by-step pseudocode algorithm to achieve the desired functionality:

1. Start
2. Define a list variable named "suspendedMotorists" to store the names of all suspended motorists.
3. Define a dictionary variable named "demeritPoints" to store the current point(s) for each motorist.
4. Define a dictionary variable named "penalties" to store the suspension duration for each range of points.
5. Take input for the name of the motorist and the type of offence for the ticket.
6. Check if the offence is eligible for any demerit point(s):
a. If yes, add the demerit point(s) to the motorist's current point(s) stored in the "demeritPoints" dictionary.
b. If no, skip to step 10.
7. Check the current point(s) of the motorist:
a. If the motorist has 20 or more points, add their name to the "suspendedMotorists" list and set the penalty as a 2-year suspension.
b. If the motorist has 14-19 points, add their name to the "suspendedMotorists" list and set the penalty as a 1-year suspension.
c. If the motorist has 10-13 points, add their name to the "suspendedMotorists" list and set the penalty as a 6-month suspension.
d. If the motorist has less than 10 points, skip to step 10.
8. Display the updated points for the motorist.
9. Return to step 5 for processing additional motorists.
10. If there are any suspended motorists in the "suspendedMotorists" list, display their names and corresponding penalties.
11. End

Note: This pseudocode assumes the availability of appropriate functions and data structures for input/output operations, such as displaying messages, accepting user inputs, and storing data in dictionaries and lists. The specific programming language and implementation details can be decided based on the chosen programming environment.

To create a pseudocode algorithm for this task, you can follow these steps:

1. Declare the necessary variables:
- `motoristName` (string): to store the name of the motorist.
- `offenceType` (string): to store the type of offence for the ticket.
- `demeritPointsAwarded` (integer): to store the number of demerit points awarded for the offence.
- `currentPoints` (integer): to store the current points on the motorist's license.
- `suspendedMotorists` (list of strings): to store the names of all suspended motorists.
- `penalties` (list of strings): to store the penalties for each suspended motorist.

2. Prompt the user to enter the motorist's name and the type of offence.
- `motoristName = input("Enter the name of the motorist: ")`
- `offenceType = input("Enter the type of offence for the ticket: ")`

3. Based on the offence type, determine the number of demerit points awarded.
- Use an if-else or switch statement to assign the appropriate value to `demeritPointsAwarded`.
- For example, if the offence is speeding, assign `demeritPointsAwarded = 3`.

4. Prompt the user to enter the current points on the motorist's license.
- `currentPoints = int(input("Enter the current points on the motorist's license: "))`

5. Calculate the updated points for the motorist.
- `updatedPoints = currentPoints + demeritPointsAwarded`

6. Check if the updated points exceed the suspension threshold.
- Use an if-else statement to check the condition for each suspension threshold:
- If `updatedPoints > 19`, add the motorist's name and penalty to `suspendedMotorists` and `penalties` lists, respectively.
- If `updatedPoints >= 14 and updatedPoints <= 19`, add the motorist's name and penalty to `suspendedMotorists` and `penalties` lists, respectively.
- If `updatedPoints >= 10 and updatedPoints <= 13`, add the motorist's name and penalty to `suspendedMotorists` and `penalties` lists, respectively.
- Otherwise, the motorist is not suspended.

7. Display the updated points for the motorist.
- `print("Updated points for", motoristName, ":", updatedPoints)`

8. If the motorist is suspended, display the names of the suspended motorists and their penalties.
- Use a loop to iterate through the `suspendedMotorists` and `penalties` lists and display the corresponding values.

Note: This pseudocode algorithm assumes that you have a mechanism in place to handle input validation, error handling, and storing the data of all motorists with their respective points.