Greet Player - codepath/compsci_guides GitHub Wiki
TIP102 Unit 5 Session 1 Standard (Click for link to problem statements)
Problem Highlights
- 💡 Difficulty: Easy
- ⏰ Time to complete: 10-15 mins
- 🛠️ Topics: Classes, Object-Oriented Programming, Methods
1: U-nderstand
Understand what the interviewer is asking for by using test cases and questions about the problem.
- Established a set (2-3) of test cases to verify their own solution later.
- Established a set (1-2) of edge cases to verify their solution handles complexities.
- Have fully understood the problem and have no clarifying questions.
- Have you verified any Time/Space Constraints for this problem?
-
What additional method should be added to the
Villager
class?- The
greet_player
method.
- The
-
What should the
greet_player
method return?- A string in the format:
"{self.name}: Hey there, {player_name}! How's it going, {self.catchphrase}?"
- A string in the format:
-
How do we create a new instance of the
Villager
class?- By calling the
Villager
constructor with the appropriate parameters for the new villager.
- By calling the
HAPPY CASE
Input:
bones = Villager("Bones", "Dog", "yip yip")
print(bones.greet_player("Tram"))
Output:
"Bones: Hey there, Tram! How's it going, yip yip?"
Explanation:
The `Villager` object `bones` is instantiated correctly and the `greet_player` method returns the expected greeting.
EDGE CASE
Input:
villager = Villager(", ", ")
print(villager.greet_player("))
Output:
": Hey there, ! How's it going, ?"
Explanation:
Even with empty string attributes, the `Villager` object should handle the method call without errors, though the output will be empty as per the input values.
2: M-atch
Match what this problem looks like to known categories of problems, e.g. Linked List or Dynamic Programming, and strategies or patterns in those categories.
For Object-Oriented Programming problems, we want to consider the following approaches:
- Define classes with appropriate attributes and methods.
- Use constructors to initialize object instances.
- Implement methods to perform specific actions with object attributes.
3: P-lan
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Define the greet_player
method in the Villager
class and create a new instance of Villager
.
1) Define the `greet_player` method in the `Villager` class.
2) Implement the method to return a formatted greeting string.
3) Create a new instance of the `Villager` class for `bones`.
4) Call the `greet_player` method with a specific player's name.
5) Print the result of the method call.
⚠️ Common Mistakes
- Incorrectly formatting the greeting string.
- Not initializing the
Villager
object with the correct attributes. - Forgetting to replace placeholder values with actual values.
4: I-mplement
Implement the code to solve the algorithm.
class Villager:
def __init__(self, name, species, catchphrase):
self.name = name
self.species = species
self.catchphrase = catchphrase
self.furniture = []
def greet_player(self, player_name):
return f"{self.name}: Hey there, {player_name}! How's it going, {self.catchphrase}?"
# Create an instance of Villager for Bones
bones = Villager("Bones", "Dog", "yip yip")
# Call the greet_player method and print the result
player_name = "Tram" # Replace with your actual name
print(bones.greet_player(player_name))
5: R-eview
Review the code by running specific example(s) and recording values (watchlist) of your code's variables along the way.
- Instantiate the
Villager
objectbones
. - Check the output of the
greet_player
method with the given player name.
6: E-valuate
Evaluate the performance of your algorithm and state any strong/weak or future potential work.
Assume N
represents the number of attributes in the Villager
class.
- Time Complexity:
O(1)
because calling a method and returning a string are constant-time operations. - Space Complexity:
O(1)
for eachVillager
instance because it uses a fixed amount of memory for its attributes and methods.