Agents-MCP-Hackathon/Python-Code-to-Diagram-Generator-MCP
6
1import math2import random3from typing import List, Tuple4 5def calculate_factorial(n: int) -> int:6 """Calculate factorial of a number recursively."""7 if n <= 1:8 return 19 return n * calculate_factorial(n - 1)10 11def fibonacci_sequence(n: int) -> List[int]:12 """Generate fibonacci sequence up to n terms."""13 if n <= 0:14 return []15 elif n == 1:16 return [0]17 elif n == 2:18 return [0, 1]19 20 sequence = [0, 1]21 for i in range(2, n):22 sequence.append(sequence[i-1] + sequence[i-2])23 return sequence24 25def is_prime(num: int) -> bool:26 """Check if a number is prime."""27 if num < 2:28 return False29 if num == 2:30 return True31 if num % 2 == 0:32 return False33 34 for i in range(3, int(math.sqrt(num)) + 1, 2):35 if num % i == 0:36 return False37 return True38 39def find_primes_in_range(start: int, end: int) -> List[int]:40 """Find all prime numbers in a given range."""41 primes = []42 for num in range(start, end + 1):43 if is_prime(num):44 primes.append(num)45 return primes46 47def calculate_statistics(numbers: List[float]) -> dict:48 """Calculate basic statistics for a list of numbers."""49 if not numbers:50 return {"error": "Empty list provided"}51 52 n = len(numbers)53 mean = sum(numbers) / n54 sorted_nums = sorted(numbers)55 56 # Calculate median57 if n % 2 == 0:58 median = (sorted_nums[n//2 - 1] + sorted_nums[n//2]) / 259 else:60 median = sorted_nums[n//2]61 62 # Calculate variance and standard deviation63 variance = sum((x - mean) ** 2 for x in numbers) / n64 std_dev = math.sqrt(variance)65 66 return {67 "count": n,68 "mean": mean,69 "median": median,70 "min": min(numbers),71 "max": max(numbers),72 "variance": variance,73 "std_deviation": std_dev74 }75 76def monte_carlo_pi(iterations: int) -> float:77 """Estimate Pi using Monte Carlo method."""78 inside_circle = 079 80 for _ in range(iterations):81 x, y = random.random(), random.random()82 if x*x + y*y <= 1:83 inside_circle += 184 85 return 4 * inside_circle / iterations86 87def process_data_pipeline(data: List[int]) -> dict:88 """Complex data processing pipeline demonstrating function calls."""89 # Step 1: Filter for positive numbers90 positive_data = []91 for x in data:92 if x > 0:93 positive_data.append(x)94 95 # Step 2: Find primes in the data96 primes_in_data = []97 for x in positive_data:98 if is_prime(x):99 primes_in_data.append(x)100 101 # Step 3: Calculate statistics102 positive_data_floats = []103 for x in positive_data:104 positive_data_floats.append(float(x))105 stats = calculate_statistics(positive_data_floats)106 107 # Step 4: Generate fibonacci sequence up to max value108 max_val = max(positive_data) if positive_data else 0109 fib_count = min(max_val, 20) # Limit to reasonable size110 fib_sequence = fibonacci_sequence(fib_count)111 112 # Step 5: Calculate factorials for small numbers113 small_numbers = []114 for x in positive_data:115 if x <= 10:116 small_numbers.append(x)117 factorials = {}118 for x in small_numbers:119 factorials[x] = calculate_factorial(x)120 121 return {122 "original_count": len(data),123 "positive_count": len(positive_data),124 "primes_found": primes_in_data,125 "statistics": stats,126 "fibonacci_sequence": fib_sequence,127 "factorials": factorials,128 "pi_estimate": monte_carlo_pi(1000)129 }130 131def main():132 """Main function demonstrating the pipeline."""133 sample_data = [1, 2, 3, 5, 8, 13, 21, -1, 0, 17, 19, 23]134 result = process_data_pipeline(sample_data)135 print(f"Processing complete: {len(result)} metrics calculated")136 return result137 138if __name__ == "__main__":139 main()