Fast approximation of code diversity using simple metrics Returns diversity score (higher = more diverse)
(self, code1: str, code2: str)
| 2043 | return total_diversity / max(1, comparisons) |
| 2044 | |
| 2045 | def _fast_code_diversity(self, code1: str, code2: str) -> float: |
| 2046 | """ |
| 2047 | Fast approximation of code diversity using simple metrics |
| 2048 | |
| 2049 | Returns diversity score (higher = more diverse) |
| 2050 | """ |
| 2051 | if code1 == code2: |
| 2052 | return 0.0 |
| 2053 | |
| 2054 | # Length difference (scaled to reasonable range) |
| 2055 | len1, len2 = len(code1), len(code2) |
| 2056 | length_diff = abs(len1 - len2) |
| 2057 | |
| 2058 | # Line count difference |
| 2059 | lines1 = code1.count("\n") |
| 2060 | lines2 = code2.count("\n") |
| 2061 | line_diff = abs(lines1 - lines2) |
| 2062 | |
| 2063 | # Simple character set difference |
| 2064 | chars1 = set(code1) |
| 2065 | chars2 = set(code2) |
| 2066 | char_diff = len(chars1.symmetric_difference(chars2)) |
| 2067 | |
| 2068 | # Combine metrics (scaled to match original edit distance range) |
| 2069 | diversity = length_diff * 0.1 + line_diff * 10 + char_diff * 0.5 |
| 2070 | |
| 2071 | return diversity |
| 2072 | |
| 2073 | def _get_cached_diversity(self, program: Program) -> float: |
| 2074 | """ |
no outgoing calls
no test coverage detected