From d1ba05c3dd13520ea2d6f85b65b8fef45716bfef Mon Sep 17 00:00:00 2001 From: Andrei Ovcharenko Date: Sat, 1 Aug 2026 04:51:42 +0300 Subject: [PATCH] Reject overflowing digit recompositions --- src/main/java/kyu7/DescendingOrder.java | 6 +++--- src/main/java/kyu7/MinimumLine.java | 7 +++++-- src/test/java/kyu7/DescendingOrderTest.java | 5 +++++ src/test/java/kyu7/MinimumLineTest.java | 7 +++++++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/kyu7/DescendingOrder.java b/src/main/java/kyu7/DescendingOrder.java index f896398..46137e9 100644 --- a/src/main/java/kyu7/DescendingOrder.java +++ b/src/main/java/kyu7/DescendingOrder.java @@ -18,12 +18,12 @@ public static int sortDesc(int num) { arrayList.add(i); } arrayList.sort(Comparator.reverseOrder()); - int result = 0; + StringBuilder result = new StringBuilder(); for (int i : arrayList ) { - result = result * 10 + i; + result.append(i); } - return result; + return Integer.parseInt(result.toString()); } } diff --git a/src/main/java/kyu7/MinimumLine.java b/src/main/java/kyu7/MinimumLine.java index 8deee48..4c10193 100644 --- a/src/main/java/kyu7/MinimumLine.java +++ b/src/main/java/kyu7/MinimumLine.java @@ -2,6 +2,7 @@ import java.util.Arrays; +import java.util.stream.Collectors; public class MinimumLine { @@ -9,10 +10,12 @@ public class MinimumLine { // 7 https://www.codewars.com/kata/5ac6932b2f317b96980000ca/train/java public static int minValue(int[] values) { - return Arrays.stream(values) + String result = Arrays.stream(values) .sorted() .distinct() - .reduce(0, (result, digit) -> result * 10 + digit); + .mapToObj(String::valueOf) + .collect(Collectors.joining()); + return Integer.parseInt(result); } } diff --git a/src/test/java/kyu7/DescendingOrderTest.java b/src/test/java/kyu7/DescendingOrderTest.java index 3c94032..5afddd7 100644 --- a/src/test/java/kyu7/DescendingOrderTest.java +++ b/src/test/java/kyu7/DescendingOrderTest.java @@ -17,6 +17,11 @@ import static kyu7.DescendingOrder.*; @Tag("smoke") public class DescendingOrderTest { + @Test + void rejectsReorderedValuesOutsideIntegerRange() { + assertThrows(NumberFormatException.class, () -> sortDesc(2_147_483_647)); + } + @Test void smokeTestsShouldExecuteApi() { quality.SmokeMethodTestHarness.verify(kyu7.DescendingOrder.class); diff --git a/src/test/java/kyu7/MinimumLineTest.java b/src/test/java/kyu7/MinimumLineTest.java index 7572493..c2f0007 100644 --- a/src/test/java/kyu7/MinimumLineTest.java +++ b/src/test/java/kyu7/MinimumLineTest.java @@ -17,6 +17,13 @@ import static kyu7.MinimumLine.*; @Tag("smoke") public class MinimumLineTest { + @Test + void rejectsConcatenatedValuesOutsideIntegerRange() { + int[] values = {9, 8, 7, 6, 5, 4, 3, 2, 1, 99}; + + assertThrows(NumberFormatException.class, () -> minValue(values)); + } + @Test void smokeTestsShouldExecuteApi() { quality.SmokeMethodTestHarness.verify(kyu7.MinimumLine.class);