Skip to content

Commit c9f5d6d

Browse files
committed
ArrayRanges: remove duplicate solution, enhance existing solution
1 parent e944b56 commit c9f5d6d

File tree

4 files changed

+27
-102
lines changed

4 files changed

+27
-102
lines changed

src/main/java/by/andd3dfx/common/ArrayRanges.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/**
1111
* <pre>
12-
* Build string with ranges for defined list:
12+
* Build string with ranges for (unsorted) list of natural numbers:
1313
* [1,4,5,2,3,9,8,11,0] => "0-5,8-9,11"
1414
* [1,4,3,2] => "1-4"
1515
* [1,4] => "1,4"
@@ -20,9 +20,17 @@
2020
public class ArrayRanges {
2121

2222
@AllArgsConstructor
23-
public class Range {
23+
public static class Range {
2424
private int left;
2525
private int right;
26+
27+
@Override
28+
public String toString() {
29+
if (left == right) {
30+
return String.valueOf(left);
31+
}
32+
return left + "-" + right;
33+
}
2634
}
2735

2836
public String compact(int[] values) {
@@ -47,12 +55,7 @@ public String compact(int[] values) {
4755
}
4856

4957
return ranges.stream()
50-
.map(range -> {
51-
if (range.left == range.right) {
52-
return String.valueOf(range.left);
53-
}
54-
return range.left + "-" + range.right;
55-
})
58+
.map(Range::toString)
5659
.collect(Collectors.joining(","));
5760
}
5861
}

src/main/java/by/andd3dfx/common/JoinIntervals.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/test/java/by/andd3dfx/common/ArrayRangesTest.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,39 @@ public void setup() {
1414
ranges = new ArrayRanges();
1515
}
1616

17+
@Test
18+
public void compactWhenEmptyList() {
19+
assertThat(ranges.compact(new int[]{}))
20+
.isEqualTo("");
21+
}
22+
1723
@Test
1824
public void compactWhenOneNumber() {
19-
assertThat(ranges.compact(new int[]{1})).isEqualTo("1");
25+
assertThat(ranges.compact(new int[]{1}))
26+
.isEqualTo("1");
2027
}
2128

2229
@Test
2330
public void compactWhenNoIntervals() {
24-
assertThat(ranges.compact(new int[]{1, 4})).isEqualTo("1,4");
31+
assertThat(ranges.compact(new int[]{1, 4}))
32+
.isEqualTo("1,4");
2533
}
2634

2735
@Test
2836
public void compactForOneInterval() {
29-
assertThat(ranges.compact(new int[]{1, 4, 3, 2})).isEqualTo("1-4");
37+
assertThat(ranges.compact(new int[]{1, 4, 3, 2}))
38+
.isEqualTo("1-4");
3039
}
3140

3241
@Test
3342
public void compactForIntervals() {
34-
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 8, 11, 0})).isEqualTo("0-5,8-9,11");
43+
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 8, 11, 0}))
44+
.isEqualTo("0-5,8-9,11");
3545
}
3646

3747
@Test
3848
public void compactForIntervalsWithDuplicates() {
39-
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 5, 8, 2, 11, 0})).isEqualTo("0-5,8-9,11");
49+
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 5, 8, 2, 11, 0}))
50+
.isEqualTo("0-5,8-9,11");
4051
}
4152
}

src/test/java/by/andd3dfx/common/JoinIntervalsTest.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)