Skip to content

Instantly share code, notes, and snippets.

@oskimura
Created October 6, 2010 11:17
Show Gist options
  • Select an option

  • Save oskimura/613200 to your computer and use it in GitHub Desktop.

Select an option

Save oskimura/613200 to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class AverageAverage {
/*
* perm [] = [[]]
* perm (x:xs) = (list ++ (map (x:) list))
* where list = (perm xs)
*/
public List<List<Integer>> permutaions(List<Integer> seq)
{
List<List<Integer>> result = new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
if (seq.isEmpty())
{
result.add(list);
return result;
}
else
{
List<Integer> seq2 = new ArrayList<Integer>();
for (Integer n : seq)
{
seq2.add(n);
}
Integer a = seq2.get(0);
seq2.remove(0);
List<List<Integer>> list2 = permutaions(seq2);
List<List<Integer>> list3 = permutaions(seq2);
for (List<Integer> l :list3)
{
l.add(a);
}
for (List<Integer> l :list2)
{
result.add(l);
}
for (List<Integer> l :list3)
{
result.add(l);
}
}
return result;
}
public Integer sum(List<Integer> seq)
{
Integer sum =0;
for(Integer n: seq)
{
sum+=n;
}
return sum;
}
public double average(int[] numList)
{
List<Integer> list = new ArrayList<Integer>();
for(int i=0 ; i<numList.length ; i++)
{
list.add(numList[i]);
}
double sum=0.0;
double length = 0.0;
for (List<Integer> xs : permutaions(list))
{
if (!xs.isEmpty())
{
length += 1.0;
int len = xs.size();
sum += ((double)sum(xs)/(double)len);
}
}
double average = sum/length;
System.out.println(average);
return average;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment