diff --git a/serie2/ex3_1/ContainerHelper.class b/serie2/ex3_1/ContainerHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..d0c965dbc67a3561f092803af38a71fb9ff6765c Binary files /dev/null and b/serie2/ex3_1/ContainerHelper.class differ diff --git a/serie2/ex3_1/ContainerHelper.java b/serie2/ex3_1/ContainerHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..143a64ab98fbe8c90789a624aae2e1b892dde3b8 --- /dev/null +++ b/serie2/ex3_1/ContainerHelper.java @@ -0,0 +1,56 @@ +public class ContainerHelper { + + public static void ensurePositiveValue(int val) { + if (val < 0) { + throw new RuntimeException("Value should be greater than or equal to zero\tCurrent value: " + val); + } + } + + public static void ensurePositiveValue(int... vals) { + for (int i : vals) { + ensurePositiveValue(i); + } + } + + public static int[] transfer(int srcQuantity, int dest, int... dests) { + ensurePositiveValue(srcQuantity); + ensurePositiveValue(dest); + ensurePositiveValue(dests); + + int[] res = new int[dests.length + 1]; + + int quantityToTransferDest = Math.min(srcQuantity, dest); + res[0] = quantityToTransferDest; + srcQuantity -= quantityToTransferDest; + + for (int i = 1; i < res.length; i++) { + if (srcQuantity > 0) { + int quantityToTransferDests = Math.min(srcQuantity, dests[i - 1]); + res[i] = quantityToTransferDests; + srcQuantity -= quantityToTransferDests; + } + } + + return res; + } + + public static void main(String[] args) { + int src = 100; + int dest = 10; + int arg1 = 40; + int arg2 = 30; + int arg3 = 50; + + int res[] = transfer(src, dest, arg1, arg2, arg3); + + System.out.print("{"); + for (int i = 0; i < res.length; i++) { + System.out.print(res[i]); + if (i < res.length - 1) { + System.out.print(", "); + } else { + System.out.println("}"); + } + } + } +}