Merge pull request 'refactor: Solution -> Task name' from refactor into master

Reviewed-on: https://hattori.ztsh.eu/stawros/hackerrank/pulls/4
This commit is contained in:
Piotr Dec 2024-03-17 23:27:28 +01:00
commit 1e6c7b52ae
17 changed files with 77 additions and 76 deletions

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures.array_1d;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.Scanner;
@ -7,7 +7,7 @@ import java.util.Scanner;
* Task spec: Java 8 + partially locked editor
* source: https://www.hackerrank.com/challenges/java-1d-array-introduction/problem
*/
public class Solution {
public class Array1D {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures.array_1d;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.Arrays;
import java.util.Scanner;
@ -8,7 +8,7 @@ import java.util.stream.Stream;
/**
* Custom modern class for 1D Array task.
*/
public class CustomSolution {
public class Array1DCustom {
public static void main(String[] args) {
var scan = new Scanner(System.in);

View file

@ -1,9 +1,9 @@
package eu.ztsh.training.hackerrank.datastructures.array_1d_pt2;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public class Array1DPart2 {
public static boolean canWin(int leap, int[] game) {
return move(0, leap, game, new int[]{});

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures.array_2d;
package eu.ztsh.training.hackerrank.datastructures;
import java.io.BufferedReader;
import java.io.IOException;
@ -14,7 +14,7 @@ import java.util.stream.Stream;
* Java 2D Array task.
* source: https://www.hackerrank.com/challenges/java-2d-array/problem
*/
public class Solution {
public class Array2D {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

View file

@ -1,14 +1,12 @@
package eu.ztsh.training.hackerrank.datastructures.comparator;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
/**
* source: <a href="https://www.hackerrank.com/challenges/java-comparator">Java Comparator</a>
*/
class Checker implements Comparator<Player> {
class Checker implements java.util.Comparator<Player> {
@Override
public int compare(Player o1, Player o2) {
@ -19,7 +17,7 @@ class Checker implements Comparator<Player> {
}
// Hackerrank code below (slightly modified)
public class Solution {
public class Comparator {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

View file

@ -1,23 +1,21 @@
package eu.ztsh.training.hackerrank.datastructures.dequeue;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.TreeSet;
/**
* Java Dequeue task.
* source: https://www.hackerrank.com/challenges/java-dequeue/problem
*/
public class Solution {
public class Deque {
public static void main(String[] args) {
var in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
final Deque<Integer> deque = new ArrayDeque<>(m);
final java.util.Deque<Integer> deque = new ArrayDeque<>(m);
var counter = new Counter();
for (int i = 0; i < m; i++) {
var content = in.nextInt();

View file

@ -1,10 +1,9 @@
package eu.ztsh.training.hackerrank.datastructures.priority_queue;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -12,7 +11,7 @@ import java.util.stream.Stream;
class Priorities {
List<Student> getStudents(List<String> events) {
var queue = new PriorityQueue<>(events.size(),
var queue = new java.util.PriorityQueue<>(events.size(),
Comparator.comparingDouble(Student::getCGPA)
.reversed() // CGPA is the only descending here
.thenComparing(Student::getName)
@ -20,8 +19,7 @@ class Priorities {
events.forEach(event -> {
var line = event.split(" ");
switch (line[0]) {
case "ENTER" ->
queue.add(new Student(Integer.parseInt(line[3]), line[1], Double.parseDouble(line[2])));
case "ENTER" -> queue.add(new Student(Integer.parseInt(line[3]), line[1], Double.parseDouble(line[2])));
case "SERVED" -> queue.poll();
default -> throw new IllegalArgumentException();
}
@ -58,7 +56,7 @@ class Student {
}
// https://www.hackerrank.com/challenges/java-priority-queue/problem
public class Solution {
public class PriorityQueue {
public static void main(String[] args) {
int totalEvents = Integer.parseInt(scan.nextLine());
@ -79,6 +77,7 @@ public class Solution {
}
}
}
private static Scanner scan = new Scanner(System.in);
private final static Priorities priorities = new Priorities();

View file

@ -1,19 +1,18 @@
package eu.ztsh.training.hackerrank.datastructures.stack;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.Map;
import java.util.Scanner;
import java.util.Stack;
/**
* Java Stack task.
* source: https://www.hackerrank.com/challenges/java-stack
*/
public class Solution {
public class Stack {
public static void main(String[] args) {
var scanner = new Scanner(System.in);
while (scanner.hasNext()) {
var stack = new Stack<Character>();
var stack = new java.util.Stack<Character>();
var line = scanner.next();
for (char input : line.toCharArray()) {
if (stack.empty()) {

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures.subarray;
package eu.ztsh.training.hackerrank.datastructures;
import java.io.BufferedReader;
import java.io.IOException;
@ -11,7 +11,7 @@ import java.util.stream.IntStream;
* Java Subarray task.
* source: https://www.hackerrank.com/challenges/java-negative-subarray/problem
*/
public class Solution {
public class Subarray {
public static void main(String[] args) throws IOException {
var reader = new BufferedReader(new InputStreamReader(System.in));

View file

@ -1,19 +1,21 @@
package eu.ztsh.training.hackerrank.datastructures.array_1d_pt2;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
class SolutionTest extends HackerRankTest {
@DisplayName("HackerRank challenges: Array 1D, pt.2")
class Array1DPart2Test extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
return new SolutionClassDescription(Array1DPart2.class);
}
@Nested
@ -51,31 +53,31 @@ class SolutionTest extends HackerRankTest {
@Test
public void winningMoveTest() {
assertThat(Solution.isWinningMove(0, 1, 2)).isFalse();
assertThat(Solution.isWinningMove(1, 5, 6)).isTrue();
assertThat(Array1DPart2.isWinningMove(0, 1, 2)).isFalse();
assertThat(Array1DPart2.isWinningMove(1, 5, 6)).isTrue();
}
@Test
public void moveForwardTest() {
var game = new int[]{0, 0, 1};
assertThat(Solution.canMoveForward(0, game)).isTrue();
assertThat(Solution.canMoveForward(1, game)).isFalse();
assertThat(Array1DPart2.canMoveForward(0, game)).isTrue();
assertThat(Array1DPart2.canMoveForward(1, game)).isFalse();
}
@Test
public void moveBackwardTest() {
var game = new int[]{0, 1, 0, 0, 1};
assertThat(Solution.canMoveBackward(0, game)).isFalse();
assertThat(Solution.canMoveBackward(3, game)).isTrue();
assertThat(Solution.canMoveBackward(2, game)).isFalse();
assertThat(Array1DPart2.canMoveBackward(0, game)).isFalse();
assertThat(Array1DPart2.canMoveBackward(3, game)).isTrue();
assertThat(Array1DPart2.canMoveBackward(2, game)).isFalse();
}
@Test
public void jumpTest() {
var game = new int[]{0, 0, 1, 1, 1, 0};
assertThat(Solution.canJump(0, 3, game)).isFalse();
assertThat(Solution.canJump(1, 3, game)).isFalse();
assertThat(Solution.canJump(1, 4, game)).isTrue();
assertThat(Array1DPart2.canJump(0, 3, game)).isFalse();
assertThat(Array1DPart2.canJump(1, 3, game)).isFalse();
assertThat(Array1DPart2.canJump(1, 4, game)).isTrue();
}
}

View file

@ -1,6 +1,7 @@
package eu.ztsh.training.hackerrank.datastructures.array_1d;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
@ -8,27 +9,31 @@ import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@DisplayName("HackerRank challenges: Java 1D Array")
class SolutionTest {
class Array1DTest {
@Nested
@DisplayName("Original Solution class")
class OriginalSolutionTest extends Array1DTest {
class OriginalArray1DTest extends AbstractArray1DTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
return new SolutionClassDescription(Array1D.class);
}
}
@Nested
@DisplayName("Custom Solution class")
class CustomSolutionTest extends Array1DTest {
class CustomArray1DTest extends AbstractArray1DTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(CustomSolution.class);
}
return new SolutionClassDescription(Array1DCustom.class);
}
abstract static class Array1DTest extends HackerRankTest {
}
abstract static class AbstractArray1DTest extends HackerRankTest {
@Test
public void testCase0() {

View file

@ -1,6 +1,7 @@
package eu.ztsh.training.hackerrank.datastructures.array_2d;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
@ -9,7 +10,7 @@ import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@DisplayName("HackerRank challenges: Java 2D Array")
class SolutionTest extends HackerRankTest {
class Array2DTest extends HackerRankTest {
@Test
public void dummyInitTest() {
@ -61,10 +62,9 @@ class SolutionTest extends HackerRankTest {
);
}
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
return new SolutionClassDescription(Array2D.class);
}
}

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures.comparator;
package eu.ztsh.training.hackerrank.datastructures;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
@ -8,7 +8,7 @@ import org.junit.jupiter.api.Test;
import java.util.List;
@DisplayName("HackerRank challenges: Java Comparator")
class SolutionTest extends HackerRankTest {
class ComparatorTest extends HackerRankTest {
@Test
public void testCase0() {
@ -33,7 +33,7 @@ class SolutionTest extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
return new SolutionClassDescription(Comparator.class);
}
}

View file

@ -1,13 +1,14 @@
package eu.ztsh.training.hackerrank.datastructures.dequeue;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@DisplayName("HackerRank challenges: Java Dequeue")
class SolutionTest extends HackerRankTest {
class DequeTest extends HackerRankTest {
@Test
public void testCase0() {
@ -33,7 +34,7 @@ class SolutionTest extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
return new SolutionClassDescription(Deque.class);
}
}

View file

@ -1,14 +1,15 @@
package eu.ztsh.training.hackerrank.datastructures.priority_queue;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import eu.ztsh.training.hackerrank.SolutionClassDescription.FieldModifier;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.util.List;
@DisplayName("HackerRank challenges: Java Priority Queue")
class SolutionTest extends HackerRankTest {
class PriorityQueueTest extends HackerRankTest {
@Test
public void testCase0() {
@ -36,10 +37,9 @@ class SolutionTest extends HackerRankTest {
simpleAssert(input, expected);
}
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class,
return new SolutionClassDescription(PriorityQueue.class,
"scan",
new FieldModifier[]{FieldModifier.PRIVATE, FieldModifier.STATIC});
}

View file

@ -1,13 +1,14 @@
package eu.ztsh.training.hackerrank.datastructures.stack;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.util.List;
@DisplayName("HackerRank challenges: Java Stack")
class SolutionTest extends HackerRankTest {
class StackTest extends HackerRankTest {
@Test
public void testCase0() {
@ -61,7 +62,7 @@ class SolutionTest extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
return new SolutionClassDescription(Stack.class);
}
}

View file

@ -1,15 +1,14 @@
package eu.ztsh.training.hackerrank.datastructures.subarray;
package eu.ztsh.training.hackerrank.datastructures;
import java.util.List;
import eu.ztsh.training.hackerrank.HackerRankTest;
import eu.ztsh.training.hackerrank.SolutionClassDescription;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
@DisplayName("HackerRank challenges: Java Subarray")
class SolutionTest extends HackerRankTest {
class SubarrayTest extends HackerRankTest {
@Test
public void testCase0() {
@ -19,10 +18,9 @@ class SolutionTest extends HackerRankTest {
);
}
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Solution.class);
return new SolutionClassDescription(Subarray.class);
}
}