Skip to content

Identify Repeated Themes

Raymond Chen edited this page Sep 1, 2024 · 2 revisions

Unit 4 Session 2 Advanced (Click for link to problem statements)

U-nderstand

Understand what the interviewer is asking for by using test cases and questions about the problem.

  • Q: What is the goal of the problem?
    • A: The goal is to identify and return themes that appear more than once across different scenes.
  • Q: What are the inputs?
    • A: The input is a list of dictionaries, where each dictionary represents a scene with an associated theme.
  • Q: What are the outputs?
    • A: The output is a list of themes that occur more than once across the scenes.
  • Q: How should the themes be tracked?
    • A: Track the occurrence of each theme using a dictionary and then extract the themes that have a count greater than one.
  • Q: Are there any assumptions about the input?
    • A: The input list is well-formed with each scene containing a ""scene"" and ""theme"" key, and the values are strings.

P-lan

Plan the solution with appropriate visualizations and pseudocode.

General Idea: Use a dictionary to count the frequency of each theme. After counting, extract and return the themes that have a count greater than one.

1) Initialize an empty dictionary `theme_count` to track the frequency of each theme.
2) Iterate through the `scenes` list:
   a) Extract the theme from each scene and update its count in `theme_count`.
3) Create a list `repeated_themes` containing themes that have a count greater than one.
4) Return the `repeated_themes` list.

**⚠️ Common Mistakes**

- Forgetting to correctly update the count for each theme, leading to incorrect identification of repeated themes.
- Assuming that all themes are unique without handling cases where themes appear more than once.
- Not considering that the input might contain no repeated themes, which should result in an empty list being returned.

I-mplement

def identify_repeated_themes(scenes):
    theme_count = {}

    # Count the occurrences of each theme
    for scene in scenes:
        theme = scene[""theme""]
        if theme in theme_count:
            theme_count[theme] += 1
        else:
            theme_count[theme] = 1

    # Extract themes that appear more than once
    repeated_themes = [theme for theme, count in theme_count.items() if count > 1]

    return repeated_themes
Example Usage:

scenes = [
    {""scene"": ""The hero enters the dark forest."", ""theme"": ""courage""},
    {""scene"": ""A mysterious figure appears."", ""theme"": ""mystery""},
    {""scene"": ""The hero faces his fears."", ""theme"": ""courage""},
    {""scene"": ""An eerie silence fills the air."", ""theme"": ""mystery""},
    {""scene"": ""The hero finds a hidden treasure."", ""theme"": ""discovery""}
]

repeated_themes = identify_repeated_themes(scenes)
print(repeated_themes)  
# Output: ['courage', 'mystery']

scenes = [
    {""scene"": ""The spaceship lands on an alien planet."", ""theme"": ""exploration""},
    {""scene"": ""A strange creature approaches."", ""theme"": ""danger""},
    {""scene"": ""The crew explores the new world."", ""theme"": ""exploration""},
    {""scene"": ""The crew encounters hostile forces."", ""theme"": ""conflict""},
    {""scene"": ""The crew makes a narrow escape."", ""theme"": ""danger""}
]

repeated_themes = identify_repeated_themes(scenes)
print(repeated_themes)  
# Output: ['exploration', 'danger']
Clone this wiki locally