#!/usr/bin/env python3
"""
EDEN HASH/LOOKUP MASTERY
Fills the hash_lookup gap
"""
import time
from collections import Counter, defaultdict

def word_frequency(text):
    """Count word frequencies"""
    words = text.lower().split()
    return dict(Counter(words))

def two_sum(nums, target):
    """Find indices of two numbers that sum to target"""
    seen = {}
    for i, num in enumerate(nums):
        complement = target - num
        if complement in seen:
            return [seen[complement], i]
        seen[num] = i
    return []

def group_anagrams(strs):
    """Group anagrams together"""
    anagram_map = defaultdict(list)
    for s in strs:
        key = ''.join(sorted(s))
        anagram_map[key].append(s)
    return list(anagram_map.values())

def first_unique_char(s):
    """Find first non-repeating character index"""
    count = Counter(s)
    for i, char in enumerate(s):
        if count[char] == 1:
            return i
    return -1

def contains_duplicate(nums):
    """Check if any value appears twice"""
    return len(nums) != len(set(nums))

def intersection(nums1, nums2):
    """Find intersection of two arrays"""
    return list(set(nums1) & set(nums2))

def is_anagram(s1, s2):
    """Check if two strings are anagrams"""
    return Counter(s1) == Counter(s2)

# Test
if __name__ == "__main__":
    print("🔑 EDEN HASH MASTERY")
    print("="*50)
    
    # Word frequency
    print(f"✅ word_frequency('a b a c b a') = {word_frequency('a b a c b a')}")
    
    # Two sum
    start = time.perf_counter()
    result = two_sum([2, 7, 11, 15], 9)
    latency = (time.perf_counter() - start) * 1000
    print(f"✅ two_sum([2,7,11,15], 9) = {result}")
    print(f"⚡ Latency: {latency:.5f} ms")
    
    # Group anagrams
    words = ["eat", "tea", "tan", "ate", "nat", "bat"]
    print(f"✅ group_anagrams({words}) = {group_anagrams(words)}")
    
    # First unique
    print(f"✅ first_unique_char('leetcode') = {first_unique_char('leetcode')}")
    
    # Duplicates
    print(f"✅ contains_duplicate([1,2,3,1]) = {contains_duplicate([1,2,3,1])}")
    print(f"✅ contains_duplicate([1,2,3,4]) = {contains_duplicate([1,2,3,4])}")
    
    # Intersection
    print(f"✅ intersection([1,2,2,1], [2,2]) = {intersection([1,2,2,1], [2,2])}")
    
    # Anagram
    print(f"✅ is_anagram('listen', 'silent') = {is_anagram('listen', 'silent')}")
