Description
You are expected to write a Python program for Santa Claus to help him distribute the gifts that the
children all around the world ask for. Santa Claus is living in his house with his elves in the North
Pole, where he keeps unlimited source of toys in his workshop to grant the children’s wishes.
In our scenario, there are 2 villages, 8 houses and 15 children, each of them with a wish for Christmas
from Santa. Some of the children live in the same house and some of the houses are in the same
village. In Figure 1, you can see the map of the world for our program. Under every house, its
coordinates (x,y) are written.
Figure 1: The map of the world
There are 3 types of items that children can wish for, and each item has different volumes: stuffed
toy: 7 units, train: 5 units and doll: 3 units. Below, each children living in each house is listed with
his/her name and wish:
Name Wish
House1
Sophia Doll
Ethan Train
Liam Stuffed Toy
House2 Zoe Doll
Emma Doll
House3 Emily Doll
William Stuffed Toy
House4 Olivia Train
Jack Stuffed Toy
House5
Hannah Doll
Benjamin Train
Michael Stuffed Toy
House6 Sarah Stuffed Toy
House7 Owen Train
House8 Max Stuffed Toy
Santa’s sleigh can take maximum 15 units of items and can only make 8.000 kilometers until
Christmas Eve. The user has to help Santa to distribute the toys before the total distance travelled
exceeds that limit.
Your program should have 4 classes named as Santa, Item, Child and Sleigh.
● Santa has a sleigh, a list of children, remaining distance and the (x,y) coordinates of his current
location.
● Item has a type and the corresponding volume.
● Sleigh has a capacity of 15 unit and a list of current items it holds.
● Child has a name, a wish item and an (x,y) coordinate of his/her house.
You should create instances of each class in your main program. For example,
wish1 = Item(“Doll”)
child1 = Child(“Sophia”,wish1,(150,495))
The day before Christmas Eve, Santa asks one of his elves to collect the wishes of the children. For
this purpose, you have to implement collect_wishes(world_list) function in a recursive manner
inside the Santa class that takes the list of our world as shown below:
world_list = [[[(“Sophia”, (150,495), “Doll”), (“Ethan”, (150,495), “Train”),
(“Liam”, (150,495), “Stuffed Toy”)], [(“Zoe”, (220,400), “Doll”), (“Emma”,
(220,400), “Doll”)], [(“Emily”, (300,465), “Doll”)), (“William”, (300,465), “Stuffed
Toy”)]], [[(“Olivia”, (490,380), “Train”), (“Jack”, (490,380), “Stuffed Toy”)],
[(“Hannah”, (590,400), “Doll”), (“Benjamin”, (590,400), “Train”), (“Michael”,
(590,400), “Stuffed Toy”)], [(“Sarah”, (530,490), “Stuffed Toy”)]], [(“Owen”,
(310,690), “Train”)], [(“Max”, (610,620), “Stuffed Toy”)]]
and it returns the list of all child instances like shown below:
[child1, child2, child3, child4, child5, child6, child7, child8, child9, child10,
child11, child12, child13, child14, child15]
At the beginning, the sleigh has 1 Stuffed Toy, 1 Doll and 1 Train. After collecting the wishes, the
program should start by showing the distance of each child from Santa’s Workshop (Santa’s current
location). You should calculate the distances by using the following formula (You should convert each
distance to integer by using int()):
D = √(x ) 2 − x1
2 + (y ) 2 − y1
2
Then, the program should ask the user to which child Santa has to go next. Before going to the given
destination, the program first checks whether the sleigh includes that child’s wish. If not, the program
should call load_cargo() function that asks the user which toys and how many of them will be
loaded. (load_cargo() function can be called in only Santa’s workshop. Otherwise, Santa has to return
to his workshop in order to load the cargo.)
After giving the child’s wish, the program should remove that child from the wish list. The program
should also update the current location of Santa and the remaining distance after every move.
At each turn, the program should display the remaining children and their distances from Santa’s
current location, and ask for Santa’s next move.
The program finishes when there is no child left, or the total distance travelled exceeds 8.000
kilometers.
IMPORTANT NOTES:
● User inputs are case insensitive.
● Be careful about invalid inputs! Ask each question over and over again until a valid input is
entered.
Submission Rules:
STUDENTS WHO DO NOT FOLLOW THESE RULES WILL BE GRADED AS 0.
1. You should submit your assignments through CMS until due date.
2. Your homework should be named as CENG113_hw4_studentID.py (ie:
CENG113_hw4_123456789).
3. Use comments in your code, otherwise you will lose some points.
4. Write your student ID as a comment at the beginning of your code.
Note: Violation of any submission rule may end up with point deduction up to 100 points. Any kind of
cheating including teamwork will be penalized.
An example scenario for the given world (user inputs are given in bold):
Welcome to Santa Claus’ Workshop!
Remaining Distance 8.000 kilometers.
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Sophia | 517 km | Doll |
| Ethan | 517 km | Train |
| Liam | 517 km | Stuffed Toy |
| Zoe | 456 km | Doll |
| Emma | 456 km | Doll |
| Emily | 553 km | Doll |
| William | 553 km | Stuffed Toy |
| Olivia | 620 km | Train |
| Jack | 620 km | Stuffed Toy |
| Hannah | 712 km | Doll |
| Benjamin | 712 km | Train |
| Micheal | 712 km | Stuffed Toy |
| Sarah | 721 km | Stuffed Toy |
| Owen | 756 km | Train |
| Max | 869 km | Stuffed Toy |
————————————-
Santa’s sleigh has: 1 Doll, 1 Train, 1 Stuffed Toy
Where should Santa go next? Sophia
Checking Cargo!
Santa is going to Sophia!
Remaining Distance: 7483 km.
Here are the children left that needs their Christmas presents and their distance
from Santa:
————————————-
| name | distance | wish |
————————————-
| Ethan | 0 km | Train |
| Liam | 0 km | Stuffed Toy |
| Zoe | 118 km | Doll |
| Emma | 118 km | Doll |
| Emily | 152 km | Doll |
| William | 152 km | Stuffed Toy |
| Olivia | 358 km | Train |
| Jack | 358 km | Stuffed Toy |
| Hannah | 450 km | Doll |
| Benjamin | 450 km | Train |
| Michael | 450 km | Stuffed Toy |
| Sarah | 380 km | Stuffed Toy |
| Owen | 252 km | Train |
| Max | 476 km | Stuffed Toy |
————————————-
Santa’s sleigh has: 0 Doll, 1 Train, 1 Stuffed Toy
Where should Santa go next? Etha
There is no child named Etha!!!
Where should Santa go next? Ethan
Checking Cargo!
Santa is going to Ethan!
Remaining Distance: 7483 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Liam | 0 km | Stuffed Toy |
| Zoe | 118 km | Doll |
| Emma | 118 km | Doll |
| Emily | 152 km | Doll |
| William | 152 km | Stuffed Toy |
| Olivia | 358 km | Train |
| Jack | 358 km | Stuffed Toy |
| Hannah | 450 km | Doll |
| Benjamin | 450 km | Train |
| Michael | 450 km | Stuffed Toy |
| Sarah | 380 km | Stuffed Toy |
| Owen | 252 km | Train |
| Max | 476 km | Stuffed Toy |
————————————-
Santa’s sleigh has: 0 Doll, 0 Train, 1 Stuffed Toy
Where should Santa go next? Liam
Checking Cargo!
Santa is going to Liam!
Remaining Distance: 7483 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Zoe | 118 km | Doll |
| Emma | 118 km | Doll |
| Emily | 152 km | Doll |
| William | 152 km | Stuffed Toy |
| Olivia | 358 km | Train |
| Jack | 358 km | Stuffed Toy |
| Hannah | 450 km | Doll |
| Benjamin | 450 km | Train |
| Michael | 450 km | Stuffed Toy |
| Sarah | 380 km | Stuffed Toy |
| Owen | 252 km | Train |
| Max | 476 km | Stuffed Toy |
————————————-
Santa’s sleigh has: 0 Doll, 0 Train, 0 Stuffed Toy
Where should Santa go next? Zoe
Checking Cargo!
Santa is going to Workshop to load cargo!
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Doll,2
The items are added to Santa’s sleigh.
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Train,1
The items are added to Santa’s sleigh.
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Stuffed Toy,1
The total size of items that you entered exceeds the capacity of the sleigh!
Would you like to add an item (Enter y/n): n
Santa is going to Zoe!
Remaining Distance: 6510 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emma | 0 km | Doll |
| Emily | 103 km | Doll |
| William | 103 km | Stuffed Toy |
| Olivia | 270 km | Train |
| Jack | 270 km | Stuffed Toy |
| Hannah | 370 km | Doll |
| Benjamin | 370 km | Train |
| Michael | 370 km | Stuffed Toy |
| Sarah | 322 km | Stuffed Toy |
| Owen | 303 km | Train |
| Max | 447 km | Stuffed Toy |
————————————-
Santa’s sleigh: 1 Doll, 1 Train, 0 Stuffed Toy
Where should Santa go next? Emma
Checking Cargo!
Santa is going to Emma!
Remaining Distance: 6510 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emily | 103 km | Doll |
| William | 103 km | Stuffed Toy |
| Olivia | 270 km | Train |
| Jack | 270 km | Stuffed Toy |
| Hannah | 370 km | Doll |
| Benjamin | 370 km | Train |
| Michael | 370 km | Stuffed Toy |
| Sarah | 322 km | Stuffed Toy |
| Owen | 303 km | Train |
| Max | 447 km | Stuffed Toy |
————————————-
Santa’s sleigh: 0 Doll, 1 Train, 0 Stuffed Toy
Where should Santa go next? Olivia
Checking Cargo!
Santa is going to Olivia!
Remaining Distance: 6240 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emily | 208 km | Doll |
| William | 208 km | Stuffed Toy |
| Jack | 0 km | Stuffed Toy |
| Hannah | 101 km | Doll |
| Benjamin | 101 km | Train |
| Michael | 101 km | Stuffed Toy |
| Sarah | 117 km | Stuffed Toy |
| Owen | 358 km | Train |
| Max | 268 km | Stuffed Toy |
————————————-
Santa’s sleigh: 0 Doll, 0 Train, 0 Stuffed Toy
Where should Santa go next? Emily
Checking Cargo!
Santa is going to Workshop to load cargo!
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Stuffed Toy,2
The items are added.
Would you like to add an item (Enter y/n): n
Santa Claus didn’t go to Emily
Where should Santa go next?: Sarah
Checking Cargo!
Santa is going to Sarah!
Remaining Distance: 4899 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emily | 231 km | Doll |
| William | 231 km | Stuffed Toy |
| Jack | 117 km | Stuffed Toy |
| Hannah | 108 km | Doll |
| Benjamin | 108 km | Train |
| Michael | 108 km | Stuffed Toy |
| Owen | 297 km | Train |
| Max | 152 km | Stuffed Toy |
————————————-
Santa’s sleigh: 0 Doll, 0 Train, 1 Stuffed Toy
Where should Santa go next? Max
Checking Cargo!
Santa is going to Max!
Remaining Distance: 4747 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emily | 346 km | Doll |
| William | 346 km | Stuffed Toy |
| Jack | 268 km | Stuffed Toy |
| Hannah | 220 km | Doll |
| Benjamin | 220 km | Train |
| Michael | 220 km | Stuffed Toy |
| Owen | 308 km | Train |
————————————-
Santa’s sleigh has: 0 Doll, 0 Train, 0 Stuffed Toy
Where should Santa go next?: Hannah
Checking Cargo!
Santa is going to Workshop to load cargo!
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Doll,1
The items are added.
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Train,1
The items are added.
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Stuffed Toy,1
The items are added.
Would you like to add an item (Enter y/n): n
Santa is going to Hannah!
Remaining Distance: 3166 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emily | 297 km | Doll |
| William | 297 km | Stuffed Toy |
| Jack | 101 km | Stuffed Toy |
| Benjamin | 0 km | Train |
| Michael | 0 km | Stuffed Toy |
| Owen | 403 km | Train |
————————————-
Santa’s sleigh has: 0 Doll, 1 Train, 1 Stuffed Toy
Where should Santa go next?:Benjamin
Checking Cargo!
Santa is going to Benjamin!
Remaining Distance: 3166 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emily | 297 km | Doll |
| William | 297 km | Stuffed Toy |
| Jack | 101 km | Stuffed Toy |
| Michael | 0 km | Stuffed Toy |
| Owen | 403 km | Train |
————————————-
Santa’s sleigh has: 0 Doll, 0 Train, 1 Stuffed Toy
Where should Santa go next?: Michael
Checking Cargo!
Santa is going to Michael!
Remaining Distance: 3166 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Emily | 297 km | Doll |
| William | 297 km | Stuffed Toy |
| Jack | 101 km | Stuffed Toy |
| Owen | 403 km | Train |
————————————-
Santa’s sleigh has: 0 Doll, 0 Train, 0 Stuffed Toy
Where should Santa go next?:Emily
Checking Cargo!
Santa is going to Workshop to load cargo!
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Doll,1
The items are added.
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:Stuffed Toy,1
The items are added.
Would you like to add an item (Enter y/n): n
Santa is going to Emily!
Remaining Distance: 1901 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| William | 0 km | Stuffed Toy |
| Jack | 208 km | Stuffed Toy |
| Owen | 225 km | Train |
————————————-
Santa’s sleigh has: 0 Doll, 0 Train, 1 Stuffed Toy
Where should Santa go next?: William
Checking Cargo!
Santa is going to William!
Remaining Distance: 1901 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Jack | 208 km | Stuffed Toy |
| Owen | 225 km | Train |
————————————-
Santa’s sleigh has: 0 Doll, 0 Train, 0 Stuffed Toy
Where should Santa go next?: Jack
Checking Cargo!
Santa is going to Workshop to load cargo!
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:train,1
The items are added.
Would you like to add an item (Enter y/n): y
Please enter your desired item name and number seperated with comma:stuffed toy,1
The items are added.
Would you like to add an item (Enter y/n): n
Santa is going to Jack!
Remaining Distance: 728 km
Here are the children left that need their Christmas presents and their distances
from Santa:
————————————-
| name | distance | wish |
————————————-
| Owen | 358 km | Train |
————————————-
Santa’s sleigh has: 0 Doll, 1 Train, 0 Stuffed Toy
Where should Santa go next?: Owen
Checking Cargo!
Santa is going to Owen!
Congratulations!!! You managed to help Santa.