Printer [source code]


public class Printer {    
    static String array(Object[] ar) {
        StringBuilder sb = new StringBuilder();
        for (Object i : ar) sb.append(i + " ");
        return sb.toString();
    }

    static String buckets(int[] counts, int default_count) {
        StringBuilder sb = new StringBuilder ();
        for (int i = 0; i < counts.length; i++) {
            if (counts[i] != default_count)
                sb.append (String.format ("%d=%d ", i, counts[i]));
        }
        return sb.toString ();
    }

    static String buckets(int[][] counts, int default_count) {
        StringBuilder sb = new StringBuilder ();
        for (int i = 0; i < counts.length; i++) {
            int old_len = sb.length ();
            for (int j = 0; j < counts[0].length; j++) {
                if (counts[i][j] != default_count)
                    sb.append (String.format ("(%d, %d)=%d ", i, j, counts[i][j]));
            }
            if (sb.length () > old_len && i < counts.length - 1)
                sb.append ("\n");
        }
        return sb.toString ();
    }

    static String buckets(int[] counts) {
        return buckets (counts, 0);
    }

    static String array(int[] ar) {
        StringBuilder sb = new StringBuilder();
        for (int i : ar) sb.append(i + " ");
        return sb.toString();
    }

    static String array(double[] ar) {
        StringBuilder sb = new StringBuilder();
        for (double i : ar) sb.append(i + " ");
        return sb.toString();
    }

    static String array(char[] ar) {
        StringBuilder sb = new StringBuilder();
        for (char i : ar) sb.append(i + " ");
        return sb.toString();
    }

    static String array(int[] ar, int lo, int hi) {
        StringBuilder sb = new StringBuilder();
        for (int i : ar) sb.append(i + " ");
        return sb.toString();
    }

    static String array(boolean[] ar) {
        StringBuilder sb = new StringBuilder();
        for (boolean i : ar) sb.append(wrap("@@", i ? 92 : 91) + " ");
        return sb.toString();
    }

    static String slidingWindow(char[] ch, int left, int right) {
        /*
            RIGHT is technically not in the window yet, but the actual window left..right-1 can be tricky to print
            because right end might be smaller than left end, and that jepordize the mechanism of color printing used
            here. So we just pring left..right, since you can always count on right>=left;
        */
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < ch.length; i++) {
            if (i == left && left <= right) sb.append((char) 27 + "[35m");
            sb.append(ch[i] + " ");
            if (i == right) sb.append((char) 27 + "[0m");
        }
        sb.append((char) 27 + "[0m" + "\n");
        return sb.toString();
    }

    static String seperator () {
        return separator ();
    }

    static String separator() {
        return (char) 27 + "[36m" + "========================" + (char) 27 + "[0m";
    }

    public static String listNodes(ListNode[] nodes) {
        StringBuilder sb = new StringBuilder();
        for (ListNode n : nodes) sb.append(n.val + " ");
        return sb.toString();
    }

    public static String listNode(ListNode head) {
        StringBuilder sb = new StringBuilder();
        while (head != null) {
            sb.append(head.val + " ");
            head = head.next;
        }
        return sb.toString();
    }

    static void openColor(String color) {
        int code = getColor(color);
        System.out.print((char) 27 + "[" + code + "m");
    }

    static int getColor(String color) {
        int code = 0;
        switch (color) {
            case "red" : {
                code = 31;
                break;
            }
            case "green" : {
                code = 32;
                break;
            }
            case "yellow" : {
                code = 33;
                break;
            }
            case "blue" : {
                code = 34;
                break;
            }
            case "magenta" : {
                code = 35;
                break;
            }
            case "cyan" : {
                code = 36;
                break;
            }
            default : {
                System.out.println("wrong color argument!");
                return 0;
            }
        }
        return code;
    }

    static void closeColor() {
        System.out.print((char) 27 + "[0m");
    }

    static String wrapColor(String s, String color) {
        int code = getColor(color);
        return (char) 27 + "[" + code + "m" + s + (char) 27 + "[0m";
    }

    static String wrapColor(String s, int code) {
        return (char) 27 + "[" + code + "m" + s + (char) 27 + "[0m";
    }

    static String wrap (String s, int code) {
        return wrapColor (s, code);
    }

    static String wrapColor(int s, String color) {
        int code = getColor(color);
        return (char) 27 + "[" + code + "m" + s + (char) 27 + "[0m";
    }

    static String bfs(TreeNode root) {
        StringBuilder sb = new StringBuilder();
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        while (!q.isEmpty()) {
            int size = q.size();
            for (int i = 0; i < size; i++) {
                TreeNode node = q.poll();
                sb.append(node.val + " ");
                if (node.left != null)
                    q.offer(node.left);
                if (node.right != null)
                    q.offer(node.right);
            }
            sb.append("\n");
        }
        return sb.toString();
    }

    static String pointArray (String s, int[] codes, int[] indices){
        String[] tokens = s.split ("\\s+");
        if (codes.length != indices.length)
            return wrap ("Wrong CODES/INDICES!!!", 91);
        StringBuilder sb = new StringBuilder ();
        Map<Integer, Integer> index_to_code = new HashMap<> ();
        for (int i = 0; i < indices.length; i++) {
            if (indices[i] > tokens.length)
                return wrap ("Wrong INDICES!!!", 91);
            index_to_code.put (indices[i], codes[i]);
        }
        for (int i = 0; i < tokens.length; i++) {
            if (index_to_code.containsKey (i))
                sb.append (wrap (tokens[i], index_to_code.get (i)));
            else
                sb.append (tokens[i]);
            sb.append (" ");
        }
        return sb.toString ();
    }

    static String indexedArray (double[] ar) {
        StringBuilder sb = new StringBuilder ();
        for (int i = 0; i < ar.length; i++) {
            sb.append (String.format ("%d=%f ", i, ar[i]));
        }
        return sb.toString ();
    }
}

results matching ""

    No results matching ""