"""
TaskPrioritizer
Generated by Eden via recursive self-improvement
2025-10-28 05:45:16.403243
"""

class TaskPrioritizer:
    """A class to help prioritize tasks based on their attributes.
    
    Attributes:
        tasks (list): A list of dictionaries where each dictionary represents a task with 'description', 
                     'deadline' (in days), and 'priority' (higher number means higher priority).
    """
    
    def __init__(self):
        self.tasks = []
        
    def add_task(self, description, deadline, priority):
        """Add a new task to the list.
        
        Args:
            description (str): Task description.
            deadline (int): Deadline in days (e.g., 5 for due in 5 days).
            priority (int): Priority level (higher number means higher priority).
        """
        self.tasks.append({
            'description': description,
            'deadline': deadline,
            'priority': priority
        })
        
    def remove_task(self, task_index):
        """Remove a task by its index.
        
        Args:
            task_index (int): Index of the task to remove.
        """
        if 0 <= task_index < len(self.tasks):
            del self.tasks[task_index]
        else:
            raise ValueError("Invalid task index.")
            
    def prioritize(self):
        """Sort tasks based on priority, deadline, and urgency.
        
        Returns:
            list: Sorted tasks in order of importance. Tasks are sorted by:
                 1. Higher priority first
                 2. Earlier deadlines next
                 3. Shorter descriptions last (to tackle longer tasks later)
        """
        # Sort the tasks based on multiple criteria
        def sort_key(task):
            return (-task['priority'], task['deadline'], len(task['description']))
        
        sorted_tasks = sorted(self.tasks, key=sort_key)
        return sorted_tasks

# Example usage:
if __name__ == "__main__":
    # Create a TaskPrioritizer instance
    tp = TaskPrioritizer()
    
    # Add tasks
    tp.add_task("Complete project report", 3, 5)
    tp.add_task("Review code changes", 7, 4)
    tp.add_task("Buy groceries", 5, 2)
    tp.add_task("Team meeting", 2, 10)  # High priority despite later deadline
    
    # Prioritize tasks
    prioritized = tp.prioritize()
    
    print("\nPrioritized Tasks:")
    for idx, task in enumerate(prioritized, 1):
        print(f"{idx}. {task['description']}")
        print(f"   - Deadline: {task['deadline']} days")
        print(f"   - Priority: {task['priority']}\n")