abrahamimohiosen
BAN USERimport java.util.*;
import java.util.stream.Collectors;
public class CartesianIteration {
public static void main(String... arg) {
CartesianIterator<Character> characterCartesianIterator = new CartesianIterator<>(
Arrays.asList(
Arrays.asList('a', 'b', 'c'),
Arrays.asList('p', 'q'),
Arrays.asList('r', 's')));
while (characterCartesianIterator.hasNext()) {
System.out.println(characterCartesianIterator.next());
}
}
}
class CartesianIterator<T> implements Iterator<List<T>> {
private List<List<T>> results;
private int iterCursor = 0;
public CartesianIterator(List<List<T>> ListOfLists) {
results = process(ListOfLists);
}
public List<List<T>> process(List<List<T>> lists) {
List<List<T>> tempResults = new ArrayList<>();
if (lists.size() == 1) {
return lists
.get(0)
.stream()
.map(Arrays::asList)
.collect(Collectors.toList());
}
for (T t : lists.get(0)) {
for (List<T> recursionInnerList : process(lists.subList(1, lists.size()))) {
List<T> innerList = new ArrayList<>(Collections.singletonList(t));
innerList.addAll(recursionInnerList);
tempResults.add(innerList);
}
}
return tempResults;
}
@Override
public boolean hasNext() {
return iterCursor < results.size();
}
@Override
public List<T> next() {
return results.get(iterCursor++);
}
}
public static String revHash(String arr) throws NoSuchAlgorithmException {
StringBuilder stringBuilder = new StringBuilder();
int N = arr.length();
for (int i = 0; i < N / 2; i++) {
int numericValue = (int) (arr.charAt(i));
numericValue += (int) (arr.charAt(N - i - 1));
stringBuilder.append((char) numericValue);
}
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
return printHexBinary(messageDigest.digest(stringBuilder.toString().getBytes()));
}
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class App8 {
public static void main(String... arg) {
int[] ints = {7, 8, 11, 10, 13, 1, 3, 4, 6};
run(ints, 2);
System.out.println(Arrays.toString(ints));
}
public static void run(int[] arr, int k) {
Map<Integer, Integer> moveMap = new HashMap<>();
for (int i = 0, arrLength = arr.length; i < arrLength - 1; i++) {
int i1 = 0;
while (i1 <= k && arr[i - i1] > arr[i + 1 - i1]) {
int i2 = moveMap.getOrDefault(arr[i + 1 - i1], 0) + 1;
moveMap.put(arr[i + 1 - i1], i1);
int t = arr[i - i1];
arr[i - i1] = arr[i + 1 - i1];
arr[i + 1 - i1] = t;
i1 = i2;
}
}
}
}
public class App7 {
public static void main(String... arg) {
System.out.println(countingSort(new int[]{1, 3, 4, 6, 7, 8,10,11,13}, 0, 0, 8));
System.out.println(countingSort(new int[]{1, 3, 4, 6, 7, 8,10,11,13}, 1, 0, 8));
System.out.println(countingSort(new int[]{1, 3, 4, 6, 7, 8,10,11,13}, 2, 0, 8));
System.out.println(countingSort(new int[]{1, 3, 4, 6, 7, 8,10,11,13}, 3, 0, 8));
}
public static int countingSort(int[] arr, int k, int s, int e) {
int mid = s + ((e - s) / 2);
if (mid == s) {
return arr[mid] + 1;
}
int i1 = arr[mid]-((mid - s) + arr[s]);
if (i1 >= (k + 1)) {
return countingSort(arr, k, s, mid);
} else {
return countingSort(arr, k - i1, mid, e);
}
}
}
- abrahamimohiosen April 14, 2018