Sample
JetBrains/e11
Human rating uses the original dataset scale.
Scores
| Method | Score | Scale | Dataset rank (0–100) |
|---|---|---|---|
| Posnett | 0.005 | 0–1; higher is more readable | 82.2Δ 68.2 |
| Scalabrino | 0.819 | 0–1; higher is more readable | 78.0Δ 64.0 |
| Dorn | 0.65 | 0–1; higher is more readable | 77.1Δ 63.1 |
| Mi | 0.639 | 0–1; higher is more readable | 81.4Δ 67.4 |
| LLOC | 10 | Logical lines; fewer is more readable | 72.9Δ 58.9 |
| DeepSeek V4 Pro | 17.67 | 0–20; mean of three runs | 88.6Δ 74.6 |
| GPT-6.1 Sol | 18 | 0–20; mean of three runs | 77.5Δ 63.6 |
| BTTF | 0.554 | 0–1; higher is more readable | 81.4Δ 67.4 |
| Human | 0.45 | 0–1; original rating | 14.0 |
Views
Loading feature diagnosis…
Source regions
Feature contributions
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones. | 453.222 | −14.956 |
| Source linesThe number of non-empty source lines. | 15 | +6 |
| Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value. | 3.54 | −5.31 |
Intercept 8.87 + feature contributions = -5.396 (log-odds).
Score = sigmoid(-5.396) = 0.005.
| Score | 0.819 |
|---|
Feature contributions
| Feature | Value | Contribution (log-odds) |
|---|---|---|
| Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names. | 45.933 | +1.72 |
| Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code. | 1 | +1.001 |
| Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right. | 0 | −0.804 |
| Indentation frequencyHow rapidly indentation changes from line to line. | 1 | −0.703 |
| Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *. | 0.151 | −0.525 |
| Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom. | 13.894 | −0.216 |
| Number layout frequencyHow rapidly the number of numeric values per line changes through the code. | 15 | +0.077 |
Intercept 0.07 + feature contributions = 0.619 (log-odds).
Score = sigmoid(0.619) = 0.65.
| Score | 0.639 |
|---|
| Score | 10 |
|---|
Run 1
The code is highly readable due to its clear and straightforward structure. It uses simple nested loops to identify abundant numbers from 1 to 1000. The outer loop iterates the range, while the inner loop calculates the sum of proper divisors by checking up to i/2, which is an efficient and logical bound. Each line performs a single action, and the conditionals are flat with only one level of nesting. Variable names like 'i', 'j', and 'sum' are concise and their purpose is clear from context. The logic flows naturally: iterate, accumulate, compare, print. There is no unnecessary complexity or redundant code. The only minor deduction is that the class name 'AbundantNumbers' accurately reflects the problem, but the absence of comments or explanatory text might leave a beginner less certain about the definition of an abundant number; however, the logic itself is self-evident from the code.
Run 2
The code is concise and logically structured to find abundant numbers. It uses a straightforward nested loop: an outer loop to iterate numbers and an inner loop to sum proper divisors up to half the number. Nesting is shallow (2 levels), and each line performs a single clear action. Variable names like 'i', 'j', and 'sum' are conventional for loops but could be more descriptive (e.g., 'number', 'divisor'). The intent is clear from the logic, but a comment or method extraction (e.g., 'isAbundant') would improve readability. The reading flow is natural: generate, calculate, compare, print. Overall, it is highly readable for a small algorithm, but slightly less self-documenting than possible.
Run 3
The code is highly readable. It has a clear, logical structure: a simple outer loop over the range, an inner loop to sum proper divisors, and a final condition to print abundant numbers. Nesting is minimal (two levels), and each level has a distinct purpose. Variable names (i, j, sum) are short but appropriate for local loop counters and a running total. The intent is evident without comments—finding numbers whose proper divisor sum exceeds the number. Code length is concise for the task, avoiding unnecessary methods or classes. Action granularity is excellent: each line performs one clear operation. The reading flow is natural, progressing from initialization to divisor summation to output. The only minor issue is using i/2 as the divisor bound; it’s correct for proper divisors but slightly less intuitive than sqrt(i), though this does not significantly hurt clarity.
Run 1
Code Structure: Logically organized, with divisor summation followed by the abundance check. Nesting: Moderate nesting from two loops and an if statement, but each block is short and easy to follow. Clarity of intent: The class name and sum comparison clearly convey the purpose; more descriptive names than i and j would improve clarity. Code length: Concise, with no unnecessary code. Action granularity: Each statement performs one clear action. Reading flow: Natural progression from candidate selection to divisor testing, summation, and output. Minor improvements include consistent spacing around i / 2 and naming the upper limit.
Run 2
Code Structure: Logically organized, with divisor summation followed by the abundance check. Nesting: Moderate nesting from two loops and a conditional, appropriate for this straightforward algorithm. Clarity of intent: The class name and sum comparison communicate the purpose, though descriptive names instead of i and j would help. Code length: Concise without unnecessary statements. Action granularity: Each statement performs a single clear action; loop headers use conventional syntax. Reading flow: Natural top-to-bottom progression with consistent indentation. A named upper-bound constant and spacing around i / 2 would slightly improve readability.
Run 3
Code Structure: Logically organized, with divisor summation followed by the abundance check. Nesting: Moderate nesting from two loops and a conditional, but each block is short and easy to follow. Clarity of intent: The class name and sum comparison make the purpose clear, although descriptive names such as number and divisor would improve on i and j. Code length: Concise, without unnecessary statements. Action granularity: Each statement performs one clear action; loop headers use standard Java conventions. Reading flow: Natural top-to-bottom progression with consistent indentation. Minor improvements include spacing around i / 2 and naming the upper limit instead of using the literal 1000.