| | from typing import Dict, List, Optional |
| | import random |
| |
|
| | class CodeGenerator: |
| | """A class to generate function code in multiple programming languages.""" |
| | |
| | |
| | TEMPLATES: Dict[str, str] = { |
| | "python": "def {func_name}({params}):\n {body}", |
| | "javascript": "function {func_name}({params}) {{\n {body}\n}}", |
| | "cpp": "{ret_type} {func_name}({params}) {{\n {body}\n}}", |
| | "java": "public class Main {{\n public static {ret_type} {func_name}({params}) {{\n {body}\n }}\n}}", |
| | "csharp": "public class Program {{\n public static {ret_type} {func_name}({params}) {{\n {body}\n }}\n}}" |
| | } |
| |
|
| | |
| | FUNCTION_NAMES: List[str] = ["calculate", "processData", "computeValue", "generateOutput"] |
| | DEFAULT_PARAMS: Dict[str, str] = { |
| | "python": "x: int, y: int", |
| | "javascript": "x, y", |
| | "cpp": "int x, int y", |
| | "java": "int x, int y", |
| | "csharp": "int x, int y" |
| | } |
| | RETURN_TYPES: Dict[str, str] = { |
| | "cpp": "int", |
| | "java": "int", |
| | "csharp": "int", |
| | "python": " -> int", |
| | "javascript": "" |
| | } |
| | DEFAULT_BODY: str = "return x + y;" |
| | |
| | def __init__(self, seed: Optional[int] = None): |
| | """Initialize generator with optional random seed.""" |
| | if seed is not None: |
| | random.seed(seed) |
| |
|
| | def get_supported_languages(self) -> List[str]: |
| | """Return list of supported languages.""" |
| | return list(self.TEMPLATES.keys()) |
| |
|
| | def generate_code( |
| | self, |
| | language: str, |
| | func_name: Optional[str] = None, |
| | params: Optional[str] = None, |
| | body: Optional[str] = None, |
| | ret_type: Optional[str] = None |
| | ) -> Optional[str]: |
| | """ |
| | Generate code for the specified language with customizable components. |
| | |
| | Args: |
| | language: Target programming language |
| | func_name: Optional custom function name |
| | params: Optional custom parameters |
| | body: Optional custom function body |
| | ret_type: Optional custom return type |
| | |
| | Returns: |
| | Generated code string or None if language is unsupported |
| | """ |
| | if language not in self.TEMPLATES: |
| | return None |
| |
|
| | |
| | selected_func_name = func_name or random.choice(self.FUNCTION_NAMES) |
| | selected_params = params or self.DEFAULT_PARAMS.get(language, "") |
| | selected_body = self._normalize_body(body or self.DEFAULT_BODY, language) |
| | selected_ret_type = ret_type or self.RETURN_TYPES.get(language, "") |
| |
|
| | try: |
| | return self.TEMPLATES[language].format( |
| | func_name=selected_func_name, |
| | params=selected_params, |
| | body=selected_body, |
| | ret_type=selected_ret_type |
| | ) |
| | except KeyError as e: |
| | raise ValueError(f"Missing template component: {str(e)}") |
| | except Exception as e: |
| | raise RuntimeError(f"Code generation failed: {str(e)}") |
| |
|
| | def _normalize_body(self, body: str, language: str) -> str: |
| | """Normalize function body based on language requirements.""" |
| | body = body.strip() |
| | if language in {"cpp", "java", "csharp"} and not body.endswith(";"): |
| | return body + ";" |
| | if language == "python": |
| | return body.replace(";", "") |
| | return body |
| |
|
| | def main(): |
| | """Demonstrate code generation for all supported languages.""" |
| | generator = CodeGenerator(seed=42) |
| | |
| | print("Supported languages:", generator.get_supported_languages()) |
| | print("\nGenerated code examples:") |
| | |
| | for lang in generator.get_supported_languages(): |
| | code = generator.generate_code(lang) |
| | print(f"\n{lang.upper()}:\n{code}") |
| |
|
| | if __name__ == "__main__": |
| | main() |