Skip to content

Commit

Permalink
Refactor EggDropping.java to improve readability and performance
Browse files Browse the repository at this point in the history
  • Loading branch information
manishraj27 committed Oct 30, 2024
1 parent 27deddc commit a469160
Showing 1 changed file with 37 additions and 13 deletions.
50 changes: 37 additions & 13 deletions src/main/java/com/thealgorithms/dynamicprogramming/EggDropping.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.thealgorithms.dynamicprogramming;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.junit.jupiter.api.Test;

/**
* Dynamic Programming solution for the Egg Dropping Puzzle
* The problem is to find the minimum number of attempts needed in the worst case to find the critical
Expand Down Expand Up @@ -60,18 +65,37 @@ public static int minTrials(int eggs, int floors) {
return dp[eggs][floors];
}

/**
* Example usage
*/
public static void main(String[] args) {
try {
// Example: 2 eggs and 4 floors
System.out.println("Minimum number of trials in worst case with 2 eggs and 4 floors: " + minTrials(2, 4));

// Additional test case
System.out.println("Minimum number of trials in worst case with 3 eggs and 5 floors: " + minTrials(3, 5));
} catch (IllegalArgumentException e) {
System.err.println("Error: " + e.getMessage());
}
@Test
void testBasicScenarios() {
// Test with 2 eggs and 4 floors
assertEquals(3, minTrials(2, 4));

// Test with 3 eggs and 5 floors
assertEquals(3, minTrials(3, 5));
}

@Test
void testEdgeCases() {
// Test with single egg
assertEquals(0, minTrials(1, 0));
assertEquals(1, minTrials(1, 1));
assertEquals(2, minTrials(1, 2));

// Test with multiple eggs but minimal floors
assertEquals(0, minTrials(2, 0));
assertEquals(1, minTrials(3, 1));
}

@Test
void testLargeInputs() {
assertEquals(4, minTrials(3, 10));
assertEquals(7, minTrials(2, 36));
}

@Test
void testInvalidInputs() {
assertThrows(IllegalArgumentException.class, () -> minTrials(0, 5));
assertThrows(IllegalArgumentException.class, () -> minTrials(-1, 5));
assertThrows(IllegalArgumentException.class, () -> minTrials(2, -1));
}
}

0 comments on commit a469160

Please sign in to comment.