From 07b429af74ec30af14cebd28ad0ed15f3f92ebda Mon Sep 17 00:00:00 2001 From: "Capt. Cutlass" <5120290+ParanoidUser@users.noreply.github.com> Date: Thu, 19 Jun 2025 11:02:44 -0400 Subject: [PATCH] refactor: revise obsolete solution logic Return zero-size array with directions for empty input path. --- kata/6-kyu/shorter-path/main/ShortestPath.java | 4 ++-- kata/6-kyu/shorter-path/test/DirectionsTest.java | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/kata/6-kyu/shorter-path/main/ShortestPath.java b/kata/6-kyu/shorter-path/main/ShortestPath.java index f0b737e41..e8d84d024 100644 --- a/kata/6-kyu/shorter-path/main/ShortestPath.java +++ b/kata/6-kyu/shorter-path/main/ShortestPath.java @@ -8,9 +8,9 @@ static String[] directions(String[] goal) { var stats = of(goal).collect(groupingBy(identity(), counting())); int y = (int) (stats.getOrDefault("N", 0L) - stats.getOrDefault("S", 0L)); int x = (int) (stats.getOrDefault("E", 0L) - stats.getOrDefault("W", 0L)); - return ( + return x != 0 || y != 0 ? ( "N".repeat(Math.max(0, y)) + "S".repeat(Math.max(0, -y)) + "E".repeat(Math.max(0, x)) + "W".repeat(Math.max(0, -x)) - ).split(""); + ).split("") : new String[0]; } } \ No newline at end of file diff --git a/kata/6-kyu/shorter-path/test/DirectionsTest.java b/kata/6-kyu/shorter-path/test/DirectionsTest.java index f2ef4b5ae..623b5fdcd 100644 --- a/kata/6-kyu/shorter-path/test/DirectionsTest.java +++ b/kata/6-kyu/shorter-path/test/DirectionsTest.java @@ -7,10 +7,15 @@ class DirectionsTest { @ParameterizedTest @CsvSource(textBlock = """ NNNNNENN, NNNNNNNE + SSNEWNWSE, S SSNEWSN, S NWSE,'' + N, N + '', '' """) void sample(String path, String shortest) { - assertArrayEquals(shortest.split(""), ShortestPath.directions(path.split(""))); + String[] goal = path.isEmpty() ? new String[0] : path.split(""); + String[] expected = shortest.isEmpty() ? new String[0] : shortest.split(""); + assertArrayEquals(expected, ShortestPath.directions(goal)); } } \ No newline at end of file