Compare commits

..

No commits in common. "1e6c7b52ae59888907c21444211e673f171aa05d" and "f819b19c932744cc44c3759a0a6c91603ec5bb54" have entirely different histories.

17 changed files with 76 additions and 77 deletions

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.array_1d;
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 Array1DCustom {
public class CustomSolution {
public static void main(String[] args) {
var scan = new Scanner(System.in);

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.array_1d;
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 Array1D {
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

View file

@ -1,9 +1,9 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.array_1d_pt2;
import java.util.Arrays;
import java.util.Scanner;
public class Array1DPart2 {
public class Solution {
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;
package eu.ztsh.training.hackerrank.datastructures.array_2d;
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 Array2D {
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

View file

@ -1,12 +1,14 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.comparator;
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 java.util.Comparator<Player> {
class Checker implements Comparator<Player> {
@Override
public int compare(Player o1, Player o2) {
@ -17,7 +19,7 @@ class Checker implements java.util.Comparator<Player> {
}
// Hackerrank code below (slightly modified)
public class Comparator {
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

View file

@ -1,21 +1,23 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.dequeue;
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 Deque {
public class Solution {
public static void main(String[] args) {
var in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
final java.util.Deque<Integer> deque = new ArrayDeque<>(m);
final Deque<Integer> deque = new ArrayDeque<>(m);
var counter = new Counter();
for (int i = 0; i < m; i++) {
var content = in.nextInt();

View file

@ -1,9 +1,10 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.priority_queue;
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;
@ -11,7 +12,7 @@ import java.util.stream.Stream;
class Priorities {
List<Student> getStudents(List<String> events) {
var queue = new java.util.PriorityQueue<>(events.size(),
var queue = new PriorityQueue<>(events.size(),
Comparator.comparingDouble(Student::getCGPA)
.reversed() // CGPA is the only descending here
.thenComparing(Student::getName)
@ -19,7 +20,8 @@ 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();
}
@ -56,7 +58,7 @@ class Student {
}
// https://www.hackerrank.com/challenges/java-priority-queue/problem
public class PriorityQueue {
public class Solution {
public static void main(String[] args) {
int totalEvents = Integer.parseInt(scan.nextLine());
@ -77,7 +79,6 @@ public class PriorityQueue {
}
}
}
private static Scanner scan = new Scanner(System.in);
private final static Priorities priorities = new Priorities();

View file

@ -1,18 +1,19 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.stack;
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 Stack {
public class Solution {
public static void main(String[] args) {
var scanner = new Scanner(System.in);
while (scanner.hasNext()) {
var stack = new java.util.Stack<Character>();
var stack = new 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;
package eu.ztsh.training.hackerrank.datastructures.subarray;
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 Subarray {
public class Solution {
public static void main(String[] args) throws IOException {
var reader = new BufferedReader(new InputStreamReader(System.in));

View file

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

View file

@ -1,21 +1,19 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.array_1d_pt2;
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;
@DisplayName("HackerRank challenges: Array 1D, pt.2")
class Array1DPart2Test extends HackerRankTest {
class SolutionTest extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Array1DPart2.class);
return new SolutionClassDescription(Solution.class);
}
@Nested
@ -53,31 +51,31 @@ class Array1DPart2Test extends HackerRankTest {
@Test
public void winningMoveTest() {
assertThat(Array1DPart2.isWinningMove(0, 1, 2)).isFalse();
assertThat(Array1DPart2.isWinningMove(1, 5, 6)).isTrue();
assertThat(Solution.isWinningMove(0, 1, 2)).isFalse();
assertThat(Solution.isWinningMove(1, 5, 6)).isTrue();
}
@Test
public void moveForwardTest() {
var game = new int[]{0, 0, 1};
assertThat(Array1DPart2.canMoveForward(0, game)).isTrue();
assertThat(Array1DPart2.canMoveForward(1, game)).isFalse();
assertThat(Solution.canMoveForward(0, game)).isTrue();
assertThat(Solution.canMoveForward(1, game)).isFalse();
}
@Test
public void moveBackwardTest() {
var game = new int[]{0, 1, 0, 0, 1};
assertThat(Array1DPart2.canMoveBackward(0, game)).isFalse();
assertThat(Array1DPart2.canMoveBackward(3, game)).isTrue();
assertThat(Array1DPart2.canMoveBackward(2, game)).isFalse();
assertThat(Solution.canMoveBackward(0, game)).isFalse();
assertThat(Solution.canMoveBackward(3, game)).isTrue();
assertThat(Solution.canMoveBackward(2, game)).isFalse();
}
@Test
public void jumpTest() {
var game = new int[]{0, 0, 1, 1, 1, 0};
assertThat(Array1DPart2.canJump(0, 3, game)).isFalse();
assertThat(Array1DPart2.canJump(1, 3, game)).isFalse();
assertThat(Array1DPart2.canJump(1, 4, game)).isTrue();
assertThat(Solution.canJump(0, 3, game)).isFalse();
assertThat(Solution.canJump(1, 3, game)).isFalse();
assertThat(Solution.canJump(1, 4, game)).isTrue();
}
}

View file

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

View file

@ -1,4 +1,4 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.comparator;
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 ComparatorTest extends HackerRankTest {
class SolutionTest extends HackerRankTest {
@Test
public void testCase0() {
@ -33,7 +33,7 @@ class ComparatorTest extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Comparator.class);
return new SolutionClassDescription(Solution.class);
}
}

View file

@ -1,14 +1,13 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.dequeue;
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 DequeTest extends HackerRankTest {
class SolutionTest extends HackerRankTest {
@Test
public void testCase0() {
@ -34,7 +33,7 @@ class DequeTest extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Deque.class);
return new SolutionClassDescription(Solution.class);
}
}

View file

@ -1,15 +1,14 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.priority_queue;
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 PriorityQueueTest extends HackerRankTest {
class SolutionTest extends HackerRankTest {
@Test
public void testCase0() {
@ -37,9 +36,10 @@ class PriorityQueueTest extends HackerRankTest {
simpleAssert(input, expected);
}
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(PriorityQueue.class,
return new SolutionClassDescription(Solution.class,
"scan",
new FieldModifier[]{FieldModifier.PRIVATE, FieldModifier.STATIC});
}

View file

@ -1,14 +1,13 @@
package eu.ztsh.training.hackerrank.datastructures;
package eu.ztsh.training.hackerrank.datastructures.stack;
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 StackTest extends HackerRankTest {
class SolutionTest extends HackerRankTest {
@Test
public void testCase0() {
@ -62,7 +61,7 @@ class StackTest extends HackerRankTest {
@Override
protected SolutionClassDescription getSolutionClassDescription() {
return new SolutionClassDescription(Stack.class);
return new SolutionClassDescription(Solution.class);
}
}

View file

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