From 4eb78cdfdfa99afc07bc892a78d30c943a51df5f Mon Sep 17 00:00:00 2001
From: iliya <iliya.saroukha@hes-so.ch>
Date: Fri, 13 Oct 2023 15:14:48 +0200
Subject: [PATCH] feat: ex3 serie2 finished

---
 serie2/ex3/.gitignore           |  1 +
 serie2/ex3/ContainerHelper.java | 56 +++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+)
 create mode 100644 serie2/ex3/.gitignore
 create mode 100644 serie2/ex3/ContainerHelper.java

diff --git a/serie2/ex3/.gitignore b/serie2/ex3/.gitignore
new file mode 100644
index 0000000..6b468b6
--- /dev/null
+++ b/serie2/ex3/.gitignore
@@ -0,0 +1 @@
+*.class
diff --git a/serie2/ex3/ContainerHelper.java b/serie2/ex3/ContainerHelper.java
new file mode 100644
index 0000000..143a64a
--- /dev/null
+++ b/serie2/ex3/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("}");
+            }
+        }
+    }
+}
-- 
GitLab