# mickey0521/codility architecture

> Architecture diagram of the GitHub repository mickey0521/codility, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mickey0521/codility
- Repository: https://github.com/mickey0521/codility

## Overview

This repository is a collection of independent Java solutions to Codility lesson problems, rather than a single application. The principal workflow is a caller supplying a problem’s inputs to that problem’s `solution` method and receiving its result; the files do not form a shared runtime pipeline. The graph groups representative solutions by their lesson topics and includes the documented algorithm families. Source sampling confirms implementation details for only some files, so unsampled solutions are represented only at their documented paths, without inferred internal calls.

Main entry points: [`BinaryGap.java`](https://github.com/mickey0521/codility/blob/master/BinaryGap.java) (Binary gap), [`OddOccurrencesInArray.java`](https://github.com/mickey0521/codility/blob/master/OddOccurrencesInArray.java) (Odd occurrences), [`CyclicRotation.java`](https://github.com/mickey0521/codility/blob/master/CyclicRotation.java) (Cyclic rotation), [`FrogJmp.java`](https://github.com/mickey0521/codility/blob/master/FrogJmp.java) (Frog jump)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_arrays_counting["Arrays and Counting"]
  node_binary_gap["Binary gap<br/>[BinaryGap.java]"]
  node_odd_occurrences["Odd occurrences"]
  node_cyclic_rotation["Cyclic rotation"]
  node_frog_jmp["Frog jump<br/>[FrogJmp.java]"]
  node_frog_river["River crossing<br/>[FrogRiverOne.java]"]
  node_missing_integer["Missing integer"]
  node_max_counters["Max counters<br/>[MaxCounters.java]"]
end

subgraph group_prefix_sorting["Prefixes and Sorting"]
  node_genomic_query["Genomic queries"]
  node_passing_cars["Passing cars<br/>[PassingCars.java]"]
  node_min_average["Minimum average"]
  node_distinct_values["Distinct values<br/>[Distinct.java]"]
  node_triangle["Triangle test<br/>[Triangle.java]"]
  node_disc_intersections["Disc intersections"]
end

subgraph group_stacks_leaders["Stacks and Leaders"]
  node_brackets["Brackets<br/>[Brackets.java]"]
  node_fish["Fish survival<br/>[Fish.java]"]
  node_stone_wall["Stone wall<br/>[StoneWall.java]"]
  node_dominator["Dominator<br/>[Dominator.java]"]
  node_equi_leader["Equi leader<br/>[EquiLeader.java]"]
end

subgraph group_number_theory["Number Theory"]
  node_count_factors["Count factors<br/>[CountFactors.java]"]
  node_semiprimes["Count semiprimes"]
  node_nondivisors["Count non-divisors"]
  node_chocolates["Chocolates by numbers"]
end

subgraph group_advanced_algorithms["Advanced Algorithms"]
  node_max_slice["Maximum slice<br/>[MaxSliceSum.java]"]
  node_double_slice["Maximum double slice"]
  node_peaks["Peak blocks<br/>[Peaks.java]"]
  node_ladder["Ladder ways<br/>[Ladder.java]"]
  node_fib_frog["Fibonacci frog<br/>[FibFrog.java]"]
  node_division["Min-max division"]
  node_segments["Nonoverlapping segments"]
  node_distinct_slices["Distinct slices"]
  node_triangles["Count triangles"]
  node_number_solitaire["Number solitaire"]
end

node_caller(("Problem caller"))

node_caller -->|"submits input"| node_binary_gap
node_binary_gap -->|"returns result"| node_caller
node_caller -->|"submits input"| node_odd_occurrences
node_odd_occurrences -->|"returns result"| node_caller
node_caller -->|"submits input"| node_cyclic_rotation
node_cyclic_rotation -->|"returns result"| node_caller
node_caller -->|"submits input"| node_frog_jmp
node_frog_jmp -->|"returns result"| node_caller
node_caller -->|"submits input"| node_frog_river
node_frog_river -->|"returns result"| node_caller
node_caller -->|"submits input"| node_missing_integer
node_missing_integer -->|"returns result"| node_caller
node_caller -->|"submits input"| node_max_counters
node_max_counters -->|"returns result"| node_caller
node_caller -->|"submits input"| node_genomic_query
node_genomic_query -->|"returns result"| node_caller
node_caller -->|"submits input"| node_passing_cars
node_passing_cars -->|"returns result"| node_caller
node_caller -->|"submits input"| node_min_average
node_min_average -->|"returns result"| node_caller
node_caller -->|"submits input"| node_distinct_values
node_distinct_values -->|"returns result"| node_caller
node_caller -->|"submits input"| node_triangle
node_triangle -->|"returns result"| node_caller
node_caller -->|"submits input"| node_disc_intersections
node_disc_intersections -->|"returns result"| node_caller
node_caller -->|"submits input"| node_brackets
node_brackets -->|"returns result"| node_caller
node_caller -->|"submits input"| node_fish
node_fish -->|"returns result"| node_caller
node_caller -->|"submits input"| node_stone_wall
node_stone_wall -->|"returns result"| node_caller
node_caller -->|"submits input"| node_dominator
node_dominator -->|"returns result"| node_caller
node_caller -->|"submits input"| node_equi_leader
node_equi_leader -->|"returns result"| node_caller
node_caller -->|"submits input"| node_count_factors
node_count_factors -->|"returns result"| node_caller
node_caller -->|"submits input"| node_semiprimes
node_semiprimes -->|"returns result"| node_caller
node_caller -->|"submits input"| node_nondivisors
node_nondivisors -->|"returns result"| node_caller
node_caller -->|"submits input"| node_chocolates
node_chocolates -->|"returns result"| node_caller
node_caller -->|"submits input"| node_max_slice
node_max_slice -->|"returns result"| node_caller
node_caller -->|"submits input"| node_double_slice
node_double_slice -->|"returns result"| node_caller

click node_binary_gap "https://github.com/mickey0521/codility/blob/master/BinaryGap.java"
click node_odd_occurrences "https://github.com/mickey0521/codility/blob/master/OddOccurrencesInArray.java"
click node_cyclic_rotation "https://github.com/mickey0521/codility/blob/master/CyclicRotation.java"
click node_frog_jmp "https://github.com/mickey0521/codility/blob/master/FrogJmp.java"
click node_frog_river "https://github.com/mickey0521/codility/blob/master/FrogRiverOne.java"
click node_missing_integer "https://github.com/mickey0521/codility/blob/master/MissingInteger.java"
click node_max_counters "https://github.com/mickey0521/codility/blob/master/MaxCounters.java"
click node_genomic_query "https://github.com/mickey0521/codility/blob/master/GenomicRangeQuery.java"
click node_passing_cars "https://github.com/mickey0521/codility/blob/master/PassingCars.java"
click node_min_average "https://github.com/mickey0521/codility/blob/master/MinAvgTwoSlice.java"
click node_distinct_values "https://github.com/mickey0521/codility/blob/master/Distinct.java"
click node_triangle "https://github.com/mickey0521/codility/blob/master/Triangle.java"
click node_disc_intersections "https://github.com/mickey0521/codility/blob/master/NumberOfDiscIntersections.java"
click node_brackets "https://github.com/mickey0521/codility/blob/master/Brackets.java"
click node_fish "https://github.com/mickey0521/codility/blob/master/Fish.java"
click node_stone_wall "https://github.com/mickey0521/codility/blob/master/StoneWall.java"
click node_dominator "https://github.com/mickey0521/codility/blob/master/Dominator.java"
click node_equi_leader "https://github.com/mickey0521/codility/blob/master/EquiLeader.java"
click node_count_factors "https://github.com/mickey0521/codility/blob/master/CountFactors.java"
click node_semiprimes "https://github.com/mickey0521/codility/blob/master/CountSemiprimes.java"
click node_nondivisors "https://github.com/mickey0521/codility/blob/master/CountNonDivisible.java"
click node_chocolates "https://github.com/mickey0521/codility/blob/master/ChocolatesByNumbers.java"
click node_max_slice "https://github.com/mickey0521/codility/blob/master/MaxSliceSum.java"
click node_double_slice "https://github.com/mickey0521/codility/blob/master/MaxDoubleSliceSum.java"
click node_peaks "https://github.com/mickey0521/codility/blob/master/Peaks.java"
click node_ladder "https://github.com/mickey0521/codility/blob/master/Ladder.java"
click node_fib_frog "https://github.com/mickey0521/codility/blob/master/FibFrog.java"
click node_division "https://github.com/mickey0521/codility/blob/master/MinMaxDivision.java"
click node_segments "https://github.com/mickey0521/codility/blob/master/MaxNonoverlappingSegments.java"
click node_distinct_slices "https://github.com/mickey0521/codility/blob/master/CountDistinctSlices.java"
click node_triangles "https://github.com/mickey0521/codility/blob/master/CountTriangles.java"
click node_number_solitaire "https://github.com/mickey0521/codility/blob/master/NumberSolitaire.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_binary_gap,node_odd_occurrences,node_cyclic_rotation,node_frog_jmp,node_frog_river,node_missing_integer,node_max_counters toneBlue
class node_genomic_query,node_passing_cars,node_min_average,node_distinct_values,node_triangle,node_disc_intersections toneAmber
class node_brackets,node_fish,node_stone_wall,node_dominator,node_equi_leader toneMint
class node_count_factors,node_semiprimes,node_nondivisors,node_chocolates toneRose
class node_max_slice,node_double_slice,node_peaks,node_ladder,node_fib_frog,node_division,node_segments,node_distinct_slices,node_triangles,node_number_solitaire,node_caller toneIndigo
```

## Components

### Arrays and Counting

- [Binary gap](https://github.com/mickey0521/codility/blob/master/BinaryGap.java): `BinaryGap.java`
- [Odd occurrences](https://github.com/mickey0521/codility/blob/master/OddOccurrencesInArray.java): `OddOccurrencesInArray.java`
- [Cyclic rotation](https://github.com/mickey0521/codility/blob/master/CyclicRotation.java): `CyclicRotation.java`
- [Frog jump](https://github.com/mickey0521/codility/blob/master/FrogJmp.java): `FrogJmp.java`
- [River crossing](https://github.com/mickey0521/codility/blob/master/FrogRiverOne.java): `FrogRiverOne.java`
- [Missing integer](https://github.com/mickey0521/codility/blob/master/MissingInteger.java): `MissingInteger.java`
- [Max counters](https://github.com/mickey0521/codility/blob/master/MaxCounters.java): `MaxCounters.java`

### Prefixes and Sorting

- [Genomic queries](https://github.com/mickey0521/codility/blob/master/GenomicRangeQuery.java): `GenomicRangeQuery.java`
- [Passing cars](https://github.com/mickey0521/codility/blob/master/PassingCars.java): `PassingCars.java`
- [Minimum average](https://github.com/mickey0521/codility/blob/master/MinAvgTwoSlice.java): `MinAvgTwoSlice.java`
- [Distinct values](https://github.com/mickey0521/codility/blob/master/Distinct.java): `Distinct.java`
- [Triangle test](https://github.com/mickey0521/codility/blob/master/Triangle.java): `Triangle.java`
- [Disc intersections](https://github.com/mickey0521/codility/blob/master/NumberOfDiscIntersections.java): `NumberOfDiscIntersections.java`

### Stacks and Leaders

- [Brackets](https://github.com/mickey0521/codility/blob/master/Brackets.java): `Brackets.java`
- [Fish survival](https://github.com/mickey0521/codility/blob/master/Fish.java): `Fish.java`
- [Stone wall](https://github.com/mickey0521/codility/blob/master/StoneWall.java): `StoneWall.java`
- [Dominator](https://github.com/mickey0521/codility/blob/master/Dominator.java): `Dominator.java`
- [Equi leader](https://github.com/mickey0521/codility/blob/master/EquiLeader.java): `EquiLeader.java`

### Number Theory

- [Count factors](https://github.com/mickey0521/codility/blob/master/CountFactors.java): `CountFactors.java`
- [Count semiprimes](https://github.com/mickey0521/codility/blob/master/CountSemiprimes.java): `CountSemiprimes.java`
- [Count non-divisors](https://github.com/mickey0521/codility/blob/master/CountNonDivisible.java): `CountNonDivisible.java`
- [Chocolates by numbers](https://github.com/mickey0521/codility/blob/master/ChocolatesByNumbers.java): `ChocolatesByNumbers.java`

### Advanced Algorithms

- [Maximum slice](https://github.com/mickey0521/codility/blob/master/MaxSliceSum.java): `MaxSliceSum.java`
- [Maximum double slice](https://github.com/mickey0521/codility/blob/master/MaxDoubleSliceSum.java): `MaxDoubleSliceSum.java`
- [Peak blocks](https://github.com/mickey0521/codility/blob/master/Peaks.java): `Peaks.java`
- [Ladder ways](https://github.com/mickey0521/codility/blob/master/Ladder.java): `Ladder.java`
- [Fibonacci frog](https://github.com/mickey0521/codility/blob/master/FibFrog.java): `FibFrog.java`
- [Min-max division](https://github.com/mickey0521/codility/blob/master/MinMaxDivision.java): `MinMaxDivision.java`
- [Nonoverlapping segments](https://github.com/mickey0521/codility/blob/master/MaxNonoverlappingSegments.java): `MaxNonoverlappingSegments.java`
- [Distinct slices](https://github.com/mickey0521/codility/blob/master/CountDistinctSlices.java): `CountDistinctSlices.java`
- [Count triangles](https://github.com/mickey0521/codility/blob/master/CountTriangles.java): `CountTriangles.java`
- [Number solitaire](https://github.com/mickey0521/codility/blob/master/NumberSolitaire.java): `NumberSolitaire.java`

### Other components

- **Problem caller**

## Connections

- Problem caller → Binary gap: submits input
- Binary gap → Problem caller: returns result
- Problem caller → Odd occurrences: submits input
- Odd occurrences → Problem caller: returns result
- Problem caller → Cyclic rotation: submits input
- Cyclic rotation → Problem caller: returns result
- Problem caller → Frog jump: submits input
- Frog jump → Problem caller: returns result
- Problem caller → River crossing: submits input
- River crossing → Problem caller: returns result
- Problem caller → Missing integer: submits input
- Missing integer → Problem caller: returns result
- Problem caller → Max counters: submits input
- Max counters → Problem caller: returns result
- Problem caller → Genomic queries: submits input
- Genomic queries → Problem caller: returns result
- Problem caller → Passing cars: submits input
- Passing cars → Problem caller: returns result
- Problem caller → Minimum average: submits input
- Minimum average → Problem caller: returns result
- Problem caller → Distinct values: submits input
- Distinct values → Problem caller: returns result
- Problem caller → Triangle test: submits input
- Triangle test → Problem caller: returns result
- Problem caller → Disc intersections: submits input
- Disc intersections → Problem caller: returns result
- Problem caller → Brackets: submits input
- Brackets → Problem caller: returns result
- Problem caller → Fish survival: submits input
- Fish survival → Problem caller: returns result
- Problem caller → Stone wall: submits input
- Stone wall → Problem caller: returns result
- Problem caller → Dominator: submits input
- Dominator → Problem caller: returns result
- Problem caller → Equi leader: submits input
- Equi leader → Problem caller: returns result
- Problem caller → Count factors: submits input
- Count factors → Problem caller: returns result
- Problem caller → Count semiprimes: submits input
- Count semiprimes → Problem caller: returns result
- Problem caller → Count non-divisors: submits input
- Count non-divisors → Problem caller: returns result
- Problem caller → Chocolates by numbers: submits input
- Chocolates by numbers → Problem caller: returns result
- Problem caller → Maximum slice: submits input
- Maximum slice → Problem caller: returns result
- Problem caller → Maximum double slice: submits input
- Maximum double slice → Problem caller: returns result
