By : user2949819
Date : November 17 2020, 04:28 AM

Does that help here is bruteforce java solution you can use, note  complexity of this solution is O(3^N), which is very very slow code :
/**
* Returns absolute difference between 3 values in array
*/
static int getdiff(final int s[])
{
return Math.abs(s[0]  s[1]) + Math.abs(s[1]  s[2]) + Math.abs(s[2]  s[0]);
}
/**
* Calculates all possible sums and returns one where difference is minimal
*/
static int[] getsums(final int a[], final int idx, final int[] s)
{
// no elements can be added to array, return original
if (idx >= a.length)
return s;
// calculate 3 different outcomes
final int[] s1 = getsums(a, idx + 1, new int[] {s[0] + a[idx], s[1], s[2]});
final int[] s2 = getsums(a, idx + 1, new int[] {s[0], s[1] + a[idx], s[2]});
final int[] s3 = getsums(a, idx + 1, new int[] {s[0], s[1], s[2] + a[idx]});
// calculate difference
final int d1 = getdiff(s1);
final int d2 = getdiff(s2);
final int d3 = getdiff(s3);
if ((d1 <= d2) && (d1 <= d3))
return s1;
else if ((d2 <= d1) && (d2 <= d3))
return s2;
else
return s3;
}
static int[] getsums(final int a[])
{
return getsums(a, 0, new int[] {0, 0, 0});
}
static void printa(final int a[])
{
System.out.print("[");
for (final int t : a)
System.out.print(t + ",");
System.out.println("]");
}
static public void main(final String[] args)
{
final int a[] = new int[] {23, 6, 57, 35, 33, 15, 26, 12, 9, 61, 42, 27};
final int[] c = getsums(a);
printa(a);
printa(c);
}
[23,6,57,35,33,15,26,12,9,61,42,27,]
[115,116,115,]
Share :

Partitioning a sequence into sets of unique pairs
By : Divya
Date : March 29 2020, 07:55 AM
wish of those help I'm in need a of function which can split a sequence into pairs, and then combine them such that all elements in a combination is unique. I have tried a number of approaches using python's itertools, but have not found a solution. , itertoolsis indeed your friend: code :
from itertools import permutations
def group(iterable, n=2):
return zip(*([iter(iterable)] * n))
for each in permutations([1, 2, 3, 4, 5, 6]):
print map(list, group(each))
[[1, 2], [3, 4], [5, 6]]
[[1, 2], [3, 4], [6, 5]]
[[1, 2], [3, 5], [4, 6]]
[[1, 2], [3, 5], [6, 4]]
[[1, 2], [3, 6], [4, 5]]
[[1, 2], [3, 6], [5, 4]]
[[1, 2], [4, 3], [5, 6]]
[[1, 2], [4, 3], [6, 5]]
[[1, 2], [4, 5], [3, 6]]
...
from itertools import combinations
def setpartition(iterable, n=2):
iterable = list(iterable)
partitions = combinations(combinations(iterable, r=n), r=len(iterable) / n)
for partition in partitions:
seen = set()
for group in partition:
if seen.intersection(group):
break
seen.update(group)
else:
yield partition
for each in setpartition([1, 2, 3, 4]):
print each
print
for each in setpartition([1, 2, 3, 4, 5, 6]):
print each
((1, 2), (3, 4))
((1, 3), (2, 4))
((1, 4), (2, 3))
((1, 2), (3, 4), (5, 6))
((1, 2), (3, 5), (4, 6))
((1, 2), (3, 6), (4, 5))
((1, 3), (2, 4), (5, 6))
((1, 3), (2, 5), (4, 6))
((1, 3), (2, 6), (4, 5))
((1, 4), (2, 3), (5, 6))
((1, 4), (2, 5), (3, 6))
((1, 4), (2, 6), (3, 5))
((1, 5), (2, 3), (4, 6))
((1, 5), (2, 4), (3, 6))
((1, 5), (2, 6), (3, 4))
((1, 6), (2, 3), (4, 5))
((1, 6), (2, 4), (3, 5))
((1, 6), (2, 5), (3, 4))

Partitioning a superset and getting the list of original sets for each partition
By : Marco Aurélio Costa
Date : March 29 2020, 07:55 AM
should help you out The following should be linear time (in the number of the elements in the Ts). code :
from collections import defaultdict
S = [1, 2, 3, 4, 5, 6, 8, 9]
T_1 = [1, 4]
T_2 = [2, 3]
T_3 = [1, 3, 4]
Ts = [S, T_1, T_2, T_3]
parents = defaultdict(int)
for i, T in enumerate(Ts):
for elem in T:
parents[elem] += 2 ** i
children = defaultdict(list)
for elem, p in parents.items():
children[p].append(elem)
print(list(children.values()))
[[5, 6, 8, 9], [1, 4], [2], [3]]

flatten+partitioning vs nested record on big data sets
By : RWis
Date : March 29 2020, 07:55 AM
will be helpful for those in need 1: The actual import row size limit for json data is 20 MB, not 64k. I've filed a doc bug to get this updated in our public documentation.

Partitioning graph into 2 sets of vertices
By : codesmack
Date : March 29 2020, 07:55 AM
Does that help This problem is NP hard because it is at least as hard as the partition problem. Sketch of proof

Partitioning a matrix in 5 sets in Matlab
By : core
Date : March 29 2020, 07:55 AM
this one helps. In order to find positions of partitioning we can use powerset for example if an element of powerset is [2 3] the set will be partitoned this way: code :
0 1;
1 1;
 < 2
1 0;
 < 3
2 1;
2 0;
3 1;
3 0]
sV=[0 1;
1 1;
1 0;
2 1;
2 0;
3 1;
3 0]
n = size(sV,1)
p=powerset(1:(n1));
cardinality =sprintf('_%i',n);
V_all.(cardinality)(end+1)={sV};
for i = 2:numel(p)
num_el = [p{i} n]  [0 p{i}];
cardinality = sprintf('_%i',sort(num_el));
cum = [0 cumsum(num_el)];
temp = {};
for j = 2: numel(cum)
temp(end + 1) = {sV(cum(j1)+1:cum(j),:)};
end
V_all.(cardinality)(end+1)={temp};
end



Related Posts :
