September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -1,25 +1,25 @@
function MaximumSubsequence( population ) {
var maxValue = 0;
var subsequence = [];
for( var i=0, len=population.length; i < len; i++ ) {
for( var j=i; j <= len; j++ ) {
var subsequence = population.slice(i,j);
var value = sumValues(subsequence);
if( value > maxValue ) {
maxValue = value;
greatest = subsequence;
};
}
}
return greatest;
function MaximumSubsequence(population) {
var maxValue = 0;
var subsequence = [];
for (var i = 0, len = population.length; i < len; i++) {
for (var j = i; j <= len; j++) {
var subsequence = population.slice(i, j);
var value = sumValues(subsequence);
if (value > maxValue) {
maxValue = value;
greatest = subsequence;
};
}
}
return greatest;
}
function sumValues(arr) {
var result = 0;
for( var i=0, len=arr.length; i < len; i++) {
result += arr[i];
}
return result;
var result = 0;
for (var i = 0, len = arr.length; i < len; i++) {
result += arr[i];
}
return result;
}

View file

@ -0,0 +1,34 @@
// version 1.1
fun gss(seq: IntArray): Triple<Int, Int, Int> {
if (seq.isEmpty()) throw IllegalArgumentException("Array cannot be empty")
var sum: Int
var maxSum = seq[0]
var first = 0
var last = 0
for (i in 1 until seq.size) {
sum = 0
for (j in i until seq.size) {
sum += seq[j]
if (sum > maxSum) {
maxSum = sum
first = i
last = j
}
}
}
return Triple(maxSum, first, last)
}
fun main(args: Array<String>) {
val seq = intArrayOf(-1 , -2 , 3 , 5 , 6 , -2 , -1 , 4 , -4 , 2 , -1)
val(maxSum, first, last) = gss(seq)
if (maxSum > 0) {
println("Maximum subsequence is from indices $first to $last")
print("Elements are : ")
for (i in first .. last) print("${seq[i]} ")
println("\nSum is $maxSum")
}
else
println("Maximum subsequence is the empty sequence which has a sum of 0")
}

View file

@ -1,4 +1,4 @@
sub maxsubseq (*@a) {
sub max-subseq (*@a) {
my ($start, $end, $sum, $maxsum) = -1, -1, 0, 0;
for @a.kv -> $i, $x {
$sum += $x;

View file

@ -1,16 +1,16 @@
sub max_sub-seq ( *@a ) {
sub max-subseq ( *@a ) {
my $max_subset = [];
my $max-subset = ();
while @a {
my @subsets = @a.keys.map: { [ @a[0..$_] ] };
@subsets.push($max_subset);
$max_subset = @subsets.max: { [+] .list };
my @subsets = [\,] @a;
@subsets.push: $max-subset;
$max-subset = @subsets.max: { [+] .list };
@a.shift;
}
return $max_subset;
return $max-subset;
}
max_sub-seq( -1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1 ).perl.say;
max_sub-seq( -2, -2, -1, 3, 5, 6, -1, 4, -4, 2, -1 ).perl.say;
max_sub-seq( -2, -2, -1, -3, -5, -6, -1, -4, -4, -2, -1 ).perl.say;
max-subseq( -1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1 ).say;
max-subseq( -2, -2, -1, 3, 5, 6, -1, 4, -4, 2, -1 ).say;
max-subseq( -2, -2, -1, -3, -5, -6, -1, -4, -4, -2, -1 ).say;

View file

@ -0,0 +1,9 @@
fcn maxsubseq(s){
s.reduce(fcn([(sum, seq, maxsum, maxseq)], x){
sum=sum+x; seq=T(x).extend(seq);
if(sum < 0) return(0,T,maxsum,maxseq);
if (sum>maxsum) return(sum, seq, sum, seq);
return(sum, seq, maxsum, maxseq);
},
T(0,T,0,T))[3].reverse(); // -->maxseq.reverse()
}

View file

@ -0,0 +1,6 @@
s:=maxsubseq(T(-1,-2,3,5,6,-2,-1,4,-4,2,-1));
println(s.sum()," : ",s);
s:=maxsubseq(T(-1,-2)); println(s.sum()," : ",s);
s:=maxsubseq(T); println(s.sum()," : ",s);