cemaivaz
BAN USERpublic class AdjPerm {
private static String word = "12345"; //I assume the consecutive characters are not the same
public static void main(String[] args) {
System.out.println(adj(word.length())); //8
}
public static int adj(int i) { //Returns the number of permutations
if (i == 0) return 1;
else if (i < 0) return 0;
return adj(i - 1) + adj(i - 2);
}
}
import java.util.ArrayList;
import java.util.List;
public class PowerOf2s {
public static void main(String[] args) {
// TODO Auto-generated method stub
//You can change the number 4 below as you wish
pr(4);
}
public static void print(int no, int base, List<Integer> l, int noAdd) {
l.add(noAdd);
int sum = sum(l);
if (sum == no) {
int sum_ = 0;
String res = "[";
for (Integer i: l) {
sum_ += i;
res += sum_ + ",";
}
res = res.substring(0, res.length() - 1) + "]";
System.out.println(res);
return;
} else if (sum > no) {
return;
}
for (int i = 0; i <= base; i++) {
int add = (int) Math.pow(2, i);
print(no, base, new ArrayList<Integer>(l), add);
}
return;
}
public static void pr(int no) {
int base = (int) (Math.log(no) / Math.log(2));
print(no, base, new ArrayList<Integer>(), 0);
}
public static int sum(List<Integer> l) {
int sum = 0;
for (int n: l) {
sum += n;
}
return sum;
}
}
public class MatrixZigZag {
public static void main(String[] args) {
// TODO Auto-generated method stub
Object[][] m1 = {{"a", "b", "c"},
{"d", "e", "f"},
{"g", "h", "i"},
{"j", "k", "l"}};
System.out.println(zigZag(m1, 0, 0));
// The above prints a b d c e g f h j i k l
Object[][] m2 = {{"a", "b", "c", "d"},
{"e", "f", "g", "h"}};
System.out.println(zigZag(m2, 0, 0));
// The above prints a b e c f d g h
}
public static String zigZag(Object[][] m, int i, int j) {
StringBuilder sb = new StringBuilder("");
while (true) {
sb.append(m[i][j].toString() + " ");
if (i == m.length - 1 && j == m[0].length - 1) {
break;
}
if (checkStart(m, i, j)) {
int[] symm = symmAfter(m, i, j);
i = symm[0];
j = symm[1];
} else {
i++;
j--;
}
}
return sb.deleteCharAt(sb.length() - 1).toString();
}
public static int[] symmAfter(Object[][] m, int i, int j) {
int[] newPos = new int[2];
newPos[0] = Math.max(0, i - m[0].length + 1 + j);
newPos[1] = Math.min(i + j, m[0].length - 1);
if (newPos[1] < m[0].length - 1) {
newPos[1]++;
} else {
newPos[0]++;
}
return newPos;
}
public static boolean checkStart(Object[][] m, int i, int j) {
if (i == m.length - 1 || j == 0) {
return true;
}
return false;
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Indent {
private static String sep = "->";
private static String data = "{AAA->BBB,CCC,EEE},{CCC->DDD},{XXX->YYY,ZZZ},{DDD->TTT,OOO}";
private static String res = "";
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> st = indent(data);
recIndentArr(st);
System.out.println(res);
}
public static String repNTimes(String s, int n) {
String rep = "";
for (int i = 0; i < n; i++) {
rep += s;
}
return rep;
}
public static void recIndent(String s) {
String prRes = repNTimes(" ", ind.get(s)) + "-" + s + "\n";
res += prRes;
if (!children.containsKey(s))
return;
List<String> m = children.get(s);
for (String ch: m) {
recIndent(ch);
}
}
public static void recIndentArr(List<String> s) {
for (String sub: s) {
recIndent(sub);
}
}
private static Map<String, List<String>> children = new LinkedHashMap<String, List<String>>();
private static Map<String, Integer> ind = new LinkedHashMap<String, Integer>();
public static List<String> indent(String pat) {
Pattern p = Pattern.compile("\\{.*?\\}");
Matcher mat = p.matcher(pat);
List<String> l = new ArrayList<>();
while (mat.find()) {
l.add(mat.group(0));
}
for (int i = 0; i < l.size(); i++) {
String s = l.get(i).replaceAll("[\\{\\}]", "");
String key = s.split(sep)[0];
String[] vals = s.split(sep)[1].split(",");
if (!ind.containsKey(key)) {
ind.put(key, 0);
}
for (int j = 0; j < vals.length; j++) {
ind.put(vals[j], ind.get(key) + 1);
}
children.put(key, Arrays.asList(vals));
}
List<String> stInds = new ArrayList<>();
for (Map.Entry<String, Integer> me: ind.entrySet()) {
if (me.getValue() == 0) {
stInds.add(me.getKey());
}
}
return stInds;
}
}
import java.util.LinkedHashMap;
import java.util.Map;
public class PatternStr {
private static String pattern = "[a b b a]";
private static String words = "cat dog dog cat";
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(match(pattern, words));
}
public static boolean match(String pat, String s) {
String[] p = pat.replaceAll("[\\]\\[]", "").trim().split("\\s+");
Map<String, String> sToP = new LinkedHashMap<>();
String[] sArr = s.split("\\s+");
if (p.length != sArr.length) {
return false;
}
for (int i = 0; i < sArr.length; i++) {
String patt = p[i];
if (sToP.containsKey(sArr[i])) {
patt = sToP.get(sArr[i]);
if (!patt.equals(p[i])) {
return false;
}
} else if (sToP.containsValue(p[i])) {
return false;
}
sToP.put(sArr[i], patt);
}
return true;
}
}
public String reformat(String s, int k) {
if (s.length() == 0 || k <= 0 || k > s.length() || s == null) {
return null;
}
if (k == s.length()) {
return s;
}
return new StringBuilder(new StringBuilder(s).reverse().toString().replaceAll("-", "").replaceAll("(.{" + k + "})", "$1-").replaceAll("-$", "")).reverse().toString();
}
- cemaivaz November 09, 2017