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) {
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 ();
}
}