Sample

JetBrains/i5

Human rating uses the original dataset scale.

DatasetJetBrains
Human0.76
Lines14

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett0.0020–1; higher is more readable
75.4Δ 20.3
Scalabrino0.7440–1; higher is more readable
59.3Δ 4.2
Dorn0.6350–1; higher is more readable
75.4Δ 20.3
Mi0.6470–1; higher is more readable
84.7Δ 29.7
LLOC9Logical lines; fewer is more readable
79.2Δ 24.2
DeepSeek V4 Pro17.330–20; mean of three runs
78.8Δ 23.7
GPT-6.1 Sol170–20; mean of three runs
46.2Δ 8.9
BTTF0.5180–1; higher is more readable
70.3Δ 15.3
Human0.760–1; original rating
55.1

Views

Source code

public class Divisors { public static void main(String[] args) { for(int i=1; i<=100; i++) { System.out.print(i+": "); for(int j=1; j<=i; j++) { if(i%j == 0) { System.out.print(j+" "); } } System.out.println(); } } }

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(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.460.123−15.184
Source linesThe number of non-empty source lines.14+5.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.606−5.409

Intercept 8.87 + feature contributions = -6.123 (log-odds).
Score = sigmoid(-6.123) = 0.002.

Score0.744

Feature contributions

FeatureValueContribution
(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.47+1.675
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.153−0.545
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.14+0.541
Indentation frequencyHow rapidly indentation changes from line to line.14−0.253
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.12.771−0.231
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.14+0.1

Intercept 0.07 + feature contributions = 0.552 (log-odds).
Score = sigmoid(0.552) = 0.635.

Score0.647
Score9
Run 1

The code is well-structured with a clear main method and two nested loops: one to iterate through numbers 1–100 and another to find divisors. Nesting is only two levels deep, which is acceptable and not overly complex. The intent is clear — to print each number and its divisors. The code is concise and avoids unnecessary verbosity. Each action is on its own line, and the flow is natural. Minor deductions are due to incomplete formatting (indentation is slightly off) and lack of comments, but overall readability is high.

Run 2

The code is straightforward and follows a clear logical structure: an outer loop iterates numbers 1-100, an inner loop checks divisibility from 1 to i, and prints divisors. Nesting is only two levels deep, maintaining clarity. Intent is obvious—to list divisors of each number. Code length is concise with no redundancy. Each loop and the conditional are on separate lines, supporting one-action-per-line granularity. Reading flow is natural: number, colon, divisors, newline. Minor deductions: missing conventional indentation and lack of braces around loops could reduce readability for some, and using a method to find divisors would separate concerns, but overall it is very readable.

Run 3

The code is highly readable. It has a clear, logical structure with a simple nested loop to print divisors for numbers 1 to 100. Nesting is minimal and justified by the problem. Variables i and j are conventional for loops, and the logic directly mirrors the task. Each action is on its own line, and the reading flow is natural: iterate numbers, print header, find divisors, print each divisor, then newline. The only minor deductions are the absence of a class-level Javadoc or method comment explaining the purpose, and the inline loop condition could slightly benefit from whitespace around operators for modern Java style guides. Overall, it is concise, unambiguous, and easy to follow.

Run 1

Code Structure: The class, main method, and loops are logically organized. Nesting: Two loops and an if statement create moderate nesting, appropriate for the task. Clarity of intent: The class name and divisibility check clearly convey that the program prints divisors for numbers 1 through 100, though descriptive variable names would improve clarity. Code length: The implementation is concise without unnecessary statements. Action granularity: Each statement performs a single clear action; the loop headers use conventional Java syntax. Reading flow: Execution proceeds naturally from printing each number to printing its divisors and ending the line. Inconsistent indentation and cramped operator spacing slightly reduce readability.

Run 2

Code Structure: Logically organized into a class, main method, and loops that print each number and its divisors. Nesting: Three control-flow levels are easy to follow and appropriate for the task. Clarity of intent: The class name and divisibility check make the purpose clear, though descriptive variable names and a named upper limit would help. Code length: Concise, with no unnecessary statements. Action granularity: Each statement performs one clear action, with conventional loop headers. Reading flow: Execution follows a natural sequence from number label to divisors to newline. Inconsistent indentation and tight operator spacing slightly reduce readability.

Run 3

Code Structure: Logically organized as a straightforward loop over numbers with an inner divisor check. Nesting: Three control-flow levels are manageable and appropriate for the task. Clarity of intent: The class name and modulo test clearly convey divisor enumeration, though descriptive variable names would help. Code length: Concise, with no unnecessary statements. Action granularity: Each statement performs one clear action; loop headers use conventional syntax. Reading flow: Execution proceeds naturally from printing a number to listing its divisors and ending the line. Inconsistent indentation and missing spaces around operators slightly reduce readability.