Skip to content
Snippets Groups Projects
Select Git revision
  • 4eb78cdfdfa99afc07bc892a78d30c943a51df5f
  • main default protected
2 results

ContainerHelper.java

Blame
  • user avatar
    iliya authored
    4eb78cdf
    History
    ContainerHelper.java 1.57 KiB
    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("}");
                }
            }
        }
    }