Sample

JetBrains/e12

Human rating uses the original dataset scale.

DatasetJetBrains
Human1
Lines39

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
31.4Δ 67.4
Scalabrino0.7930–1; higher is more readable
70.3Δ 28.4
Dorn0.0940–1; higher is more readable
6.8Δ 91.9
Mi0.2650–1; higher is more readable
19.5Δ 79.2
LLOC23Logical lines; fewer is more readable
14.8Δ 83.9
DeepSeek V4 Pro18.330–20; mean of three runs
97.9Δ 0.8
GPT-6.1 Sol190–20; mean of three runs
96.2Δ 2.5
BTTF0.4720–1; higher is more readable
55.9Δ 42.8
Human10–1; original rating
98.7

Views

Source code

public class EmirpFinder { public static boolean isPrime(int number) { if (number <= 1) { return false; } for (int i = 2; i <= Math.sqrt(number); i++) { if (number % i == 0) { return false; } } return true; } public static int reverseNumber(int number) { int reversedNumber = 0; while (number != 0) { int digit = number % 10; reversedNumber = reversedNumber * 10 + digit; number /= 10; } return reversedNumber; } public static boolean isEmirp(int number) { int reversedNumber = reverseNumber(number); return isPrime(number) && isPrime(reversedNumber) && number != reversedNumber; } public static void main(String[] args) { for (int i = 1; i <= 10000; i++) { if (isEmirp(i)) { System.out.println(i); } } } }

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.1060.744−35.005
Source linesThe number of non-empty source lines.39+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.982−5.973

Intercept 8.87 + feature contributions = -16.508 (log-odds).
Score = sigmoid(-16.508) = 0.

Score0.793

Feature contributions

FeatureValueContribution
(log-odds)
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
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.39−0.474
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.39−0.345
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.113−0.156
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.37.575+0.115
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.85.846+0.029

Intercept 0.07 + feature contributions = -2.267 (log-odds).
Score = sigmoid(-2.267) = 0.094.

Score0.265
Score23
Run 1

The code is well-structured with clear separation of concerns: isPrime, reverseNumber, and isEmirp each handle a single responsibility. Nesting is minimal, with only one level of indentation in loops and conditionals. Intent is clear from method names and the logic is straightforward. Code length is appropriate—no unnecessary boilerplate or redundant code. Each action appears on its own line, making it easy to follow step-by-step. The reading flow is natural: utility methods are defined before use, and main is placed last. Minor points deducted for lack of comments (though not required) and the 10000 limit being hardcoded, but overall this is highly readable.

Run 2

The code is well-structured with clear separation of concerns: each method handles a single task (prime checking, digit reversal, Emirp validation). Nesting is minimal, with only one level in loops and conditionals. Intent is explicit in method names and the logic is straightforward: an Emirp is defined as a prime that differs from its reversal and has a prime reversal. The code is concise without sacrificing clarity, and each action is on its own line, making it easy to follow. The reading flow is natural—prime logic, reversal logic, emirp logic, then a simple main loop. A minor potential improvement would be handling negative numbers more explicitly in isPrime, but overall it is highly readable.

Run 3

The code is nearly flawless in readability. It has a clear, logical structure with separate methods for each distinct responsibility (prime checking, reversing, emirp validation). Nesting is minimal and never exceeds two levels. Each method name clearly communicates its intent, and the logic is straightforward. The code length is appropriate without unnecessary verbosity. Each line performs a single action, enhancing clarity. The reading flow is natural, moving from helper methods to the main algorithm. The only minor points are the lack of comments (though the code is self-documenting) and the repeated isPrime call in isEmirp, but neither meaningfully harms readability.

Run 1

Code Structure: Well-organized methods separate primality testing, digit reversal, emirp classification, and output. Nesting: Shallow loops and conditionals, with early returns keeping control flow simple. Clarity of intent: Descriptive class and method names make the purpose clear; the emirp condition is explicit, though a brief definition could help unfamiliar readers. Code length: Concise without unnecessary abstraction or repetition. Action granularity: Each statement performs a focused action; the combined boolean expression naturally represents one classification rule. Reading flow: Consistent formatting and helper methods preceding their callers support straightforward reading. Minor readability improvements include naming the upper bound instead of using the literal 10000 and clarifying the loop variable in main.

Run 2

Code Structure: Well-organized methods separate primality testing, digit reversal, emirp detection, and output. Nesting: Shallow loops and conditionals, with early returns keeping control flow simple. Clarity of intent: Descriptive class, method, and variable names make the purpose clear; the emirp predicate directly expresses its conditions. Code length: Concise without sacrificing understandable intermediate steps. Action granularity: Each statement performs a distinct operation, and the combined boolean expression remains readable. Reading flow: Consistent formatting and a natural progression from helper methods to detection and execution make the code easy to follow. Minor improvement: Replace the unexplained upper bound of 10000 with a named constant.

Run 3

Code Structure: Clearly separated methods handle primality, digit reversal, emirp detection, and output. Nesting: Shallow loop-and-condition nesting keeps each method easy to follow. Clarity of intent: Descriptive class, method, and variable names communicate purpose; a brief definition of emirp would help readers unfamiliar with the term. Code length: Concise, with no unnecessary duplication or boilerplate. Action granularity: Each statement performs one focused operation; the combined boolean expression naturally expresses the emirp criteria. Reading flow: Consistent formatting and helper methods preceding main support a logical progression. The hard-coded upper bound of 10000 could be named to clarify its role.