Maximum summed subsequences with non-adjacent items Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Sandbox for Proposed Challenges The PPCG Site design is on its way - help us make it awesome!Convert JSON string to Key / Value ArraysGeneralised Array RiffleShortest Longest Common Subsequence CodeFind how many pair elements sums up to NMaximum Maxima!Shuffle a mappingMake this dice game fairDisappearing ElementsSupreme Sum StringValid Badminton Score?

A term for a woman complaining about things/begging in a cute/childish way

GDP with Intermediate Production

How can I prevent/balance waiting and turtling as a response to cooldown mechanics

How can a team of shapeshifters communicate?

AppleTVs create a chatty alternate WiFi network

Most effective melee weapons for arboreal combat? (pre-gunpowder technology)

How does light 'choose' between wave and particle behaviour?

Co-worker has annoying ringtone

A proverb that is used to imply that you have unexpectedly faced a big problem

How to align enumerate environment inside description environment

i2c bus hangs in master RPi access to MSP430G uC ~1 in 1000 accesses

Is there public access to the Meteor Crater in Arizona?

Found this skink in my tomato plant bucket. Is he trapped? Or could he leave if he wanted?

Mounting TV on a weird wall that has some material between the drywall and stud

What is the role of と after a noun when it doesn't appear to count or list anything?

Delete free apps from library

What is the difference between a "ranged attack" and a "ranged weapon attack"?

Central Vacuuming: Is it worth it, and how does it compare to normal vacuuming?

Is there hard evidence that the grant peer review system performs significantly better than random?

Google .dev domain strangely redirects to https

How can god fight other gods?

What would you call this weird metallic apparatus that allows you to lift people?

How much damage would a cupful of neutron star matter do to the Earth?

Putting class ranking in CV, but against dept guidelines



Maximum summed subsequences with non-adjacent items



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Sandbox for Proposed Challenges
The PPCG Site design is on its way - help us make it awesome!Convert JSON string to Key / Value ArraysGeneralised Array RiffleShortest Longest Common Subsequence CodeFind how many pair elements sums up to NMaximum Maxima!Shuffle a mappingMake this dice game fairDisappearing ElementsSupreme Sum StringValid Badminton Score?










22












$begingroup$


Introduction:



Inspired by these two SO questions (no doubt from the same class): print the elements in the subarray of maximum sum without adjacent elements java and Maximum sum of non adjacent elements of an array, to be printed.



Challenge:



Given a list of integers, output a subsequence consisting of non-adjacent elements that have the highest sum. Here some examples:




  • [1,2,3,-1,-3,2,5] would result in [1,3,5] (with a sum of 9) at the 0-based indices [0,2,6].


  • [4,5,4,3] would result in either [4,4] (with a sum of 8) at the 0-based indices [0,2] or [5,3] (also with a sum of 8) at the 0-based indices [1,3].


  • [5,5,10,100,10,5] would result in [5,100,5] (with a sum of 110) at either the 0-based indices [0,3,5] or [1,3,5].

What's most important about these examples above, the indices containing the elements are at least 2 apart from each other. If we look at the example [5,5,10,100,10,5] more in depth: we have the following potential subsequence containing non-adjacent items; with their indices below it; with their sums below that:





[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums




Since the maximum sums are 110, we output [5,100,5] as result.



Challenge rules:



  • You are allowed to output key-value pairs of the index + value. So instead of [5,100,5] you can output [[0,5],[3,100],[5,5]] or [[1,5],[3,100],[5,5]] as result (or [[1,5],[4,100],[6,5]]/[[2,5],[4,100],[6,5]] when 1-based indexing is used instead of 0-based).

    • If you use key-value pairs, they can also be in reverse or random order, since it's clear which values are meant due to the paired index.

    • Outputting just the indices without values isn't allowed. It should either output the values, or the values/indices as key-value pairs (or two separated lists for 'keys' and 'values' of the same size if key-value pairs are not possible in your language of choice).


  • You are allowed to output all possible subsequences with the maximum sum instead of just one.

  • As you can see from the examples, the input-list can contain negative and duplicated values as well. You can assume the input-integers are within the range $[-999,999]$.

  • The output-list cannot be empty and must always contain at least one element (if a list would only contain negative values, a list containing the single lowest negative value would then be output as result - see last two test cases).

  • If there is one possible output but for multiple different indices, it's allowed to output both of them even though they might look duplicates. (i.e. the example above, may output [[5,100,5],[5,100,5]] for both possible index-combinations).

Test cases:



Input: Possible outputs: At 0-based indices: With sum:

[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0









share|improve this question











$endgroup$











  • $begingroup$
    If there is more than one identical set (but from different indices) is it ok to list all of them? e.g. [5,100,5] twice for your third example.
    $endgroup$
    – Nick Kennedy
    Apr 17 at 13:53






  • 1




    $begingroup$
    powersetis a set of subsets isn't it? but it looks like you are returning a set of subsequences? [4,5,4,3] would result in either [4,4] where [4,4] is clearly not a set.
    $endgroup$
    – Expired Data
    Apr 17 at 14:19






  • 1




    $begingroup$
    @Arnauld Yes, if the values are key-value pairs with their index it's clear which indexed values are meant in the input, so they can be in any order. Will also edit this into the challenge description.
    $endgroup$
    – Kevin Cruijssen
    Apr 17 at 16:47






  • 2




    $begingroup$
    Just to be sure: outputting the indices isn't an option, is it?
    $endgroup$
    – Shaggy
    Apr 17 at 22:19






  • 1




    $begingroup$
    The classical term is "subsequence". This has the same problem of people thinking of contiguous subsequences, though. I would say "subset" if we were actually working with sets here, but these are definitely sequences - order matters and duplicates are allowed.
    $endgroup$
    – user2357112
    2 days ago















22












$begingroup$


Introduction:



Inspired by these two SO questions (no doubt from the same class): print the elements in the subarray of maximum sum without adjacent elements java and Maximum sum of non adjacent elements of an array, to be printed.



Challenge:



Given a list of integers, output a subsequence consisting of non-adjacent elements that have the highest sum. Here some examples:




  • [1,2,3,-1,-3,2,5] would result in [1,3,5] (with a sum of 9) at the 0-based indices [0,2,6].


  • [4,5,4,3] would result in either [4,4] (with a sum of 8) at the 0-based indices [0,2] or [5,3] (also with a sum of 8) at the 0-based indices [1,3].


  • [5,5,10,100,10,5] would result in [5,100,5] (with a sum of 110) at either the 0-based indices [0,3,5] or [1,3,5].

What's most important about these examples above, the indices containing the elements are at least 2 apart from each other. If we look at the example [5,5,10,100,10,5] more in depth: we have the following potential subsequence containing non-adjacent items; with their indices below it; with their sums below that:





[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums




Since the maximum sums are 110, we output [5,100,5] as result.



Challenge rules:



  • You are allowed to output key-value pairs of the index + value. So instead of [5,100,5] you can output [[0,5],[3,100],[5,5]] or [[1,5],[3,100],[5,5]] as result (or [[1,5],[4,100],[6,5]]/[[2,5],[4,100],[6,5]] when 1-based indexing is used instead of 0-based).

    • If you use key-value pairs, they can also be in reverse or random order, since it's clear which values are meant due to the paired index.

    • Outputting just the indices without values isn't allowed. It should either output the values, or the values/indices as key-value pairs (or two separated lists for 'keys' and 'values' of the same size if key-value pairs are not possible in your language of choice).


  • You are allowed to output all possible subsequences with the maximum sum instead of just one.

  • As you can see from the examples, the input-list can contain negative and duplicated values as well. You can assume the input-integers are within the range $[-999,999]$.

  • The output-list cannot be empty and must always contain at least one element (if a list would only contain negative values, a list containing the single lowest negative value would then be output as result - see last two test cases).

  • If there is one possible output but for multiple different indices, it's allowed to output both of them even though they might look duplicates. (i.e. the example above, may output [[5,100,5],[5,100,5]] for both possible index-combinations).

Test cases:



Input: Possible outputs: At 0-based indices: With sum:

[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0









share|improve this question











$endgroup$











  • $begingroup$
    If there is more than one identical set (but from different indices) is it ok to list all of them? e.g. [5,100,5] twice for your third example.
    $endgroup$
    – Nick Kennedy
    Apr 17 at 13:53






  • 1




    $begingroup$
    powersetis a set of subsets isn't it? but it looks like you are returning a set of subsequences? [4,5,4,3] would result in either [4,4] where [4,4] is clearly not a set.
    $endgroup$
    – Expired Data
    Apr 17 at 14:19






  • 1




    $begingroup$
    @Arnauld Yes, if the values are key-value pairs with their index it's clear which indexed values are meant in the input, so they can be in any order. Will also edit this into the challenge description.
    $endgroup$
    – Kevin Cruijssen
    Apr 17 at 16:47






  • 2




    $begingroup$
    Just to be sure: outputting the indices isn't an option, is it?
    $endgroup$
    – Shaggy
    Apr 17 at 22:19






  • 1




    $begingroup$
    The classical term is "subsequence". This has the same problem of people thinking of contiguous subsequences, though. I would say "subset" if we were actually working with sets here, but these are definitely sequences - order matters and duplicates are allowed.
    $endgroup$
    – user2357112
    2 days ago













22












22








22


1



$begingroup$


Introduction:



Inspired by these two SO questions (no doubt from the same class): print the elements in the subarray of maximum sum without adjacent elements java and Maximum sum of non adjacent elements of an array, to be printed.



Challenge:



Given a list of integers, output a subsequence consisting of non-adjacent elements that have the highest sum. Here some examples:




  • [1,2,3,-1,-3,2,5] would result in [1,3,5] (with a sum of 9) at the 0-based indices [0,2,6].


  • [4,5,4,3] would result in either [4,4] (with a sum of 8) at the 0-based indices [0,2] or [5,3] (also with a sum of 8) at the 0-based indices [1,3].


  • [5,5,10,100,10,5] would result in [5,100,5] (with a sum of 110) at either the 0-based indices [0,3,5] or [1,3,5].

What's most important about these examples above, the indices containing the elements are at least 2 apart from each other. If we look at the example [5,5,10,100,10,5] more in depth: we have the following potential subsequence containing non-adjacent items; with their indices below it; with their sums below that:





[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums




Since the maximum sums are 110, we output [5,100,5] as result.



Challenge rules:



  • You are allowed to output key-value pairs of the index + value. So instead of [5,100,5] you can output [[0,5],[3,100],[5,5]] or [[1,5],[3,100],[5,5]] as result (or [[1,5],[4,100],[6,5]]/[[2,5],[4,100],[6,5]] when 1-based indexing is used instead of 0-based).

    • If you use key-value pairs, they can also be in reverse or random order, since it's clear which values are meant due to the paired index.

    • Outputting just the indices without values isn't allowed. It should either output the values, or the values/indices as key-value pairs (or two separated lists for 'keys' and 'values' of the same size if key-value pairs are not possible in your language of choice).


  • You are allowed to output all possible subsequences with the maximum sum instead of just one.

  • As you can see from the examples, the input-list can contain negative and duplicated values as well. You can assume the input-integers are within the range $[-999,999]$.

  • The output-list cannot be empty and must always contain at least one element (if a list would only contain negative values, a list containing the single lowest negative value would then be output as result - see last two test cases).

  • If there is one possible output but for multiple different indices, it's allowed to output both of them even though they might look duplicates. (i.e. the example above, may output [[5,100,5],[5,100,5]] for both possible index-combinations).

Test cases:



Input: Possible outputs: At 0-based indices: With sum:

[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0









share|improve this question











$endgroup$




Introduction:



Inspired by these two SO questions (no doubt from the same class): print the elements in the subarray of maximum sum without adjacent elements java and Maximum sum of non adjacent elements of an array, to be printed.



Challenge:



Given a list of integers, output a subsequence consisting of non-adjacent elements that have the highest sum. Here some examples:




  • [1,2,3,-1,-3,2,5] would result in [1,3,5] (with a sum of 9) at the 0-based indices [0,2,6].


  • [4,5,4,3] would result in either [4,4] (with a sum of 8) at the 0-based indices [0,2] or [5,3] (also with a sum of 8) at the 0-based indices [1,3].


  • [5,5,10,100,10,5] would result in [5,100,5] (with a sum of 110) at either the 0-based indices [0,3,5] or [1,3,5].

What's most important about these examples above, the indices containing the elements are at least 2 apart from each other. If we look at the example [5,5,10,100,10,5] more in depth: we have the following potential subsequence containing non-adjacent items; with their indices below it; with their sums below that:





[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums




Since the maximum sums are 110, we output [5,100,5] as result.



Challenge rules:



  • You are allowed to output key-value pairs of the index + value. So instead of [5,100,5] you can output [[0,5],[3,100],[5,5]] or [[1,5],[3,100],[5,5]] as result (or [[1,5],[4,100],[6,5]]/[[2,5],[4,100],[6,5]] when 1-based indexing is used instead of 0-based).

    • If you use key-value pairs, they can also be in reverse or random order, since it's clear which values are meant due to the paired index.

    • Outputting just the indices without values isn't allowed. It should either output the values, or the values/indices as key-value pairs (or two separated lists for 'keys' and 'values' of the same size if key-value pairs are not possible in your language of choice).


  • You are allowed to output all possible subsequences with the maximum sum instead of just one.

  • As you can see from the examples, the input-list can contain negative and duplicated values as well. You can assume the input-integers are within the range $[-999,999]$.

  • The output-list cannot be empty and must always contain at least one element (if a list would only contain negative values, a list containing the single lowest negative value would then be output as result - see last two test cases).

  • If there is one possible output but for multiple different indices, it's allowed to output both of them even though they might look duplicates. (i.e. the example above, may output [[5,100,5],[5,100,5]] for both possible index-combinations).

Test cases:



Input: Possible outputs: At 0-based indices: With sum:

[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0






code-golf number array-manipulation integer






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 days ago







Kevin Cruijssen

















asked Apr 17 at 13:19









Kevin CruijssenKevin Cruijssen

43.3k573222




43.3k573222











  • $begingroup$
    If there is more than one identical set (but from different indices) is it ok to list all of them? e.g. [5,100,5] twice for your third example.
    $endgroup$
    – Nick Kennedy
    Apr 17 at 13:53






  • 1




    $begingroup$
    powersetis a set of subsets isn't it? but it looks like you are returning a set of subsequences? [4,5,4,3] would result in either [4,4] where [4,4] is clearly not a set.
    $endgroup$
    – Expired Data
    Apr 17 at 14:19






  • 1




    $begingroup$
    @Arnauld Yes, if the values are key-value pairs with their index it's clear which indexed values are meant in the input, so they can be in any order. Will also edit this into the challenge description.
    $endgroup$
    – Kevin Cruijssen
    Apr 17 at 16:47






  • 2




    $begingroup$
    Just to be sure: outputting the indices isn't an option, is it?
    $endgroup$
    – Shaggy
    Apr 17 at 22:19






  • 1




    $begingroup$
    The classical term is "subsequence". This has the same problem of people thinking of contiguous subsequences, though. I would say "subset" if we were actually working with sets here, but these are definitely sequences - order matters and duplicates are allowed.
    $endgroup$
    – user2357112
    2 days ago
















  • $begingroup$
    If there is more than one identical set (but from different indices) is it ok to list all of them? e.g. [5,100,5] twice for your third example.
    $endgroup$
    – Nick Kennedy
    Apr 17 at 13:53






  • 1




    $begingroup$
    powersetis a set of subsets isn't it? but it looks like you are returning a set of subsequences? [4,5,4,3] would result in either [4,4] where [4,4] is clearly not a set.
    $endgroup$
    – Expired Data
    Apr 17 at 14:19






  • 1




    $begingroup$
    @Arnauld Yes, if the values are key-value pairs with their index it's clear which indexed values are meant in the input, so they can be in any order. Will also edit this into the challenge description.
    $endgroup$
    – Kevin Cruijssen
    Apr 17 at 16:47






  • 2




    $begingroup$
    Just to be sure: outputting the indices isn't an option, is it?
    $endgroup$
    – Shaggy
    Apr 17 at 22:19






  • 1




    $begingroup$
    The classical term is "subsequence". This has the same problem of people thinking of contiguous subsequences, though. I would say "subset" if we were actually working with sets here, but these are definitely sequences - order matters and duplicates are allowed.
    $endgroup$
    – user2357112
    2 days ago















$begingroup$
If there is more than one identical set (but from different indices) is it ok to list all of them? e.g. [5,100,5] twice for your third example.
$endgroup$
– Nick Kennedy
Apr 17 at 13:53




$begingroup$
If there is more than one identical set (but from different indices) is it ok to list all of them? e.g. [5,100,5] twice for your third example.
$endgroup$
– Nick Kennedy
Apr 17 at 13:53




1




1




$begingroup$
powersetis a set of subsets isn't it? but it looks like you are returning a set of subsequences? [4,5,4,3] would result in either [4,4] where [4,4] is clearly not a set.
$endgroup$
– Expired Data
Apr 17 at 14:19




$begingroup$
powersetis a set of subsets isn't it? but it looks like you are returning a set of subsequences? [4,5,4,3] would result in either [4,4] where [4,4] is clearly not a set.
$endgroup$
– Expired Data
Apr 17 at 14:19




1




1




$begingroup$
@Arnauld Yes, if the values are key-value pairs with their index it's clear which indexed values are meant in the input, so they can be in any order. Will also edit this into the challenge description.
$endgroup$
– Kevin Cruijssen
Apr 17 at 16:47




$begingroup$
@Arnauld Yes, if the values are key-value pairs with their index it's clear which indexed values are meant in the input, so they can be in any order. Will also edit this into the challenge description.
$endgroup$
– Kevin Cruijssen
Apr 17 at 16:47




2




2




$begingroup$
Just to be sure: outputting the indices isn't an option, is it?
$endgroup$
– Shaggy
Apr 17 at 22:19




$begingroup$
Just to be sure: outputting the indices isn't an option, is it?
$endgroup$
– Shaggy
Apr 17 at 22:19




1




1




$begingroup$
The classical term is "subsequence". This has the same problem of people thinking of contiguous subsequences, though. I would say "subset" if we were actually working with sets here, but these are definitely sequences - order matters and duplicates are allowed.
$endgroup$
– user2357112
2 days ago




$begingroup$
The classical term is "subsequence". This has the same problem of people thinking of contiguous subsequences, though. I would say "subset" if we were actually working with sets here, but these are definitely sequences - order matters and duplicates are allowed.
$endgroup$
– user2357112
2 days ago










19 Answers
19






active

oldest

votes


















5












$begingroup$


05AB1E, 14 bytes



Saved 1 byte thanks to Kevin Cruijssen



ā<æʒĆ¥≠W}èΣO}θ


Try it online!
or as a Test Suite



Explanation



ā< # push [0 ... len(input)-1]
æ # compute powerset
ʒ } # filter, keep lists where:
≠W # no element is 1 in the
¥ # deltas
Ć # of the list with the head appended
è # index into the input with each
ΣO} # sort by sum
θ # take the last element





share|improve this answer











$endgroup$












  • $begingroup$
    You may not be happy, but it's still 4 bytes shorter than my initial solution. ;) And you can golf 1 more changing ¤ª to Ć.
    $endgroup$
    – Kevin Cruijssen
    Apr 17 at 16:40











  • $begingroup$
    @KevinCruijssen: Oh yeah! For some reason I had convinced myself I needed a repeat element at the end. Thanks!
    $endgroup$
    – Emigna
    Apr 17 at 17:00


















5












$begingroup$


Brachylog (v2), 14 bytes



~ba~c∋₁ᵐᶠ+ᵒt


Try it online!



Function submission; input from the left, output from the right, as usual. Very slow; a five-element list is probably the maximum for testing on TIO.



~ba~c∋₁ᵐᶠ+ᵒt
~b Prepend an arbitrary element to the input
a Take a prefix or suffix of the resulting list
~c Ordered partition into contiguous sublists
∋₁ Take the second element
ᵐ of each sublist
ᶠ Find all possible ways to do this
+ᵒ Sort by sum
t Take the greatest


The results we get from prefixes aren't incorrect, but also aren't interesting; all possible results are generated via taking a suffix (which is possibly the list itself, but cannot be empty), but "suffix" is more verbose in Brachylog than "prefix or suffix", so I went with the version that's terser (and less efficient but still correct). The basic idea is that for each element we want in the output list, the partition into contiguous sublists needs to place that element and the element before into the same sublist (because the element is the second element of the sublist), so two consecutive elements can't appear in the result. On the other hand, it's fairly clear that any list without two consecutive elements can appear in the result. So once we have all possible candidate lists, we can just take the sums of all of them and see which one is largest.






share|improve this answer











$endgroup$




















    5












    $begingroup$


    Husk, 11 bytes



    ►Σ†!¹mü≈tṖŀ


    Try it online!



    Explanation



    ►Σ†!¹mü≈tṖŀ Implicit input, say L=[4,5,3,4].
    ŀ Indices: [1,2,3,4]
    Ṗ Powerset: [[],[1],[2],[1,2],..,[1,2,3,4]]
    t Tail (remove the empty list): [[1],[2],[1,2],..,[1,2,3,4]]
    m For each,
    ü de-duplicate by
    ≈ differing by at most 1.
    For example, [1,2,4] becomes [1,4].
    † Deep map
    !¹ indexing into L: [[4],[5],[4],..,[5,4],[4,3]]
    ► Maximum by
    Σ sum: [5,4]





    share|improve this answer











    $endgroup$




















      5












      $begingroup$


      R, 136 bytes





      function(l,G=Map(`[`,list(l),Filter(function(x)all(diff(x)>1),unlist(Map(combn,list(y<-seq(a=l)),y,s=F),F))))G[which.max(sapply(G,sum))]


      Try it online!



      Returns the shortest subsequence as a list, breaking ties on lexicographically first by indices.



      Brute-force generates all index subsequences, then Filters for those that are non-adjacent, i.e., where all(diff(x)>1). Then subsets [ into l using these indices, selecting [[ the first one where the sum is the max (which.max).



      I'm pretty sure this is the first R answer I've ever used that uses Filter!






      share|improve this answer









      $endgroup$




















        5












        $begingroup$


        Haskell, 60 bytes





        snd.([]%)
        r%(h:t)=max(r%t)$(r++[h])%drop 1t
        r%_=(sum r<$r,r)


        Try it online!



        The helper function % recursively branches on choosing whether the include the first element and drop the second, or to skip the first element. It takes the maximum of all outcomes, which are tuples whose first element is the sum, and whose second element is the corresponding list which is extracted for the output.



        To handle the rule that the empty list is disallowed even if it would have the smallest trick, we do a cute trick of writing sum r<$r rather than sum r.This makes a list whose elements all are sum r and whose length is that of r. That way, when we choose the maximum, we prioritize any list over an empty r, but otherwise comparisons depend on the first element which is sum r .






        share|improve this answer









        $endgroup$




















          3












          $begingroup$


          Jelly, 16 14 bytes



          JŒPḊf’$ÐḟịµSÞṪ


          Try it online!



          Thanks to @EriktheOutgolfer for saving 2 bytes!






          share|improve this answer











          $endgroup$












          • $begingroup$
            14 bytes.
            $endgroup$
            – Erik the Outgolfer
            Apr 17 at 18:17


















          3












          $begingroup$

          JavaScript (ES6),  138 132 130 129  126 bytes



          Outputs key-value pairs.





          a=>a.reduce((a,x,i)=>[...a,...a.map(y=>[[x,i],...y])],[[]]).map(m=a=>a.some(s=p=([v,i])=>p-(s=~~s+v,p=i)<2)|s<m||(r=a,m=s))&&r


          Try it online!



          Step 1



          We first compute the powerset of the input with $[value, index]$ pairs.



          a.reduce((a, x, i) => // for each value x at position i:
          [ // update a[] to a new array consisting of:
          ...a, // all previous entries
          ...a.map(y => // for each value y in a[]:
          [[x, i], ...y] // append [x, i], followed by all original entries
          ) // end of map()
          ], // end of new array
          [[]] // start with a = [[]]
          ) // end of reduce()


          Step 2



          We then look for the maximum sum $m$ among these sets, discarding sets with at least two adjacent elements. The best set is stored in $r$.



          .map(m = // initialize m to a non-numeric value
          a => // for each entry a[] in the powerset:
          a.some(s = p = // initialize s and p to non numeric values
          ([v, i]) => // for each value v and each index i in a[]:
          p - ( // compute p - i
          s = ~~s + v, // add v to s
          p = i // update p to i
          ) < 2 // if p - i is less than 2, yield true
          ) | // end of some()
          s < m || // unless some() was truthy or s is less than m,
          (r = a, m = s) // save a[] in r[] and update m to s
          ) && r // end of map(); return r[]





          share|improve this answer











          $endgroup$




















            3












            $begingroup$

            Haskell, 81 80 bytes



            snd.maximum.map((,)=<<sum).tail.f
            f(a:b:c)=f(b:c)++map(a:)(f c)
            f a=[]:map(:[])a


            Try it online!



            f builds all valid subsequences by either skipping the next element (f(b:c)) or using it and skipping the next (map(a:)(f c)) and recursively work on the rest. For the result, build all subsequences (f), drop the empty subsequence (which occurs first in the list: tail), make pairs (<sum>,<subsequence>) (map((,)=<<sum)), find the maximum (pairs are compared in lexicographical order) -> maximum) and drop the sum (snd).



            Edit: -1 byte thanks to @Lynn.






            share|improve this answer











            $endgroup$








            • 1




              $begingroup$
              map(:[])a is a byte shorter than (pure<$>a) ^^
              $endgroup$
              – Lynn
              2 days ago


















            2












            $begingroup$


            Wolfram Language (Mathematica), 144 bytes



            If[Max[a=#]>(d=Max[m=Tr/@(g=a[[#]]&/@Select[Subsets[Range[x=Length@#],2,x]&@#,FreeQ[Differences@#,1]&]&@a)]),Max@a,g[[#]]&@@@Position[m,d]]&


            Try it online!






            share|improve this answer









            $endgroup$




















              2












              $begingroup$

              Pyth, 19 bytes



              esDm@LQdtf!q#1.+TyU


              Try it online here, or verify all the test cases at once here.



              esDm@LQdtf!q#1.+TyUQ Implicit: Q=eval(input())
              Trailing Q inferred
              UQ Generate range [0-len(Q))
              y Take the powerset of the above
              f Filter keep elements of the above, as T, using:
              .+T Take differences of consecutive elements of T
              q#1 Keep those differences equal to 1
              ! Logical NOT - empty lists evaluate to true, populated ones to false
              Result of the filter is those sets without consecutive numbers
              t Drop the first element (empty set)
              m Map the remaining sets, as d, using:
              L d For each element of d...
              @ Q ... get the element in Q with that index
              sD Order the sets by their sum
              e Take the last element, implicit print





              share|improve this answer











              $endgroup$




















                2












                $begingroup$

                T-SQL, 122 119 bytes



                Input is a table variable.



                This query picks all elements from the table variable, combining these with all non-adjacent elements with higher position values and show the text generated for the highest sum of these values.



                WITH C(y,j,v)as(SELECT*,x*1FROM @
                UNION ALL
                SELECT y+','+x,i,v+x
                FROM @ JOIN C ON j+1<i)SELECT
                TOP 1y FROM C ORDER BY-v


                Try it online ungolfed






                share|improve this answer











                $endgroup$




















                  2












                  $begingroup$


                  Gaia, 24 bytes



                  e:w;ċz⟨ọ1>¦ẏ⟩⁇‼⁇E‡ev2%Σ⌠


                  Try it online!



                  Ugh, E‡ does some weird stuff...according to the documentation, it should do something like "given length i set of lists X and length j set of indices Y, return X[i][Y[j]]", but instead returns [X[i][Y[j]] X[i][Y[-j]] where negative indexing represents the complement, so we have to do ev2% to extract only the ones we want.



                  e				| eval as a list l
                  : | dup
                  w | wrap as a list
                  ; | push l again
                  ċ | push [1..len(l)]
                  z | push all subsets of [1..len(l)] -- index powerset.
                  ⟨ ⟩⁇ | filter this for:
                  ọ | deltas
                  1>¦ | are greater than 1
                  ẏ | all (all deltas greater than 1)
                  ‼⁇ | filter for non-empty lists
                  E‡ | table extract elements. Given l and index set i, this pushes
                  | [l[i] l[setdiff(1..l,i)]] for some reason
                  ev2% | get the l[i] only by unlisting, reversing, and taking every other element
                  Σ⌠ | Get the one with the maximum sum





                  share|improve this answer









                  $endgroup$












                  • $begingroup$
                    Out of curiosity, why does the output have two trailing ]] instead of one?
                    $endgroup$
                    – Kevin Cruijssen
                    2 days ago











                  • $begingroup$
                    @KevinCruijssen Just another fun quirk of the interpreter; all lists are printed out like that, so [[1] [2]] gets printed [[1]] [2]]]] which makes it super hard to read/debug list output.
                    $endgroup$
                    – Giuseppe
                    2 days ago










                  • $begingroup$
                    I think it's because of the expression re.sub(" ?$","]",result) in the interpreter which should instead be re.sub(" +$","]",result) but my python is super bad.
                    $endgroup$
                    – Giuseppe
                    2 days ago



















                  2












                  $begingroup$


                  J, 54 bytes



                  [:(>@:@/:+/&>)]<@#~"1[:(#~0=1 1+/@E."1])[:#:@.@i.2^#


                  Try it online!






                  share|improve this answer









                  $endgroup$




















                    1












                    $begingroup$


                    Haskell, 300 168 bytes





                    import Data.List
                    h[]=1>2
                    h(x:y)=fst$foldl(a c->((fst a)&&(c-snd a>1),c))(1<2,x)y
                    z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]


                    Try it online!



                    -132 bytes thanks to all the feedback from @nimi :)




                    Original



                    Ungolfed (original)



                    import Data.List
                    import Data.Function

                    f :: [Int] -> [(Int, Int)] -- attach indices for later use
                    f [] = []
                    f xs = zip xs [0..length xs]

                    g :: [[(Int, Int)]] -> [([Int], [Int])] -- rearrange into list of tuples
                    g [] = []
                    g (x:xs) = (map fst x, map snd x) : g xs

                    h :: [Int] -> Bool -- predicate that checks if the indices are at least 2 apart from each other
                    h [] = False
                    h (x:xs) = fst $ foldl (acc curr -> ((fst acc) && (curr - snd acc > 1), curr)) (True, x) xs
                    j :: [([Int], [Int])] -> [([Int], [Int])] -- remove sets that don't satisfy the condition
                    j xs = filter ((elements, indices) -> h indices) xs

                    k :: [([Int], [Int])] -> [(Int, ([Int], [Int]))] -- calculate some of elements
                    k xs = map ((elements, indices) -> (foldl1 (+) elements, (elements, indices))) xs

                    l :: [(Int, ([Int], [Int]))] -> ([Int], [Int]) -- grab max
                    l xs = snd $ last $ sortBy (compare `on` fst) xs

                    z -- put things together
                    ```





                    share|improve this answer










                    New contributor




                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.






                    $endgroup$








                    • 1




                      $begingroup$
                      Some tips: flip the element and its index within the pairs returned by f: f x=zip[0..length x]x, so f becomes f=zip[0..]. g is just g=map unzip. The function to filter with in j is h.fst (<- flipped pairs!). j=filter(h.fst). The foldl1+ from k is sum and with a pointfree pair making k=map((,)=<<sum.snd). sortBy(...) can be replaced by sortOn fst: l=snd.last.sortOn fst. Finally as you are using all functions only once, you can inline them into a single pointfree expression: z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]
                      $endgroup$
                      – nimi
                      Apr 17 at 16:31











                    • $begingroup$
                      .... Try it online!.
                      $endgroup$
                      – nimi
                      Apr 17 at 16:31










                    • $begingroup$
                      oh, and no need to import Data.Function anymore.
                      $endgroup$
                      – nimi
                      Apr 17 at 16:32










                    • $begingroup$
                      That's great, thanks for the feedback :)
                      $endgroup$
                      – bugs
                      Apr 17 at 17:05










                    • $begingroup$
                      Next h: we're looking for non-adjacent elements, i.e. the difference of adjacent indices must be >1. zipWith(-)=<<tail builds such a list of differences, but fails for the empty list, so we need an additional tail on the subsequences to get rid of it. Inline again. Try it online!
                      $endgroup$
                      – nimi
                      Apr 17 at 17:27


















                    1












                    $begingroup$


                    Charcoal, 46 bytes



                    ≔⟦υ⟧ηFθ«≔υζ≔Eη⁺κ⟦ι⟧υ≔⁺ζηη»≔Φ⁺υηιη≔EηΣιζI§η⌕ζ⌈ζ


                    Try it online! Link is to verbose version of code. Explanation:



                    ≔⟦υ⟧η


                    The variable u is predefined with an empty list. This is put in a list which is assigned to h. These variables act as accumulators. u contains the sublists that include the latest element of the input q while h contains the sublists that do not (and therefore are suitable for appending the next element of the input).



                    Fθ«


                    Loop over the elements of the input.



                    ≔υζ


                    Save the list of sublists that contain the previous element.



                    ≔Eη⁺κ⟦ι⟧υ


                    Take all of the sublists that do not contain the previous element, append the current element, and save the result as the list of sublists that contain the current element. (I don't use Push here as I need to clone the list.)



                    ≔⁺ζηη»


                    Concatenate both previous sublists into the new list of sublists that do not contain the current element.



                    ≔Φ⁺υηιη


                    Concatenate the sublists one last time and remove the original empty list (which Charcoal can't sum anyway).



                    ≔EηΣιζ


                    Compute the sums of all of the sublists.



                    I§η⌕ζ⌈ζ


                    Find an index of the greatest sum and output the corresponding sublist.






                    share|improve this answer









                    $endgroup$




















                      1












                      $begingroup$


                      Wolfram Language (Mathematica), 70 bytes



                      MaximalBy[Select[q=Rest@Subsets@#,Or@@(MatchQ[#~Riffle~_]/@q)&],Tr,1]&


                      Try it online!



                      High-level search



                       Select[q=Rest@Subsets@#, ] (*choose nonempty subsets of the input such that*)
                      Or@@(MatchQ[ ]/@q)& (*there exists a subset of the input which matches*)
                      #~Riffle~_ (*this list, with an item inserted between adjacent elements*)
                      MaximalBy[ ,Tr,1]& (*and return one with the greatest total*)


                      ,1 is required so as not to inadvertently return invalid sets (otherwise, for example, an input of 1,1,1 would result in an output of 1,1,1,1,1,1)






                      share|improve this answer









                      $endgroup$




















                        1












                        $begingroup$


                        Japt -h, 22 bytes



                        Êo à k_mÄ øZÃm!gU
                        fÊñx


                        Try it






                        share|improve this answer









                        $endgroup$




















                          1












                          $begingroup$


                          Japt -h, 21 bytes



                          Ever have one of those challenges where you completely forget how to golf?!



                          ð¤à fÊk_än ø1îmgUÃñx


                          Try it



                          ð¤à fÊk_än ø1îmgUÃñx :Implicit input of array U
                          ð :Indices of elements that return true when
                          ¤ : Converted to a base-2 string (to account for 0s)
                          à :Combinations
                          f :Filter by
                          Ê : Length (to remove the empty combination)
                          k_ :Remove elements that return true
                          än : Deltas
                          ø1 : Contains 1
                          Ã :End remove
                          ® :Map
                          m : Map
                          gU : Index into U
                          Ã :End map
                          ñ :Sort by
                          x : Sum
                          :Implicit output of last element





                          share|improve this answer











                          $endgroup$




















                            0












                            $begingroup$


                            Python 2, 63 70 65 bytes





                            f=lambda a:a and max([a[:1],a[:1]+f(a[2:]),f(a[1:])],key=sum)or a


                            Try it online!



                            5 bytes thx to ArBo






                            share|improve this answer











                            $endgroup$












                            • $begingroup$
                              Your test case [1, 7, 4, -2] [1, 4] 5 7 is getting the wrong answer.
                              $endgroup$
                              – xnor
                              23 hours ago










                            • $begingroup$
                              @xnor: fixed now.
                              $endgroup$
                              – Chas Brown
                              18 hours ago










                            • $begingroup$
                              65 bytes
                              $endgroup$
                              – ArBo
                              6 hours ago











                            Your Answer






                            StackExchange.ifUsing("editor", function ()
                            StackExchange.using("externalEditor", function ()
                            StackExchange.using("snippets", function ()
                            StackExchange.snippets.init();
                            );
                            );
                            , "code-snippets");

                            StackExchange.ready(function()
                            var channelOptions =
                            tags: "".split(" "),
                            id: "200"
                            ;
                            initTagRenderer("".split(" "), "".split(" "), channelOptions);

                            StackExchange.using("externalEditor", function()
                            // Have to fire editor after snippets, if snippets enabled
                            if (StackExchange.settings.snippets.snippetsEnabled)
                            StackExchange.using("snippets", function()
                            createEditor();
                            );

                            else
                            createEditor();

                            );

                            function createEditor()
                            StackExchange.prepareEditor(
                            heartbeatType: 'answer',
                            autoActivateHeartbeat: false,
                            convertImagesToLinks: false,
                            noModals: true,
                            showLowRepImageUploadWarning: true,
                            reputationToPostImages: null,
                            bindNavPrevention: true,
                            postfix: "",
                            imageUploader:
                            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                            allowUrls: true
                            ,
                            onDemand: true,
                            discardSelector: ".discard-answer"
                            ,immediatelyShowMarkdownHelp:true
                            );



                            );













                            draft saved

                            draft discarded


















                            StackExchange.ready(
                            function ()
                            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f183390%2fmaximum-summed-subsequences-with-non-adjacent-items%23new-answer', 'question_page');

                            );

                            Post as a guest















                            Required, but never shown

























                            19 Answers
                            19






                            active

                            oldest

                            votes








                            19 Answers
                            19






                            active

                            oldest

                            votes









                            active

                            oldest

                            votes






                            active

                            oldest

                            votes









                            5












                            $begingroup$


                            05AB1E, 14 bytes



                            Saved 1 byte thanks to Kevin Cruijssen



                            ā<æʒĆ¥≠W}èΣO}θ


                            Try it online!
                            or as a Test Suite



                            Explanation



                            ā< # push [0 ... len(input)-1]
                            æ # compute powerset
                            ʒ } # filter, keep lists where:
                            ≠W # no element is 1 in the
                            ¥ # deltas
                            Ć # of the list with the head appended
                            è # index into the input with each
                            ΣO} # sort by sum
                            θ # take the last element





                            share|improve this answer











                            $endgroup$












                            • $begingroup$
                              You may not be happy, but it's still 4 bytes shorter than my initial solution. ;) And you can golf 1 more changing ¤ª to Ć.
                              $endgroup$
                              – Kevin Cruijssen
                              Apr 17 at 16:40











                            • $begingroup$
                              @KevinCruijssen: Oh yeah! For some reason I had convinced myself I needed a repeat element at the end. Thanks!
                              $endgroup$
                              – Emigna
                              Apr 17 at 17:00















                            5












                            $begingroup$


                            05AB1E, 14 bytes



                            Saved 1 byte thanks to Kevin Cruijssen



                            ā<æʒĆ¥≠W}èΣO}θ


                            Try it online!
                            or as a Test Suite



                            Explanation



                            ā< # push [0 ... len(input)-1]
                            æ # compute powerset
                            ʒ } # filter, keep lists where:
                            ≠W # no element is 1 in the
                            ¥ # deltas
                            Ć # of the list with the head appended
                            è # index into the input with each
                            ΣO} # sort by sum
                            θ # take the last element





                            share|improve this answer











                            $endgroup$












                            • $begingroup$
                              You may not be happy, but it's still 4 bytes shorter than my initial solution. ;) And you can golf 1 more changing ¤ª to Ć.
                              $endgroup$
                              – Kevin Cruijssen
                              Apr 17 at 16:40











                            • $begingroup$
                              @KevinCruijssen: Oh yeah! For some reason I had convinced myself I needed a repeat element at the end. Thanks!
                              $endgroup$
                              – Emigna
                              Apr 17 at 17:00













                            5












                            5








                            5





                            $begingroup$


                            05AB1E, 14 bytes



                            Saved 1 byte thanks to Kevin Cruijssen



                            ā<æʒĆ¥≠W}èΣO}θ


                            Try it online!
                            or as a Test Suite



                            Explanation



                            ā< # push [0 ... len(input)-1]
                            æ # compute powerset
                            ʒ } # filter, keep lists where:
                            ≠W # no element is 1 in the
                            ¥ # deltas
                            Ć # of the list with the head appended
                            è # index into the input with each
                            ΣO} # sort by sum
                            θ # take the last element





                            share|improve this answer











                            $endgroup$




                            05AB1E, 14 bytes



                            Saved 1 byte thanks to Kevin Cruijssen



                            ā<æʒĆ¥≠W}èΣO}θ


                            Try it online!
                            or as a Test Suite



                            Explanation



                            ā< # push [0 ... len(input)-1]
                            æ # compute powerset
                            ʒ } # filter, keep lists where:
                            ≠W # no element is 1 in the
                            ¥ # deltas
                            Ć # of the list with the head appended
                            è # index into the input with each
                            ΣO} # sort by sum
                            θ # take the last element






                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited Apr 17 at 17:00

























                            answered Apr 17 at 14:39









                            EmignaEmigna

                            48.2k434146




                            48.2k434146











                            • $begingroup$
                              You may not be happy, but it's still 4 bytes shorter than my initial solution. ;) And you can golf 1 more changing ¤ª to Ć.
                              $endgroup$
                              – Kevin Cruijssen
                              Apr 17 at 16:40











                            • $begingroup$
                              @KevinCruijssen: Oh yeah! For some reason I had convinced myself I needed a repeat element at the end. Thanks!
                              $endgroup$
                              – Emigna
                              Apr 17 at 17:00
















                            • $begingroup$
                              You may not be happy, but it's still 4 bytes shorter than my initial solution. ;) And you can golf 1 more changing ¤ª to Ć.
                              $endgroup$
                              – Kevin Cruijssen
                              Apr 17 at 16:40











                            • $begingroup$
                              @KevinCruijssen: Oh yeah! For some reason I had convinced myself I needed a repeat element at the end. Thanks!
                              $endgroup$
                              – Emigna
                              Apr 17 at 17:00















                            $begingroup$
                            You may not be happy, but it's still 4 bytes shorter than my initial solution. ;) And you can golf 1 more changing ¤ª to Ć.
                            $endgroup$
                            – Kevin Cruijssen
                            Apr 17 at 16:40





                            $begingroup$
                            You may not be happy, but it's still 4 bytes shorter than my initial solution. ;) And you can golf 1 more changing ¤ª to Ć.
                            $endgroup$
                            – Kevin Cruijssen
                            Apr 17 at 16:40













                            $begingroup$
                            @KevinCruijssen: Oh yeah! For some reason I had convinced myself I needed a repeat element at the end. Thanks!
                            $endgroup$
                            – Emigna
                            Apr 17 at 17:00




                            $begingroup$
                            @KevinCruijssen: Oh yeah! For some reason I had convinced myself I needed a repeat element at the end. Thanks!
                            $endgroup$
                            – Emigna
                            Apr 17 at 17:00











                            5












                            $begingroup$


                            Brachylog (v2), 14 bytes



                            ~ba~c∋₁ᵐᶠ+ᵒt


                            Try it online!



                            Function submission; input from the left, output from the right, as usual. Very slow; a five-element list is probably the maximum for testing on TIO.



                            ~ba~c∋₁ᵐᶠ+ᵒt
                            ~b Prepend an arbitrary element to the input
                            a Take a prefix or suffix of the resulting list
                            ~c Ordered partition into contiguous sublists
                            ∋₁ Take the second element
                            ᵐ of each sublist
                            ᶠ Find all possible ways to do this
                            +ᵒ Sort by sum
                            t Take the greatest


                            The results we get from prefixes aren't incorrect, but also aren't interesting; all possible results are generated via taking a suffix (which is possibly the list itself, but cannot be empty), but "suffix" is more verbose in Brachylog than "prefix or suffix", so I went with the version that's terser (and less efficient but still correct). The basic idea is that for each element we want in the output list, the partition into contiguous sublists needs to place that element and the element before into the same sublist (because the element is the second element of the sublist), so two consecutive elements can't appear in the result. On the other hand, it's fairly clear that any list without two consecutive elements can appear in the result. So once we have all possible candidate lists, we can just take the sums of all of them and see which one is largest.






                            share|improve this answer











                            $endgroup$

















                              5












                              $begingroup$


                              Brachylog (v2), 14 bytes



                              ~ba~c∋₁ᵐᶠ+ᵒt


                              Try it online!



                              Function submission; input from the left, output from the right, as usual. Very slow; a five-element list is probably the maximum for testing on TIO.



                              ~ba~c∋₁ᵐᶠ+ᵒt
                              ~b Prepend an arbitrary element to the input
                              a Take a prefix or suffix of the resulting list
                              ~c Ordered partition into contiguous sublists
                              ∋₁ Take the second element
                              ᵐ of each sublist
                              ᶠ Find all possible ways to do this
                              +ᵒ Sort by sum
                              t Take the greatest


                              The results we get from prefixes aren't incorrect, but also aren't interesting; all possible results are generated via taking a suffix (which is possibly the list itself, but cannot be empty), but "suffix" is more verbose in Brachylog than "prefix or suffix", so I went with the version that's terser (and less efficient but still correct). The basic idea is that for each element we want in the output list, the partition into contiguous sublists needs to place that element and the element before into the same sublist (because the element is the second element of the sublist), so two consecutive elements can't appear in the result. On the other hand, it's fairly clear that any list without two consecutive elements can appear in the result. So once we have all possible candidate lists, we can just take the sums of all of them and see which one is largest.






                              share|improve this answer











                              $endgroup$















                                5












                                5








                                5





                                $begingroup$


                                Brachylog (v2), 14 bytes



                                ~ba~c∋₁ᵐᶠ+ᵒt


                                Try it online!



                                Function submission; input from the left, output from the right, as usual. Very slow; a five-element list is probably the maximum for testing on TIO.



                                ~ba~c∋₁ᵐᶠ+ᵒt
                                ~b Prepend an arbitrary element to the input
                                a Take a prefix or suffix of the resulting list
                                ~c Ordered partition into contiguous sublists
                                ∋₁ Take the second element
                                ᵐ of each sublist
                                ᶠ Find all possible ways to do this
                                +ᵒ Sort by sum
                                t Take the greatest


                                The results we get from prefixes aren't incorrect, but also aren't interesting; all possible results are generated via taking a suffix (which is possibly the list itself, but cannot be empty), but "suffix" is more verbose in Brachylog than "prefix or suffix", so I went with the version that's terser (and less efficient but still correct). The basic idea is that for each element we want in the output list, the partition into contiguous sublists needs to place that element and the element before into the same sublist (because the element is the second element of the sublist), so two consecutive elements can't appear in the result. On the other hand, it's fairly clear that any list without two consecutive elements can appear in the result. So once we have all possible candidate lists, we can just take the sums of all of them and see which one is largest.






                                share|improve this answer











                                $endgroup$




                                Brachylog (v2), 14 bytes



                                ~ba~c∋₁ᵐᶠ+ᵒt


                                Try it online!



                                Function submission; input from the left, output from the right, as usual. Very slow; a five-element list is probably the maximum for testing on TIO.



                                ~ba~c∋₁ᵐᶠ+ᵒt
                                ~b Prepend an arbitrary element to the input
                                a Take a prefix or suffix of the resulting list
                                ~c Ordered partition into contiguous sublists
                                ∋₁ Take the second element
                                ᵐ of each sublist
                                ᶠ Find all possible ways to do this
                                +ᵒ Sort by sum
                                t Take the greatest


                                The results we get from prefixes aren't incorrect, but also aren't interesting; all possible results are generated via taking a suffix (which is possibly the list itself, but cannot be empty), but "suffix" is more verbose in Brachylog than "prefix or suffix", so I went with the version that's terser (and less efficient but still correct). The basic idea is that for each element we want in the output list, the partition into contiguous sublists needs to place that element and the element before into the same sublist (because the element is the second element of the sublist), so two consecutive elements can't appear in the result. On the other hand, it's fairly clear that any list without two consecutive elements can appear in the result. So once we have all possible candidate lists, we can just take the sums of all of them and see which one is largest.







                                share|improve this answer














                                share|improve this answer



                                share|improve this answer








                                answered Apr 17 at 17:54


























                                community wiki





                                ais523






















                                    5












                                    $begingroup$


                                    Husk, 11 bytes



                                    ►Σ†!¹mü≈tṖŀ


                                    Try it online!



                                    Explanation



                                    ►Σ†!¹mü≈tṖŀ Implicit input, say L=[4,5,3,4].
                                    ŀ Indices: [1,2,3,4]
                                    Ṗ Powerset: [[],[1],[2],[1,2],..,[1,2,3,4]]
                                    t Tail (remove the empty list): [[1],[2],[1,2],..,[1,2,3,4]]
                                    m For each,
                                    ü de-duplicate by
                                    ≈ differing by at most 1.
                                    For example, [1,2,4] becomes [1,4].
                                    † Deep map
                                    !¹ indexing into L: [[4],[5],[4],..,[5,4],[4,3]]
                                    ► Maximum by
                                    Σ sum: [5,4]





                                    share|improve this answer











                                    $endgroup$

















                                      5












                                      $begingroup$


                                      Husk, 11 bytes



                                      ►Σ†!¹mü≈tṖŀ


                                      Try it online!



                                      Explanation



                                      ►Σ†!¹mü≈tṖŀ Implicit input, say L=[4,5,3,4].
                                      ŀ Indices: [1,2,3,4]
                                      Ṗ Powerset: [[],[1],[2],[1,2],..,[1,2,3,4]]
                                      t Tail (remove the empty list): [[1],[2],[1,2],..,[1,2,3,4]]
                                      m For each,
                                      ü de-duplicate by
                                      ≈ differing by at most 1.
                                      For example, [1,2,4] becomes [1,4].
                                      † Deep map
                                      !¹ indexing into L: [[4],[5],[4],..,[5,4],[4,3]]
                                      ► Maximum by
                                      Σ sum: [5,4]





                                      share|improve this answer











                                      $endgroup$















                                        5












                                        5








                                        5





                                        $begingroup$


                                        Husk, 11 bytes



                                        ►Σ†!¹mü≈tṖŀ


                                        Try it online!



                                        Explanation



                                        ►Σ†!¹mü≈tṖŀ Implicit input, say L=[4,5,3,4].
                                        ŀ Indices: [1,2,3,4]
                                        Ṗ Powerset: [[],[1],[2],[1,2],..,[1,2,3,4]]
                                        t Tail (remove the empty list): [[1],[2],[1,2],..,[1,2,3,4]]
                                        m For each,
                                        ü de-duplicate by
                                        ≈ differing by at most 1.
                                        For example, [1,2,4] becomes [1,4].
                                        † Deep map
                                        !¹ indexing into L: [[4],[5],[4],..,[5,4],[4,3]]
                                        ► Maximum by
                                        Σ sum: [5,4]





                                        share|improve this answer











                                        $endgroup$




                                        Husk, 11 bytes



                                        ►Σ†!¹mü≈tṖŀ


                                        Try it online!



                                        Explanation



                                        ►Σ†!¹mü≈tṖŀ Implicit input, say L=[4,5,3,4].
                                        ŀ Indices: [1,2,3,4]
                                        Ṗ Powerset: [[],[1],[2],[1,2],..,[1,2,3,4]]
                                        t Tail (remove the empty list): [[1],[2],[1,2],..,[1,2,3,4]]
                                        m For each,
                                        ü de-duplicate by
                                        ≈ differing by at most 1.
                                        For example, [1,2,4] becomes [1,4].
                                        † Deep map
                                        !¹ indexing into L: [[4],[5],[4],..,[5,4],[4,3]]
                                        ► Maximum by
                                        Σ sum: [5,4]






                                        share|improve this answer














                                        share|improve this answer



                                        share|improve this answer








                                        edited Apr 17 at 18:06

























                                        answered Apr 17 at 17:51









                                        ZgarbZgarb

                                        26.9k462231




                                        26.9k462231





















                                            5












                                            $begingroup$


                                            R, 136 bytes





                                            function(l,G=Map(`[`,list(l),Filter(function(x)all(diff(x)>1),unlist(Map(combn,list(y<-seq(a=l)),y,s=F),F))))G[which.max(sapply(G,sum))]


                                            Try it online!



                                            Returns the shortest subsequence as a list, breaking ties on lexicographically first by indices.



                                            Brute-force generates all index subsequences, then Filters for those that are non-adjacent, i.e., where all(diff(x)>1). Then subsets [ into l using these indices, selecting [[ the first one where the sum is the max (which.max).



                                            I'm pretty sure this is the first R answer I've ever used that uses Filter!






                                            share|improve this answer









                                            $endgroup$

















                                              5












                                              $begingroup$


                                              R, 136 bytes





                                              function(l,G=Map(`[`,list(l),Filter(function(x)all(diff(x)>1),unlist(Map(combn,list(y<-seq(a=l)),y,s=F),F))))G[which.max(sapply(G,sum))]


                                              Try it online!



                                              Returns the shortest subsequence as a list, breaking ties on lexicographically first by indices.



                                              Brute-force generates all index subsequences, then Filters for those that are non-adjacent, i.e., where all(diff(x)>1). Then subsets [ into l using these indices, selecting [[ the first one where the sum is the max (which.max).



                                              I'm pretty sure this is the first R answer I've ever used that uses Filter!






                                              share|improve this answer









                                              $endgroup$















                                                5












                                                5








                                                5





                                                $begingroup$


                                                R, 136 bytes





                                                function(l,G=Map(`[`,list(l),Filter(function(x)all(diff(x)>1),unlist(Map(combn,list(y<-seq(a=l)),y,s=F),F))))G[which.max(sapply(G,sum))]


                                                Try it online!



                                                Returns the shortest subsequence as a list, breaking ties on lexicographically first by indices.



                                                Brute-force generates all index subsequences, then Filters for those that are non-adjacent, i.e., where all(diff(x)>1). Then subsets [ into l using these indices, selecting [[ the first one where the sum is the max (which.max).



                                                I'm pretty sure this is the first R answer I've ever used that uses Filter!






                                                share|improve this answer









                                                $endgroup$




                                                R, 136 bytes





                                                function(l,G=Map(`[`,list(l),Filter(function(x)all(diff(x)>1),unlist(Map(combn,list(y<-seq(a=l)),y,s=F),F))))G[which.max(sapply(G,sum))]


                                                Try it online!



                                                Returns the shortest subsequence as a list, breaking ties on lexicographically first by indices.



                                                Brute-force generates all index subsequences, then Filters for those that are non-adjacent, i.e., where all(diff(x)>1). Then subsets [ into l using these indices, selecting [[ the first one where the sum is the max (which.max).



                                                I'm pretty sure this is the first R answer I've ever used that uses Filter!







                                                share|improve this answer












                                                share|improve this answer



                                                share|improve this answer










                                                answered 2 days ago









                                                GiuseppeGiuseppe

                                                18k31155




                                                18k31155





















                                                    5












                                                    $begingroup$


                                                    Haskell, 60 bytes





                                                    snd.([]%)
                                                    r%(h:t)=max(r%t)$(r++[h])%drop 1t
                                                    r%_=(sum r<$r,r)


                                                    Try it online!



                                                    The helper function % recursively branches on choosing whether the include the first element and drop the second, or to skip the first element. It takes the maximum of all outcomes, which are tuples whose first element is the sum, and whose second element is the corresponding list which is extracted for the output.



                                                    To handle the rule that the empty list is disallowed even if it would have the smallest trick, we do a cute trick of writing sum r<$r rather than sum r.This makes a list whose elements all are sum r and whose length is that of r. That way, when we choose the maximum, we prioritize any list over an empty r, but otherwise comparisons depend on the first element which is sum r .






                                                    share|improve this answer









                                                    $endgroup$

















                                                      5












                                                      $begingroup$


                                                      Haskell, 60 bytes





                                                      snd.([]%)
                                                      r%(h:t)=max(r%t)$(r++[h])%drop 1t
                                                      r%_=(sum r<$r,r)


                                                      Try it online!



                                                      The helper function % recursively branches on choosing whether the include the first element and drop the second, or to skip the first element. It takes the maximum of all outcomes, which are tuples whose first element is the sum, and whose second element is the corresponding list which is extracted for the output.



                                                      To handle the rule that the empty list is disallowed even if it would have the smallest trick, we do a cute trick of writing sum r<$r rather than sum r.This makes a list whose elements all are sum r and whose length is that of r. That way, when we choose the maximum, we prioritize any list over an empty r, but otherwise comparisons depend on the first element which is sum r .






                                                      share|improve this answer









                                                      $endgroup$















                                                        5












                                                        5








                                                        5





                                                        $begingroup$


                                                        Haskell, 60 bytes





                                                        snd.([]%)
                                                        r%(h:t)=max(r%t)$(r++[h])%drop 1t
                                                        r%_=(sum r<$r,r)


                                                        Try it online!



                                                        The helper function % recursively branches on choosing whether the include the first element and drop the second, or to skip the first element. It takes the maximum of all outcomes, which are tuples whose first element is the sum, and whose second element is the corresponding list which is extracted for the output.



                                                        To handle the rule that the empty list is disallowed even if it would have the smallest trick, we do a cute trick of writing sum r<$r rather than sum r.This makes a list whose elements all are sum r and whose length is that of r. That way, when we choose the maximum, we prioritize any list over an empty r, but otherwise comparisons depend on the first element which is sum r .






                                                        share|improve this answer









                                                        $endgroup$




                                                        Haskell, 60 bytes





                                                        snd.([]%)
                                                        r%(h:t)=max(r%t)$(r++[h])%drop 1t
                                                        r%_=(sum r<$r,r)


                                                        Try it online!



                                                        The helper function % recursively branches on choosing whether the include the first element and drop the second, or to skip the first element. It takes the maximum of all outcomes, which are tuples whose first element is the sum, and whose second element is the corresponding list which is extracted for the output.



                                                        To handle the rule that the empty list is disallowed even if it would have the smallest trick, we do a cute trick of writing sum r<$r rather than sum r.This makes a list whose elements all are sum r and whose length is that of r. That way, when we choose the maximum, we prioritize any list over an empty r, but otherwise comparisons depend on the first element which is sum r .







                                                        share|improve this answer












                                                        share|improve this answer



                                                        share|improve this answer










                                                        answered 2 days ago









                                                        xnorxnor

                                                        94.3k18192452




                                                        94.3k18192452





















                                                            3












                                                            $begingroup$


                                                            Jelly, 16 14 bytes



                                                            JŒPḊf’$ÐḟịµSÞṪ


                                                            Try it online!



                                                            Thanks to @EriktheOutgolfer for saving 2 bytes!






                                                            share|improve this answer











                                                            $endgroup$












                                                            • $begingroup$
                                                              14 bytes.
                                                              $endgroup$
                                                              – Erik the Outgolfer
                                                              Apr 17 at 18:17















                                                            3












                                                            $begingroup$


                                                            Jelly, 16 14 bytes



                                                            JŒPḊf’$ÐḟịµSÞṪ


                                                            Try it online!



                                                            Thanks to @EriktheOutgolfer for saving 2 bytes!






                                                            share|improve this answer











                                                            $endgroup$












                                                            • $begingroup$
                                                              14 bytes.
                                                              $endgroup$
                                                              – Erik the Outgolfer
                                                              Apr 17 at 18:17













                                                            3












                                                            3








                                                            3





                                                            $begingroup$


                                                            Jelly, 16 14 bytes



                                                            JŒPḊf’$ÐḟịµSÞṪ


                                                            Try it online!



                                                            Thanks to @EriktheOutgolfer for saving 2 bytes!






                                                            share|improve this answer











                                                            $endgroup$




                                                            Jelly, 16 14 bytes



                                                            JŒPḊf’$ÐḟịµSÞṪ


                                                            Try it online!



                                                            Thanks to @EriktheOutgolfer for saving 2 bytes!







                                                            share|improve this answer














                                                            share|improve this answer



                                                            share|improve this answer








                                                            edited Apr 17 at 18:25

























                                                            answered Apr 17 at 14:15









                                                            Nick KennedyNick Kennedy

                                                            1,88149




                                                            1,88149











                                                            • $begingroup$
                                                              14 bytes.
                                                              $endgroup$
                                                              – Erik the Outgolfer
                                                              Apr 17 at 18:17
















                                                            • $begingroup$
                                                              14 bytes.
                                                              $endgroup$
                                                              – Erik the Outgolfer
                                                              Apr 17 at 18:17















                                                            $begingroup$
                                                            14 bytes.
                                                            $endgroup$
                                                            – Erik the Outgolfer
                                                            Apr 17 at 18:17




                                                            $begingroup$
                                                            14 bytes.
                                                            $endgroup$
                                                            – Erik the Outgolfer
                                                            Apr 17 at 18:17











                                                            3












                                                            $begingroup$

                                                            JavaScript (ES6),  138 132 130 129  126 bytes



                                                            Outputs key-value pairs.





                                                            a=>a.reduce((a,x,i)=>[...a,...a.map(y=>[[x,i],...y])],[[]]).map(m=a=>a.some(s=p=([v,i])=>p-(s=~~s+v,p=i)<2)|s<m||(r=a,m=s))&&r


                                                            Try it online!



                                                            Step 1



                                                            We first compute the powerset of the input with $[value, index]$ pairs.



                                                            a.reduce((a, x, i) => // for each value x at position i:
                                                            [ // update a[] to a new array consisting of:
                                                            ...a, // all previous entries
                                                            ...a.map(y => // for each value y in a[]:
                                                            [[x, i], ...y] // append [x, i], followed by all original entries
                                                            ) // end of map()
                                                            ], // end of new array
                                                            [[]] // start with a = [[]]
                                                            ) // end of reduce()


                                                            Step 2



                                                            We then look for the maximum sum $m$ among these sets, discarding sets with at least two adjacent elements. The best set is stored in $r$.



                                                            .map(m = // initialize m to a non-numeric value
                                                            a => // for each entry a[] in the powerset:
                                                            a.some(s = p = // initialize s and p to non numeric values
                                                            ([v, i]) => // for each value v and each index i in a[]:
                                                            p - ( // compute p - i
                                                            s = ~~s + v, // add v to s
                                                            p = i // update p to i
                                                            ) < 2 // if p - i is less than 2, yield true
                                                            ) | // end of some()
                                                            s < m || // unless some() was truthy or s is less than m,
                                                            (r = a, m = s) // save a[] in r[] and update m to s
                                                            ) && r // end of map(); return r[]





                                                            share|improve this answer











                                                            $endgroup$

















                                                              3












                                                              $begingroup$

                                                              JavaScript (ES6),  138 132 130 129  126 bytes



                                                              Outputs key-value pairs.





                                                              a=>a.reduce((a,x,i)=>[...a,...a.map(y=>[[x,i],...y])],[[]]).map(m=a=>a.some(s=p=([v,i])=>p-(s=~~s+v,p=i)<2)|s<m||(r=a,m=s))&&r


                                                              Try it online!



                                                              Step 1



                                                              We first compute the powerset of the input with $[value, index]$ pairs.



                                                              a.reduce((a, x, i) => // for each value x at position i:
                                                              [ // update a[] to a new array consisting of:
                                                              ...a, // all previous entries
                                                              ...a.map(y => // for each value y in a[]:
                                                              [[x, i], ...y] // append [x, i], followed by all original entries
                                                              ) // end of map()
                                                              ], // end of new array
                                                              [[]] // start with a = [[]]
                                                              ) // end of reduce()


                                                              Step 2



                                                              We then look for the maximum sum $m$ among these sets, discarding sets with at least two adjacent elements. The best set is stored in $r$.



                                                              .map(m = // initialize m to a non-numeric value
                                                              a => // for each entry a[] in the powerset:
                                                              a.some(s = p = // initialize s and p to non numeric values
                                                              ([v, i]) => // for each value v and each index i in a[]:
                                                              p - ( // compute p - i
                                                              s = ~~s + v, // add v to s
                                                              p = i // update p to i
                                                              ) < 2 // if p - i is less than 2, yield true
                                                              ) | // end of some()
                                                              s < m || // unless some() was truthy or s is less than m,
                                                              (r = a, m = s) // save a[] in r[] and update m to s
                                                              ) && r // end of map(); return r[]





                                                              share|improve this answer











                                                              $endgroup$















                                                                3












                                                                3








                                                                3





                                                                $begingroup$

                                                                JavaScript (ES6),  138 132 130 129  126 bytes



                                                                Outputs key-value pairs.





                                                                a=>a.reduce((a,x,i)=>[...a,...a.map(y=>[[x,i],...y])],[[]]).map(m=a=>a.some(s=p=([v,i])=>p-(s=~~s+v,p=i)<2)|s<m||(r=a,m=s))&&r


                                                                Try it online!



                                                                Step 1



                                                                We first compute the powerset of the input with $[value, index]$ pairs.



                                                                a.reduce((a, x, i) => // for each value x at position i:
                                                                [ // update a[] to a new array consisting of:
                                                                ...a, // all previous entries
                                                                ...a.map(y => // for each value y in a[]:
                                                                [[x, i], ...y] // append [x, i], followed by all original entries
                                                                ) // end of map()
                                                                ], // end of new array
                                                                [[]] // start with a = [[]]
                                                                ) // end of reduce()


                                                                Step 2



                                                                We then look for the maximum sum $m$ among these sets, discarding sets with at least two adjacent elements. The best set is stored in $r$.



                                                                .map(m = // initialize m to a non-numeric value
                                                                a => // for each entry a[] in the powerset:
                                                                a.some(s = p = // initialize s and p to non numeric values
                                                                ([v, i]) => // for each value v and each index i in a[]:
                                                                p - ( // compute p - i
                                                                s = ~~s + v, // add v to s
                                                                p = i // update p to i
                                                                ) < 2 // if p - i is less than 2, yield true
                                                                ) | // end of some()
                                                                s < m || // unless some() was truthy or s is less than m,
                                                                (r = a, m = s) // save a[] in r[] and update m to s
                                                                ) && r // end of map(); return r[]





                                                                share|improve this answer











                                                                $endgroup$



                                                                JavaScript (ES6),  138 132 130 129  126 bytes



                                                                Outputs key-value pairs.





                                                                a=>a.reduce((a,x,i)=>[...a,...a.map(y=>[[x,i],...y])],[[]]).map(m=a=>a.some(s=p=([v,i])=>p-(s=~~s+v,p=i)<2)|s<m||(r=a,m=s))&&r


                                                                Try it online!



                                                                Step 1



                                                                We first compute the powerset of the input with $[value, index]$ pairs.



                                                                a.reduce((a, x, i) => // for each value x at position i:
                                                                [ // update a[] to a new array consisting of:
                                                                ...a, // all previous entries
                                                                ...a.map(y => // for each value y in a[]:
                                                                [[x, i], ...y] // append [x, i], followed by all original entries
                                                                ) // end of map()
                                                                ], // end of new array
                                                                [[]] // start with a = [[]]
                                                                ) // end of reduce()


                                                                Step 2



                                                                We then look for the maximum sum $m$ among these sets, discarding sets with at least two adjacent elements. The best set is stored in $r$.



                                                                .map(m = // initialize m to a non-numeric value
                                                                a => // for each entry a[] in the powerset:
                                                                a.some(s = p = // initialize s and p to non numeric values
                                                                ([v, i]) => // for each value v and each index i in a[]:
                                                                p - ( // compute p - i
                                                                s = ~~s + v, // add v to s
                                                                p = i // update p to i
                                                                ) < 2 // if p - i is less than 2, yield true
                                                                ) | // end of some()
                                                                s < m || // unless some() was truthy or s is less than m,
                                                                (r = a, m = s) // save a[] in r[] and update m to s
                                                                ) && r // end of map(); return r[]






                                                                share|improve this answer














                                                                share|improve this answer



                                                                share|improve this answer








                                                                edited Apr 18 at 2:32

























                                                                answered Apr 17 at 14:56









                                                                ArnauldArnauld

                                                                81.7k798337




                                                                81.7k798337





















                                                                    3












                                                                    $begingroup$

                                                                    Haskell, 81 80 bytes



                                                                    snd.maximum.map((,)=<<sum).tail.f
                                                                    f(a:b:c)=f(b:c)++map(a:)(f c)
                                                                    f a=[]:map(:[])a


                                                                    Try it online!



                                                                    f builds all valid subsequences by either skipping the next element (f(b:c)) or using it and skipping the next (map(a:)(f c)) and recursively work on the rest. For the result, build all subsequences (f), drop the empty subsequence (which occurs first in the list: tail), make pairs (<sum>,<subsequence>) (map((,)=<<sum)), find the maximum (pairs are compared in lexicographical order) -> maximum) and drop the sum (snd).



                                                                    Edit: -1 byte thanks to @Lynn.






                                                                    share|improve this answer











                                                                    $endgroup$








                                                                    • 1




                                                                      $begingroup$
                                                                      map(:[])a is a byte shorter than (pure<$>a) ^^
                                                                      $endgroup$
                                                                      – Lynn
                                                                      2 days ago















                                                                    3












                                                                    $begingroup$

                                                                    Haskell, 81 80 bytes



                                                                    snd.maximum.map((,)=<<sum).tail.f
                                                                    f(a:b:c)=f(b:c)++map(a:)(f c)
                                                                    f a=[]:map(:[])a


                                                                    Try it online!



                                                                    f builds all valid subsequences by either skipping the next element (f(b:c)) or using it and skipping the next (map(a:)(f c)) and recursively work on the rest. For the result, build all subsequences (f), drop the empty subsequence (which occurs first in the list: tail), make pairs (<sum>,<subsequence>) (map((,)=<<sum)), find the maximum (pairs are compared in lexicographical order) -> maximum) and drop the sum (snd).



                                                                    Edit: -1 byte thanks to @Lynn.






                                                                    share|improve this answer











                                                                    $endgroup$








                                                                    • 1




                                                                      $begingroup$
                                                                      map(:[])a is a byte shorter than (pure<$>a) ^^
                                                                      $endgroup$
                                                                      – Lynn
                                                                      2 days ago













                                                                    3












                                                                    3








                                                                    3





                                                                    $begingroup$

                                                                    Haskell, 81 80 bytes



                                                                    snd.maximum.map((,)=<<sum).tail.f
                                                                    f(a:b:c)=f(b:c)++map(a:)(f c)
                                                                    f a=[]:map(:[])a


                                                                    Try it online!



                                                                    f builds all valid subsequences by either skipping the next element (f(b:c)) or using it and skipping the next (map(a:)(f c)) and recursively work on the rest. For the result, build all subsequences (f), drop the empty subsequence (which occurs first in the list: tail), make pairs (<sum>,<subsequence>) (map((,)=<<sum)), find the maximum (pairs are compared in lexicographical order) -> maximum) and drop the sum (snd).



                                                                    Edit: -1 byte thanks to @Lynn.






                                                                    share|improve this answer











                                                                    $endgroup$



                                                                    Haskell, 81 80 bytes



                                                                    snd.maximum.map((,)=<<sum).tail.f
                                                                    f(a:b:c)=f(b:c)++map(a:)(f c)
                                                                    f a=[]:map(:[])a


                                                                    Try it online!



                                                                    f builds all valid subsequences by either skipping the next element (f(b:c)) or using it and skipping the next (map(a:)(f c)) and recursively work on the rest. For the result, build all subsequences (f), drop the empty subsequence (which occurs first in the list: tail), make pairs (<sum>,<subsequence>) (map((,)=<<sum)), find the maximum (pairs are compared in lexicographical order) -> maximum) and drop the sum (snd).



                                                                    Edit: -1 byte thanks to @Lynn.







                                                                    share|improve this answer














                                                                    share|improve this answer



                                                                    share|improve this answer








                                                                    edited 2 days ago

























                                                                    answered 2 days ago









                                                                    niminimi

                                                                    32.8k32489




                                                                    32.8k32489







                                                                    • 1




                                                                      $begingroup$
                                                                      map(:[])a is a byte shorter than (pure<$>a) ^^
                                                                      $endgroup$
                                                                      – Lynn
                                                                      2 days ago












                                                                    • 1




                                                                      $begingroup$
                                                                      map(:[])a is a byte shorter than (pure<$>a) ^^
                                                                      $endgroup$
                                                                      – Lynn
                                                                      2 days ago







                                                                    1




                                                                    1




                                                                    $begingroup$
                                                                    map(:[])a is a byte shorter than (pure<$>a) ^^
                                                                    $endgroup$
                                                                    – Lynn
                                                                    2 days ago




                                                                    $begingroup$
                                                                    map(:[])a is a byte shorter than (pure<$>a) ^^
                                                                    $endgroup$
                                                                    – Lynn
                                                                    2 days ago











                                                                    2












                                                                    $begingroup$


                                                                    Wolfram Language (Mathematica), 144 bytes



                                                                    If[Max[a=#]>(d=Max[m=Tr/@(g=a[[#]]&/@Select[Subsets[Range[x=Length@#],2,x]&@#,FreeQ[Differences@#,1]&]&@a)]),Max@a,g[[#]]&@@@Position[m,d]]&


                                                                    Try it online!






                                                                    share|improve this answer









                                                                    $endgroup$

















                                                                      2












                                                                      $begingroup$


                                                                      Wolfram Language (Mathematica), 144 bytes



                                                                      If[Max[a=#]>(d=Max[m=Tr/@(g=a[[#]]&/@Select[Subsets[Range[x=Length@#],2,x]&@#,FreeQ[Differences@#,1]&]&@a)]),Max@a,g[[#]]&@@@Position[m,d]]&


                                                                      Try it online!






                                                                      share|improve this answer









                                                                      $endgroup$















                                                                        2












                                                                        2








                                                                        2





                                                                        $begingroup$


                                                                        Wolfram Language (Mathematica), 144 bytes



                                                                        If[Max[a=#]>(d=Max[m=Tr/@(g=a[[#]]&/@Select[Subsets[Range[x=Length@#],2,x]&@#,FreeQ[Differences@#,1]&]&@a)]),Max@a,g[[#]]&@@@Position[m,d]]&


                                                                        Try it online!






                                                                        share|improve this answer









                                                                        $endgroup$




                                                                        Wolfram Language (Mathematica), 144 bytes



                                                                        If[Max[a=#]>(d=Max[m=Tr/@(g=a[[#]]&/@Select[Subsets[Range[x=Length@#],2,x]&@#,FreeQ[Differences@#,1]&]&@a)]),Max@a,g[[#]]&@@@Position[m,d]]&


                                                                        Try it online!







                                                                        share|improve this answer












                                                                        share|improve this answer



                                                                        share|improve this answer










                                                                        answered Apr 17 at 14:33









                                                                        J42161217J42161217

                                                                        14.3k21354




                                                                        14.3k21354





















                                                                            2












                                                                            $begingroup$

                                                                            Pyth, 19 bytes



                                                                            esDm@LQdtf!q#1.+TyU


                                                                            Try it online here, or verify all the test cases at once here.



                                                                            esDm@LQdtf!q#1.+TyUQ Implicit: Q=eval(input())
                                                                            Trailing Q inferred
                                                                            UQ Generate range [0-len(Q))
                                                                            y Take the powerset of the above
                                                                            f Filter keep elements of the above, as T, using:
                                                                            .+T Take differences of consecutive elements of T
                                                                            q#1 Keep those differences equal to 1
                                                                            ! Logical NOT - empty lists evaluate to true, populated ones to false
                                                                            Result of the filter is those sets without consecutive numbers
                                                                            t Drop the first element (empty set)
                                                                            m Map the remaining sets, as d, using:
                                                                            L d For each element of d...
                                                                            @ Q ... get the element in Q with that index
                                                                            sD Order the sets by their sum
                                                                            e Take the last element, implicit print





                                                                            share|improve this answer











                                                                            $endgroup$

















                                                                              2












                                                                              $begingroup$

                                                                              Pyth, 19 bytes



                                                                              esDm@LQdtf!q#1.+TyU


                                                                              Try it online here, or verify all the test cases at once here.



                                                                              esDm@LQdtf!q#1.+TyUQ Implicit: Q=eval(input())
                                                                              Trailing Q inferred
                                                                              UQ Generate range [0-len(Q))
                                                                              y Take the powerset of the above
                                                                              f Filter keep elements of the above, as T, using:
                                                                              .+T Take differences of consecutive elements of T
                                                                              q#1 Keep those differences equal to 1
                                                                              ! Logical NOT - empty lists evaluate to true, populated ones to false
                                                                              Result of the filter is those sets without consecutive numbers
                                                                              t Drop the first element (empty set)
                                                                              m Map the remaining sets, as d, using:
                                                                              L d For each element of d...
                                                                              @ Q ... get the element in Q with that index
                                                                              sD Order the sets by their sum
                                                                              e Take the last element, implicit print





                                                                              share|improve this answer











                                                                              $endgroup$















                                                                                2












                                                                                2








                                                                                2





                                                                                $begingroup$

                                                                                Pyth, 19 bytes



                                                                                esDm@LQdtf!q#1.+TyU


                                                                                Try it online here, or verify all the test cases at once here.



                                                                                esDm@LQdtf!q#1.+TyUQ Implicit: Q=eval(input())
                                                                                Trailing Q inferred
                                                                                UQ Generate range [0-len(Q))
                                                                                y Take the powerset of the above
                                                                                f Filter keep elements of the above, as T, using:
                                                                                .+T Take differences of consecutive elements of T
                                                                                q#1 Keep those differences equal to 1
                                                                                ! Logical NOT - empty lists evaluate to true, populated ones to false
                                                                                Result of the filter is those sets without consecutive numbers
                                                                                t Drop the first element (empty set)
                                                                                m Map the remaining sets, as d, using:
                                                                                L d For each element of d...
                                                                                @ Q ... get the element in Q with that index
                                                                                sD Order the sets by their sum
                                                                                e Take the last element, implicit print





                                                                                share|improve this answer











                                                                                $endgroup$



                                                                                Pyth, 19 bytes



                                                                                esDm@LQdtf!q#1.+TyU


                                                                                Try it online here, or verify all the test cases at once here.



                                                                                esDm@LQdtf!q#1.+TyUQ Implicit: Q=eval(input())
                                                                                Trailing Q inferred
                                                                                UQ Generate range [0-len(Q))
                                                                                y Take the powerset of the above
                                                                                f Filter keep elements of the above, as T, using:
                                                                                .+T Take differences of consecutive elements of T
                                                                                q#1 Keep those differences equal to 1
                                                                                ! Logical NOT - empty lists evaluate to true, populated ones to false
                                                                                Result of the filter is those sets without consecutive numbers
                                                                                t Drop the first element (empty set)
                                                                                m Map the remaining sets, as d, using:
                                                                                L d For each element of d...
                                                                                @ Q ... get the element in Q with that index
                                                                                sD Order the sets by their sum
                                                                                e Take the last element, implicit print






                                                                                share|improve this answer














                                                                                share|improve this answer



                                                                                share|improve this answer








                                                                                edited Apr 17 at 15:06

























                                                                                answered Apr 17 at 13:40









                                                                                SokSok

                                                                                4,237925




                                                                                4,237925





















                                                                                    2












                                                                                    $begingroup$

                                                                                    T-SQL, 122 119 bytes



                                                                                    Input is a table variable.



                                                                                    This query picks all elements from the table variable, combining these with all non-adjacent elements with higher position values and show the text generated for the highest sum of these values.



                                                                                    WITH C(y,j,v)as(SELECT*,x*1FROM @
                                                                                    UNION ALL
                                                                                    SELECT y+','+x,i,v+x
                                                                                    FROM @ JOIN C ON j+1<i)SELECT
                                                                                    TOP 1y FROM C ORDER BY-v


                                                                                    Try it online ungolfed






                                                                                    share|improve this answer











                                                                                    $endgroup$

















                                                                                      2












                                                                                      $begingroup$

                                                                                      T-SQL, 122 119 bytes



                                                                                      Input is a table variable.



                                                                                      This query picks all elements from the table variable, combining these with all non-adjacent elements with higher position values and show the text generated for the highest sum of these values.



                                                                                      WITH C(y,j,v)as(SELECT*,x*1FROM @
                                                                                      UNION ALL
                                                                                      SELECT y+','+x,i,v+x
                                                                                      FROM @ JOIN C ON j+1<i)SELECT
                                                                                      TOP 1y FROM C ORDER BY-v


                                                                                      Try it online ungolfed






                                                                                      share|improve this answer











                                                                                      $endgroup$















                                                                                        2












                                                                                        2








                                                                                        2





                                                                                        $begingroup$

                                                                                        T-SQL, 122 119 bytes



                                                                                        Input is a table variable.



                                                                                        This query picks all elements from the table variable, combining these with all non-adjacent elements with higher position values and show the text generated for the highest sum of these values.



                                                                                        WITH C(y,j,v)as(SELECT*,x*1FROM @
                                                                                        UNION ALL
                                                                                        SELECT y+','+x,i,v+x
                                                                                        FROM @ JOIN C ON j+1<i)SELECT
                                                                                        TOP 1y FROM C ORDER BY-v


                                                                                        Try it online ungolfed






                                                                                        share|improve this answer











                                                                                        $endgroup$



                                                                                        T-SQL, 122 119 bytes



                                                                                        Input is a table variable.



                                                                                        This query picks all elements from the table variable, combining these with all non-adjacent elements with higher position values and show the text generated for the highest sum of these values.



                                                                                        WITH C(y,j,v)as(SELECT*,x*1FROM @
                                                                                        UNION ALL
                                                                                        SELECT y+','+x,i,v+x
                                                                                        FROM @ JOIN C ON j+1<i)SELECT
                                                                                        TOP 1y FROM C ORDER BY-v


                                                                                        Try it online ungolfed







                                                                                        share|improve this answer














                                                                                        share|improve this answer



                                                                                        share|improve this answer








                                                                                        edited 2 days ago

























                                                                                        answered Apr 18 at 3:50









                                                                                        t-clausen.dkt-clausen.dk

                                                                                        2,124414




                                                                                        2,124414





















                                                                                            2












                                                                                            $begingroup$


                                                                                            Gaia, 24 bytes



                                                                                            e:w;ċz⟨ọ1>¦ẏ⟩⁇‼⁇E‡ev2%Σ⌠


                                                                                            Try it online!



                                                                                            Ugh, E‡ does some weird stuff...according to the documentation, it should do something like "given length i set of lists X and length j set of indices Y, return X[i][Y[j]]", but instead returns [X[i][Y[j]] X[i][Y[-j]] where negative indexing represents the complement, so we have to do ev2% to extract only the ones we want.



                                                                                            e				| eval as a list l
                                                                                            : | dup
                                                                                            w | wrap as a list
                                                                                            ; | push l again
                                                                                            ċ | push [1..len(l)]
                                                                                            z | push all subsets of [1..len(l)] -- index powerset.
                                                                                            ⟨ ⟩⁇ | filter this for:
                                                                                            ọ | deltas
                                                                                            1>¦ | are greater than 1
                                                                                            ẏ | all (all deltas greater than 1)
                                                                                            ‼⁇ | filter for non-empty lists
                                                                                            E‡ | table extract elements. Given l and index set i, this pushes
                                                                                            | [l[i] l[setdiff(1..l,i)]] for some reason
                                                                                            ev2% | get the l[i] only by unlisting, reversing, and taking every other element
                                                                                            Σ⌠ | Get the one with the maximum sum





                                                                                            share|improve this answer









                                                                                            $endgroup$












                                                                                            • $begingroup$
                                                                                              Out of curiosity, why does the output have two trailing ]] instead of one?
                                                                                              $endgroup$
                                                                                              – Kevin Cruijssen
                                                                                              2 days ago











                                                                                            • $begingroup$
                                                                                              @KevinCruijssen Just another fun quirk of the interpreter; all lists are printed out like that, so [[1] [2]] gets printed [[1]] [2]]]] which makes it super hard to read/debug list output.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago










                                                                                            • $begingroup$
                                                                                              I think it's because of the expression re.sub(" ?$","]",result) in the interpreter which should instead be re.sub(" +$","]",result) but my python is super bad.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago
















                                                                                            2












                                                                                            $begingroup$


                                                                                            Gaia, 24 bytes



                                                                                            e:w;ċz⟨ọ1>¦ẏ⟩⁇‼⁇E‡ev2%Σ⌠


                                                                                            Try it online!



                                                                                            Ugh, E‡ does some weird stuff...according to the documentation, it should do something like "given length i set of lists X and length j set of indices Y, return X[i][Y[j]]", but instead returns [X[i][Y[j]] X[i][Y[-j]] where negative indexing represents the complement, so we have to do ev2% to extract only the ones we want.



                                                                                            e				| eval as a list l
                                                                                            : | dup
                                                                                            w | wrap as a list
                                                                                            ; | push l again
                                                                                            ċ | push [1..len(l)]
                                                                                            z | push all subsets of [1..len(l)] -- index powerset.
                                                                                            ⟨ ⟩⁇ | filter this for:
                                                                                            ọ | deltas
                                                                                            1>¦ | are greater than 1
                                                                                            ẏ | all (all deltas greater than 1)
                                                                                            ‼⁇ | filter for non-empty lists
                                                                                            E‡ | table extract elements. Given l and index set i, this pushes
                                                                                            | [l[i] l[setdiff(1..l,i)]] for some reason
                                                                                            ev2% | get the l[i] only by unlisting, reversing, and taking every other element
                                                                                            Σ⌠ | Get the one with the maximum sum





                                                                                            share|improve this answer









                                                                                            $endgroup$












                                                                                            • $begingroup$
                                                                                              Out of curiosity, why does the output have two trailing ]] instead of one?
                                                                                              $endgroup$
                                                                                              – Kevin Cruijssen
                                                                                              2 days ago











                                                                                            • $begingroup$
                                                                                              @KevinCruijssen Just another fun quirk of the interpreter; all lists are printed out like that, so [[1] [2]] gets printed [[1]] [2]]]] which makes it super hard to read/debug list output.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago










                                                                                            • $begingroup$
                                                                                              I think it's because of the expression re.sub(" ?$","]",result) in the interpreter which should instead be re.sub(" +$","]",result) but my python is super bad.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago














                                                                                            2












                                                                                            2








                                                                                            2





                                                                                            $begingroup$


                                                                                            Gaia, 24 bytes



                                                                                            e:w;ċz⟨ọ1>¦ẏ⟩⁇‼⁇E‡ev2%Σ⌠


                                                                                            Try it online!



                                                                                            Ugh, E‡ does some weird stuff...according to the documentation, it should do something like "given length i set of lists X and length j set of indices Y, return X[i][Y[j]]", but instead returns [X[i][Y[j]] X[i][Y[-j]] where negative indexing represents the complement, so we have to do ev2% to extract only the ones we want.



                                                                                            e				| eval as a list l
                                                                                            : | dup
                                                                                            w | wrap as a list
                                                                                            ; | push l again
                                                                                            ċ | push [1..len(l)]
                                                                                            z | push all subsets of [1..len(l)] -- index powerset.
                                                                                            ⟨ ⟩⁇ | filter this for:
                                                                                            ọ | deltas
                                                                                            1>¦ | are greater than 1
                                                                                            ẏ | all (all deltas greater than 1)
                                                                                            ‼⁇ | filter for non-empty lists
                                                                                            E‡ | table extract elements. Given l and index set i, this pushes
                                                                                            | [l[i] l[setdiff(1..l,i)]] for some reason
                                                                                            ev2% | get the l[i] only by unlisting, reversing, and taking every other element
                                                                                            Σ⌠ | Get the one with the maximum sum





                                                                                            share|improve this answer









                                                                                            $endgroup$




                                                                                            Gaia, 24 bytes



                                                                                            e:w;ċz⟨ọ1>¦ẏ⟩⁇‼⁇E‡ev2%Σ⌠


                                                                                            Try it online!



                                                                                            Ugh, E‡ does some weird stuff...according to the documentation, it should do something like "given length i set of lists X and length j set of indices Y, return X[i][Y[j]]", but instead returns [X[i][Y[j]] X[i][Y[-j]] where negative indexing represents the complement, so we have to do ev2% to extract only the ones we want.



                                                                                            e				| eval as a list l
                                                                                            : | dup
                                                                                            w | wrap as a list
                                                                                            ; | push l again
                                                                                            ċ | push [1..len(l)]
                                                                                            z | push all subsets of [1..len(l)] -- index powerset.
                                                                                            ⟨ ⟩⁇ | filter this for:
                                                                                            ọ | deltas
                                                                                            1>¦ | are greater than 1
                                                                                            ẏ | all (all deltas greater than 1)
                                                                                            ‼⁇ | filter for non-empty lists
                                                                                            E‡ | table extract elements. Given l and index set i, this pushes
                                                                                            | [l[i] l[setdiff(1..l,i)]] for some reason
                                                                                            ev2% | get the l[i] only by unlisting, reversing, and taking every other element
                                                                                            Σ⌠ | Get the one with the maximum sum






                                                                                            share|improve this answer












                                                                                            share|improve this answer



                                                                                            share|improve this answer










                                                                                            answered 2 days ago









                                                                                            GiuseppeGiuseppe

                                                                                            18k31155




                                                                                            18k31155











                                                                                            • $begingroup$
                                                                                              Out of curiosity, why does the output have two trailing ]] instead of one?
                                                                                              $endgroup$
                                                                                              – Kevin Cruijssen
                                                                                              2 days ago











                                                                                            • $begingroup$
                                                                                              @KevinCruijssen Just another fun quirk of the interpreter; all lists are printed out like that, so [[1] [2]] gets printed [[1]] [2]]]] which makes it super hard to read/debug list output.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago










                                                                                            • $begingroup$
                                                                                              I think it's because of the expression re.sub(" ?$","]",result) in the interpreter which should instead be re.sub(" +$","]",result) but my python is super bad.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago

















                                                                                            • $begingroup$
                                                                                              Out of curiosity, why does the output have two trailing ]] instead of one?
                                                                                              $endgroup$
                                                                                              – Kevin Cruijssen
                                                                                              2 days ago











                                                                                            • $begingroup$
                                                                                              @KevinCruijssen Just another fun quirk of the interpreter; all lists are printed out like that, so [[1] [2]] gets printed [[1]] [2]]]] which makes it super hard to read/debug list output.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago










                                                                                            • $begingroup$
                                                                                              I think it's because of the expression re.sub(" ?$","]",result) in the interpreter which should instead be re.sub(" +$","]",result) but my python is super bad.
                                                                                              $endgroup$
                                                                                              – Giuseppe
                                                                                              2 days ago
















                                                                                            $begingroup$
                                                                                            Out of curiosity, why does the output have two trailing ]] instead of one?
                                                                                            $endgroup$
                                                                                            – Kevin Cruijssen
                                                                                            2 days ago





                                                                                            $begingroup$
                                                                                            Out of curiosity, why does the output have two trailing ]] instead of one?
                                                                                            $endgroup$
                                                                                            – Kevin Cruijssen
                                                                                            2 days ago













                                                                                            $begingroup$
                                                                                            @KevinCruijssen Just another fun quirk of the interpreter; all lists are printed out like that, so [[1] [2]] gets printed [[1]] [2]]]] which makes it super hard to read/debug list output.
                                                                                            $endgroup$
                                                                                            – Giuseppe
                                                                                            2 days ago




                                                                                            $begingroup$
                                                                                            @KevinCruijssen Just another fun quirk of the interpreter; all lists are printed out like that, so [[1] [2]] gets printed [[1]] [2]]]] which makes it super hard to read/debug list output.
                                                                                            $endgroup$
                                                                                            – Giuseppe
                                                                                            2 days ago












                                                                                            $begingroup$
                                                                                            I think it's because of the expression re.sub(" ?$","]",result) in the interpreter which should instead be re.sub(" +$","]",result) but my python is super bad.
                                                                                            $endgroup$
                                                                                            – Giuseppe
                                                                                            2 days ago





                                                                                            $begingroup$
                                                                                            I think it's because of the expression re.sub(" ?$","]",result) in the interpreter which should instead be re.sub(" +$","]",result) but my python is super bad.
                                                                                            $endgroup$
                                                                                            – Giuseppe
                                                                                            2 days ago












                                                                                            2












                                                                                            $begingroup$


                                                                                            J, 54 bytes



                                                                                            [:(>@:@/:+/&>)]<@#~"1[:(#~0=1 1+/@E."1])[:#:@.@i.2^#


                                                                                            Try it online!






                                                                                            share|improve this answer









                                                                                            $endgroup$

















                                                                                              2












                                                                                              $begingroup$


                                                                                              J, 54 bytes



                                                                                              [:(>@:@/:+/&>)]<@#~"1[:(#~0=1 1+/@E."1])[:#:@.@i.2^#


                                                                                              Try it online!






                                                                                              share|improve this answer









                                                                                              $endgroup$















                                                                                                2












                                                                                                2








                                                                                                2





                                                                                                $begingroup$


                                                                                                J, 54 bytes



                                                                                                [:(>@:@/:+/&>)]<@#~"1[:(#~0=1 1+/@E."1])[:#:@.@i.2^#


                                                                                                Try it online!






                                                                                                share|improve this answer









                                                                                                $endgroup$




                                                                                                J, 54 bytes



                                                                                                [:(>@:@/:+/&>)]<@#~"1[:(#~0=1 1+/@E."1])[:#:@.@i.2^#


                                                                                                Try it online!







                                                                                                share|improve this answer












                                                                                                share|improve this answer



                                                                                                share|improve this answer










                                                                                                answered yesterday









                                                                                                JonahJonah

                                                                                                2,8781019




                                                                                                2,8781019





















                                                                                                    1












                                                                                                    $begingroup$


                                                                                                    Haskell, 300 168 bytes





                                                                                                    import Data.List
                                                                                                    h[]=1>2
                                                                                                    h(x:y)=fst$foldl(a c->((fst a)&&(c-snd a>1),c))(1<2,x)y
                                                                                                    z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]


                                                                                                    Try it online!



                                                                                                    -132 bytes thanks to all the feedback from @nimi :)




                                                                                                    Original



                                                                                                    Ungolfed (original)



                                                                                                    import Data.List
                                                                                                    import Data.Function

                                                                                                    f :: [Int] -> [(Int, Int)] -- attach indices for later use
                                                                                                    f [] = []
                                                                                                    f xs = zip xs [0..length xs]

                                                                                                    g :: [[(Int, Int)]] -> [([Int], [Int])] -- rearrange into list of tuples
                                                                                                    g [] = []
                                                                                                    g (x:xs) = (map fst x, map snd x) : g xs

                                                                                                    h :: [Int] -> Bool -- predicate that checks if the indices are at least 2 apart from each other
                                                                                                    h [] = False
                                                                                                    h (x:xs) = fst $ foldl (acc curr -> ((fst acc) && (curr - snd acc > 1), curr)) (True, x) xs
                                                                                                    j :: [([Int], [Int])] -> [([Int], [Int])] -- remove sets that don't satisfy the condition
                                                                                                    j xs = filter ((elements, indices) -> h indices) xs

                                                                                                    k :: [([Int], [Int])] -> [(Int, ([Int], [Int]))] -- calculate some of elements
                                                                                                    k xs = map ((elements, indices) -> (foldl1 (+) elements, (elements, indices))) xs

                                                                                                    l :: [(Int, ([Int], [Int]))] -> ([Int], [Int]) -- grab max
                                                                                                    l xs = snd $ last $ sortBy (compare `on` fst) xs

                                                                                                    z -- put things together
                                                                                                    ```





                                                                                                    share|improve this answer










                                                                                                    New contributor




                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.






                                                                                                    $endgroup$








                                                                                                    • 1




                                                                                                      $begingroup$
                                                                                                      Some tips: flip the element and its index within the pairs returned by f: f x=zip[0..length x]x, so f becomes f=zip[0..]. g is just g=map unzip. The function to filter with in j is h.fst (<- flipped pairs!). j=filter(h.fst). The foldl1+ from k is sum and with a pointfree pair making k=map((,)=<<sum.snd). sortBy(...) can be replaced by sortOn fst: l=snd.last.sortOn fst. Finally as you are using all functions only once, you can inline them into a single pointfree expression: z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31











                                                                                                    • $begingroup$
                                                                                                      .... Try it online!.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31










                                                                                                    • $begingroup$
                                                                                                      oh, and no need to import Data.Function anymore.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:32










                                                                                                    • $begingroup$
                                                                                                      That's great, thanks for the feedback :)
                                                                                                      $endgroup$
                                                                                                      – bugs
                                                                                                      Apr 17 at 17:05










                                                                                                    • $begingroup$
                                                                                                      Next h: we're looking for non-adjacent elements, i.e. the difference of adjacent indices must be >1. zipWith(-)=<<tail builds such a list of differences, but fails for the empty list, so we need an additional tail on the subsequences to get rid of it. Inline again. Try it online!
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 17:27















                                                                                                    1












                                                                                                    $begingroup$


                                                                                                    Haskell, 300 168 bytes





                                                                                                    import Data.List
                                                                                                    h[]=1>2
                                                                                                    h(x:y)=fst$foldl(a c->((fst a)&&(c-snd a>1),c))(1<2,x)y
                                                                                                    z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]


                                                                                                    Try it online!



                                                                                                    -132 bytes thanks to all the feedback from @nimi :)




                                                                                                    Original



                                                                                                    Ungolfed (original)



                                                                                                    import Data.List
                                                                                                    import Data.Function

                                                                                                    f :: [Int] -> [(Int, Int)] -- attach indices for later use
                                                                                                    f [] = []
                                                                                                    f xs = zip xs [0..length xs]

                                                                                                    g :: [[(Int, Int)]] -> [([Int], [Int])] -- rearrange into list of tuples
                                                                                                    g [] = []
                                                                                                    g (x:xs) = (map fst x, map snd x) : g xs

                                                                                                    h :: [Int] -> Bool -- predicate that checks if the indices are at least 2 apart from each other
                                                                                                    h [] = False
                                                                                                    h (x:xs) = fst $ foldl (acc curr -> ((fst acc) && (curr - snd acc > 1), curr)) (True, x) xs
                                                                                                    j :: [([Int], [Int])] -> [([Int], [Int])] -- remove sets that don't satisfy the condition
                                                                                                    j xs = filter ((elements, indices) -> h indices) xs

                                                                                                    k :: [([Int], [Int])] -> [(Int, ([Int], [Int]))] -- calculate some of elements
                                                                                                    k xs = map ((elements, indices) -> (foldl1 (+) elements, (elements, indices))) xs

                                                                                                    l :: [(Int, ([Int], [Int]))] -> ([Int], [Int]) -- grab max
                                                                                                    l xs = snd $ last $ sortBy (compare `on` fst) xs

                                                                                                    z -- put things together
                                                                                                    ```





                                                                                                    share|improve this answer










                                                                                                    New contributor




                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.






                                                                                                    $endgroup$








                                                                                                    • 1




                                                                                                      $begingroup$
                                                                                                      Some tips: flip the element and its index within the pairs returned by f: f x=zip[0..length x]x, so f becomes f=zip[0..]. g is just g=map unzip. The function to filter with in j is h.fst (<- flipped pairs!). j=filter(h.fst). The foldl1+ from k is sum and with a pointfree pair making k=map((,)=<<sum.snd). sortBy(...) can be replaced by sortOn fst: l=snd.last.sortOn fst. Finally as you are using all functions only once, you can inline them into a single pointfree expression: z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31











                                                                                                    • $begingroup$
                                                                                                      .... Try it online!.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31










                                                                                                    • $begingroup$
                                                                                                      oh, and no need to import Data.Function anymore.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:32










                                                                                                    • $begingroup$
                                                                                                      That's great, thanks for the feedback :)
                                                                                                      $endgroup$
                                                                                                      – bugs
                                                                                                      Apr 17 at 17:05










                                                                                                    • $begingroup$
                                                                                                      Next h: we're looking for non-adjacent elements, i.e. the difference of adjacent indices must be >1. zipWith(-)=<<tail builds such a list of differences, but fails for the empty list, so we need an additional tail on the subsequences to get rid of it. Inline again. Try it online!
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 17:27













                                                                                                    1












                                                                                                    1








                                                                                                    1





                                                                                                    $begingroup$


                                                                                                    Haskell, 300 168 bytes





                                                                                                    import Data.List
                                                                                                    h[]=1>2
                                                                                                    h(x:y)=fst$foldl(a c->((fst a)&&(c-snd a>1),c))(1<2,x)y
                                                                                                    z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]


                                                                                                    Try it online!



                                                                                                    -132 bytes thanks to all the feedback from @nimi :)




                                                                                                    Original



                                                                                                    Ungolfed (original)



                                                                                                    import Data.List
                                                                                                    import Data.Function

                                                                                                    f :: [Int] -> [(Int, Int)] -- attach indices for later use
                                                                                                    f [] = []
                                                                                                    f xs = zip xs [0..length xs]

                                                                                                    g :: [[(Int, Int)]] -> [([Int], [Int])] -- rearrange into list of tuples
                                                                                                    g [] = []
                                                                                                    g (x:xs) = (map fst x, map snd x) : g xs

                                                                                                    h :: [Int] -> Bool -- predicate that checks if the indices are at least 2 apart from each other
                                                                                                    h [] = False
                                                                                                    h (x:xs) = fst $ foldl (acc curr -> ((fst acc) && (curr - snd acc > 1), curr)) (True, x) xs
                                                                                                    j :: [([Int], [Int])] -> [([Int], [Int])] -- remove sets that don't satisfy the condition
                                                                                                    j xs = filter ((elements, indices) -> h indices) xs

                                                                                                    k :: [([Int], [Int])] -> [(Int, ([Int], [Int]))] -- calculate some of elements
                                                                                                    k xs = map ((elements, indices) -> (foldl1 (+) elements, (elements, indices))) xs

                                                                                                    l :: [(Int, ([Int], [Int]))] -> ([Int], [Int]) -- grab max
                                                                                                    l xs = snd $ last $ sortBy (compare `on` fst) xs

                                                                                                    z -- put things together
                                                                                                    ```





                                                                                                    share|improve this answer










                                                                                                    New contributor




                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.






                                                                                                    $endgroup$




                                                                                                    Haskell, 300 168 bytes





                                                                                                    import Data.List
                                                                                                    h[]=1>2
                                                                                                    h(x:y)=fst$foldl(a c->((fst a)&&(c-snd a>1),c))(1<2,x)y
                                                                                                    z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]


                                                                                                    Try it online!



                                                                                                    -132 bytes thanks to all the feedback from @nimi :)




                                                                                                    Original



                                                                                                    Ungolfed (original)



                                                                                                    import Data.List
                                                                                                    import Data.Function

                                                                                                    f :: [Int] -> [(Int, Int)] -- attach indices for later use
                                                                                                    f [] = []
                                                                                                    f xs = zip xs [0..length xs]

                                                                                                    g :: [[(Int, Int)]] -> [([Int], [Int])] -- rearrange into list of tuples
                                                                                                    g [] = []
                                                                                                    g (x:xs) = (map fst x, map snd x) : g xs

                                                                                                    h :: [Int] -> Bool -- predicate that checks if the indices are at least 2 apart from each other
                                                                                                    h [] = False
                                                                                                    h (x:xs) = fst $ foldl (acc curr -> ((fst acc) && (curr - snd acc > 1), curr)) (True, x) xs
                                                                                                    j :: [([Int], [Int])] -> [([Int], [Int])] -- remove sets that don't satisfy the condition
                                                                                                    j xs = filter ((elements, indices) -> h indices) xs

                                                                                                    k :: [([Int], [Int])] -> [(Int, ([Int], [Int]))] -- calculate some of elements
                                                                                                    k xs = map ((elements, indices) -> (foldl1 (+) elements, (elements, indices))) xs

                                                                                                    l :: [(Int, ([Int], [Int]))] -> ([Int], [Int]) -- grab max
                                                                                                    l xs = snd $ last $ sortBy (compare `on` fst) xs

                                                                                                    z -- put things together
                                                                                                    ```






                                                                                                    share|improve this answer










                                                                                                    New contributor




                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.









                                                                                                    share|improve this answer



                                                                                                    share|improve this answer








                                                                                                    edited Apr 17 at 17:14





















                                                                                                    New contributor




                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.









                                                                                                    answered Apr 17 at 15:40









                                                                                                    bugsbugs

                                                                                                    2014




                                                                                                    2014




                                                                                                    New contributor




                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.





                                                                                                    New contributor





                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.






                                                                                                    bugs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                                                                                    Check out our Code of Conduct.







                                                                                                    • 1




                                                                                                      $begingroup$
                                                                                                      Some tips: flip the element and its index within the pairs returned by f: f x=zip[0..length x]x, so f becomes f=zip[0..]. g is just g=map unzip. The function to filter with in j is h.fst (<- flipped pairs!). j=filter(h.fst). The foldl1+ from k is sum and with a pointfree pair making k=map((,)=<<sum.snd). sortBy(...) can be replaced by sortOn fst: l=snd.last.sortOn fst. Finally as you are using all functions only once, you can inline them into a single pointfree expression: z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31











                                                                                                    • $begingroup$
                                                                                                      .... Try it online!.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31










                                                                                                    • $begingroup$
                                                                                                      oh, and no need to import Data.Function anymore.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:32










                                                                                                    • $begingroup$
                                                                                                      That's great, thanks for the feedback :)
                                                                                                      $endgroup$
                                                                                                      – bugs
                                                                                                      Apr 17 at 17:05










                                                                                                    • $begingroup$
                                                                                                      Next h: we're looking for non-adjacent elements, i.e. the difference of adjacent indices must be >1. zipWith(-)=<<tail builds such a list of differences, but fails for the empty list, so we need an additional tail on the subsequences to get rid of it. Inline again. Try it online!
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 17:27












                                                                                                    • 1




                                                                                                      $begingroup$
                                                                                                      Some tips: flip the element and its index within the pairs returned by f: f x=zip[0..length x]x, so f becomes f=zip[0..]. g is just g=map unzip. The function to filter with in j is h.fst (<- flipped pairs!). j=filter(h.fst). The foldl1+ from k is sum and with a pointfree pair making k=map((,)=<<sum.snd). sortBy(...) can be replaced by sortOn fst: l=snd.last.sortOn fst. Finally as you are using all functions only once, you can inline them into a single pointfree expression: z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31











                                                                                                    • $begingroup$
                                                                                                      .... Try it online!.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:31










                                                                                                    • $begingroup$
                                                                                                      oh, and no need to import Data.Function anymore.
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 16:32










                                                                                                    • $begingroup$
                                                                                                      That's great, thanks for the feedback :)
                                                                                                      $endgroup$
                                                                                                      – bugs
                                                                                                      Apr 17 at 17:05










                                                                                                    • $begingroup$
                                                                                                      Next h: we're looking for non-adjacent elements, i.e. the difference of adjacent indices must be >1. zipWith(-)=<<tail builds such a list of differences, but fails for the empty list, so we need an additional tail on the subsequences to get rid of it. Inline again. Try it online!
                                                                                                      $endgroup$
                                                                                                      – nimi
                                                                                                      Apr 17 at 17:27







                                                                                                    1




                                                                                                    1




                                                                                                    $begingroup$
                                                                                                    Some tips: flip the element and its index within the pairs returned by f: f x=zip[0..length x]x, so f becomes f=zip[0..]. g is just g=map unzip. The function to filter with in j is h.fst (<- flipped pairs!). j=filter(h.fst). The foldl1+ from k is sum and with a pointfree pair making k=map((,)=<<sum.snd). sortBy(...) can be replaced by sortOn fst: l=snd.last.sortOn fst. Finally as you are using all functions only once, you can inline them into a single pointfree expression: z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 16:31





                                                                                                    $begingroup$
                                                                                                    Some tips: flip the element and its index within the pairs returned by f: f x=zip[0..length x]x, so f becomes f=zip[0..]. g is just g=map unzip. The function to filter with in j is h.fst (<- flipped pairs!). j=filter(h.fst). The foldl1+ from k is sum and with a pointfree pair making k=map((,)=<<sum.snd). sortBy(...) can be replaced by sortOn fst: l=snd.last.sortOn fst. Finally as you are using all functions only once, you can inline them into a single pointfree expression: z=snd.last.sortOn fst.map((,)=<<sum.snd).filter(h.fst).map unzip.subsequences.zip[0..]
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 16:31













                                                                                                    $begingroup$
                                                                                                    .... Try it online!.
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 16:31




                                                                                                    $begingroup$
                                                                                                    .... Try it online!.
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 16:31












                                                                                                    $begingroup$
                                                                                                    oh, and no need to import Data.Function anymore.
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 16:32




                                                                                                    $begingroup$
                                                                                                    oh, and no need to import Data.Function anymore.
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 16:32












                                                                                                    $begingroup$
                                                                                                    That's great, thanks for the feedback :)
                                                                                                    $endgroup$
                                                                                                    – bugs
                                                                                                    Apr 17 at 17:05




                                                                                                    $begingroup$
                                                                                                    That's great, thanks for the feedback :)
                                                                                                    $endgroup$
                                                                                                    – bugs
                                                                                                    Apr 17 at 17:05












                                                                                                    $begingroup$
                                                                                                    Next h: we're looking for non-adjacent elements, i.e. the difference of adjacent indices must be >1. zipWith(-)=<<tail builds such a list of differences, but fails for the empty list, so we need an additional tail on the subsequences to get rid of it. Inline again. Try it online!
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 17:27




                                                                                                    $begingroup$
                                                                                                    Next h: we're looking for non-adjacent elements, i.e. the difference of adjacent indices must be >1. zipWith(-)=<<tail builds such a list of differences, but fails for the empty list, so we need an additional tail on the subsequences to get rid of it. Inline again. Try it online!
                                                                                                    $endgroup$
                                                                                                    – nimi
                                                                                                    Apr 17 at 17:27











                                                                                                    1












                                                                                                    $begingroup$


                                                                                                    Charcoal, 46 bytes



                                                                                                    ≔⟦υ⟧ηFθ«≔υζ≔Eη⁺κ⟦ι⟧υ≔⁺ζηη»≔Φ⁺υηιη≔EηΣιζI§η⌕ζ⌈ζ


                                                                                                    Try it online! Link is to verbose version of code. Explanation:



                                                                                                    ≔⟦υ⟧η


                                                                                                    The variable u is predefined with an empty list. This is put in a list which is assigned to h. These variables act as accumulators. u contains the sublists that include the latest element of the input q while h contains the sublists that do not (and therefore are suitable for appending the next element of the input).



                                                                                                    Fθ«


                                                                                                    Loop over the elements of the input.



                                                                                                    ≔υζ


                                                                                                    Save the list of sublists that contain the previous element.



                                                                                                    ≔Eη⁺κ⟦ι⟧υ


                                                                                                    Take all of the sublists that do not contain the previous element, append the current element, and save the result as the list of sublists that contain the current element. (I don't use Push here as I need to clone the list.)



                                                                                                    ≔⁺ζηη»


                                                                                                    Concatenate both previous sublists into the new list of sublists that do not contain the current element.



                                                                                                    ≔Φ⁺υηιη


                                                                                                    Concatenate the sublists one last time and remove the original empty list (which Charcoal can't sum anyway).



                                                                                                    ≔EηΣιζ


                                                                                                    Compute the sums of all of the sublists.



                                                                                                    I§η⌕ζ⌈ζ


                                                                                                    Find an index of the greatest sum and output the corresponding sublist.






                                                                                                    share|improve this answer









                                                                                                    $endgroup$

















                                                                                                      1












                                                                                                      $begingroup$


                                                                                                      Charcoal, 46 bytes



                                                                                                      ≔⟦υ⟧ηFθ«≔υζ≔Eη⁺κ⟦ι⟧υ≔⁺ζηη»≔Φ⁺υηιη≔EηΣιζI§η⌕ζ⌈ζ


                                                                                                      Try it online! Link is to verbose version of code. Explanation:



                                                                                                      ≔⟦υ⟧η


                                                                                                      The variable u is predefined with an empty list. This is put in a list which is assigned to h. These variables act as accumulators. u contains the sublists that include the latest element of the input q while h contains the sublists that do not (and therefore are suitable for appending the next element of the input).



                                                                                                      Fθ«


                                                                                                      Loop over the elements of the input.



                                                                                                      ≔υζ


                                                                                                      Save the list of sublists that contain the previous element.



                                                                                                      ≔Eη⁺κ⟦ι⟧υ


                                                                                                      Take all of the sublists that do not contain the previous element, append the current element, and save the result as the list of sublists that contain the current element. (I don't use Push here as I need to clone the list.)



                                                                                                      ≔⁺ζηη»


                                                                                                      Concatenate both previous sublists into the new list of sublists that do not contain the current element.



                                                                                                      ≔Φ⁺υηιη


                                                                                                      Concatenate the sublists one last time and remove the original empty list (which Charcoal can't sum anyway).



                                                                                                      ≔EηΣιζ


                                                                                                      Compute the sums of all of the sublists.



                                                                                                      I§η⌕ζ⌈ζ


                                                                                                      Find an index of the greatest sum and output the corresponding sublist.






                                                                                                      share|improve this answer









                                                                                                      $endgroup$















                                                                                                        1












                                                                                                        1








                                                                                                        1





                                                                                                        $begingroup$


                                                                                                        Charcoal, 46 bytes



                                                                                                        ≔⟦υ⟧ηFθ«≔υζ≔Eη⁺κ⟦ι⟧υ≔⁺ζηη»≔Φ⁺υηιη≔EηΣιζI§η⌕ζ⌈ζ


                                                                                                        Try it online! Link is to verbose version of code. Explanation:



                                                                                                        ≔⟦υ⟧η


                                                                                                        The variable u is predefined with an empty list. This is put in a list which is assigned to h. These variables act as accumulators. u contains the sublists that include the latest element of the input q while h contains the sublists that do not (and therefore are suitable for appending the next element of the input).



                                                                                                        Fθ«


                                                                                                        Loop over the elements of the input.



                                                                                                        ≔υζ


                                                                                                        Save the list of sublists that contain the previous element.



                                                                                                        ≔Eη⁺κ⟦ι⟧υ


                                                                                                        Take all of the sublists that do not contain the previous element, append the current element, and save the result as the list of sublists that contain the current element. (I don't use Push here as I need to clone the list.)



                                                                                                        ≔⁺ζηη»


                                                                                                        Concatenate both previous sublists into the new list of sublists that do not contain the current element.



                                                                                                        ≔Φ⁺υηιη


                                                                                                        Concatenate the sublists one last time and remove the original empty list (which Charcoal can't sum anyway).



                                                                                                        ≔EηΣιζ


                                                                                                        Compute the sums of all of the sublists.



                                                                                                        I§η⌕ζ⌈ζ


                                                                                                        Find an index of the greatest sum and output the corresponding sublist.






                                                                                                        share|improve this answer









                                                                                                        $endgroup$




                                                                                                        Charcoal, 46 bytes



                                                                                                        ≔⟦υ⟧ηFθ«≔υζ≔Eη⁺κ⟦ι⟧υ≔⁺ζηη»≔Φ⁺υηιη≔EηΣιζI§η⌕ζ⌈ζ


                                                                                                        Try it online! Link is to verbose version of code. Explanation:



                                                                                                        ≔⟦υ⟧η


                                                                                                        The variable u is predefined with an empty list. This is put in a list which is assigned to h. These variables act as accumulators. u contains the sublists that include the latest element of the input q while h contains the sublists that do not (and therefore are suitable for appending the next element of the input).



                                                                                                        Fθ«


                                                                                                        Loop over the elements of the input.



                                                                                                        ≔υζ


                                                                                                        Save the list of sublists that contain the previous element.



                                                                                                        ≔Eη⁺κ⟦ι⟧υ


                                                                                                        Take all of the sublists that do not contain the previous element, append the current element, and save the result as the list of sublists that contain the current element. (I don't use Push here as I need to clone the list.)



                                                                                                        ≔⁺ζηη»


                                                                                                        Concatenate both previous sublists into the new list of sublists that do not contain the current element.



                                                                                                        ≔Φ⁺υηιη


                                                                                                        Concatenate the sublists one last time and remove the original empty list (which Charcoal can't sum anyway).



                                                                                                        ≔EηΣιζ


                                                                                                        Compute the sums of all of the sublists.



                                                                                                        I§η⌕ζ⌈ζ


                                                                                                        Find an index of the greatest sum and output the corresponding sublist.







                                                                                                        share|improve this answer












                                                                                                        share|improve this answer



                                                                                                        share|improve this answer










                                                                                                        answered Apr 17 at 20:03









                                                                                                        NeilNeil

                                                                                                        83.1k745179




                                                                                                        83.1k745179





















                                                                                                            1












                                                                                                            $begingroup$


                                                                                                            Wolfram Language (Mathematica), 70 bytes



                                                                                                            MaximalBy[Select[q=Rest@Subsets@#,Or@@(MatchQ[#~Riffle~_]/@q)&],Tr,1]&


                                                                                                            Try it online!



                                                                                                            High-level search



                                                                                                             Select[q=Rest@Subsets@#, ] (*choose nonempty subsets of the input such that*)
                                                                                                            Or@@(MatchQ[ ]/@q)& (*there exists a subset of the input which matches*)
                                                                                                            #~Riffle~_ (*this list, with an item inserted between adjacent elements*)
                                                                                                            MaximalBy[ ,Tr,1]& (*and return one with the greatest total*)


                                                                                                            ,1 is required so as not to inadvertently return invalid sets (otherwise, for example, an input of 1,1,1 would result in an output of 1,1,1,1,1,1)






                                                                                                            share|improve this answer









                                                                                                            $endgroup$

















                                                                                                              1












                                                                                                              $begingroup$


                                                                                                              Wolfram Language (Mathematica), 70 bytes



                                                                                                              MaximalBy[Select[q=Rest@Subsets@#,Or@@(MatchQ[#~Riffle~_]/@q)&],Tr,1]&


                                                                                                              Try it online!



                                                                                                              High-level search



                                                                                                               Select[q=Rest@Subsets@#, ] (*choose nonempty subsets of the input such that*)
                                                                                                              Or@@(MatchQ[ ]/@q)& (*there exists a subset of the input which matches*)
                                                                                                              #~Riffle~_ (*this list, with an item inserted between adjacent elements*)
                                                                                                              MaximalBy[ ,Tr,1]& (*and return one with the greatest total*)


                                                                                                              ,1 is required so as not to inadvertently return invalid sets (otherwise, for example, an input of 1,1,1 would result in an output of 1,1,1,1,1,1)






                                                                                                              share|improve this answer









                                                                                                              $endgroup$















                                                                                                                1












                                                                                                                1








                                                                                                                1





                                                                                                                $begingroup$


                                                                                                                Wolfram Language (Mathematica), 70 bytes



                                                                                                                MaximalBy[Select[q=Rest@Subsets@#,Or@@(MatchQ[#~Riffle~_]/@q)&],Tr,1]&


                                                                                                                Try it online!



                                                                                                                High-level search



                                                                                                                 Select[q=Rest@Subsets@#, ] (*choose nonempty subsets of the input such that*)
                                                                                                                Or@@(MatchQ[ ]/@q)& (*there exists a subset of the input which matches*)
                                                                                                                #~Riffle~_ (*this list, with an item inserted between adjacent elements*)
                                                                                                                MaximalBy[ ,Tr,1]& (*and return one with the greatest total*)


                                                                                                                ,1 is required so as not to inadvertently return invalid sets (otherwise, for example, an input of 1,1,1 would result in an output of 1,1,1,1,1,1)






                                                                                                                share|improve this answer









                                                                                                                $endgroup$




                                                                                                                Wolfram Language (Mathematica), 70 bytes



                                                                                                                MaximalBy[Select[q=Rest@Subsets@#,Or@@(MatchQ[#~Riffle~_]/@q)&],Tr,1]&


                                                                                                                Try it online!



                                                                                                                High-level search



                                                                                                                 Select[q=Rest@Subsets@#, ] (*choose nonempty subsets of the input such that*)
                                                                                                                Or@@(MatchQ[ ]/@q)& (*there exists a subset of the input which matches*)
                                                                                                                #~Riffle~_ (*this list, with an item inserted between adjacent elements*)
                                                                                                                MaximalBy[ ,Tr,1]& (*and return one with the greatest total*)


                                                                                                                ,1 is required so as not to inadvertently return invalid sets (otherwise, for example, an input of 1,1,1 would result in an output of 1,1,1,1,1,1)







                                                                                                                share|improve this answer












                                                                                                                share|improve this answer



                                                                                                                share|improve this answer










                                                                                                                answered 2 days ago









                                                                                                                attinatattinat

                                                                                                                60917




                                                                                                                60917





















                                                                                                                    1












                                                                                                                    $begingroup$


                                                                                                                    Japt -h, 22 bytes



                                                                                                                    Êo à k_mÄ øZÃm!gU
                                                                                                                    fÊñx


                                                                                                                    Try it






                                                                                                                    share|improve this answer









                                                                                                                    $endgroup$

















                                                                                                                      1












                                                                                                                      $begingroup$


                                                                                                                      Japt -h, 22 bytes



                                                                                                                      Êo à k_mÄ øZÃm!gU
                                                                                                                      fÊñx


                                                                                                                      Try it






                                                                                                                      share|improve this answer









                                                                                                                      $endgroup$















                                                                                                                        1












                                                                                                                        1








                                                                                                                        1





                                                                                                                        $begingroup$


                                                                                                                        Japt -h, 22 bytes



                                                                                                                        Êo à k_mÄ øZÃm!gU
                                                                                                                        fÊñx


                                                                                                                        Try it






                                                                                                                        share|improve this answer









                                                                                                                        $endgroup$




                                                                                                                        Japt -h, 22 bytes



                                                                                                                        Êo à k_mÄ øZÃm!gU
                                                                                                                        fÊñx


                                                                                                                        Try it







                                                                                                                        share|improve this answer












                                                                                                                        share|improve this answer



                                                                                                                        share|improve this answer










                                                                                                                        answered 2 days ago









                                                                                                                        Embodiment of IgnoranceEmbodiment of Ignorance

                                                                                                                        3,064127




                                                                                                                        3,064127





















                                                                                                                            1












                                                                                                                            $begingroup$


                                                                                                                            Japt -h, 21 bytes



                                                                                                                            Ever have one of those challenges where you completely forget how to golf?!



                                                                                                                            ð¤à fÊk_än ø1îmgUÃñx


                                                                                                                            Try it



                                                                                                                            ð¤à fÊk_än ø1îmgUÃñx :Implicit input of array U
                                                                                                                            ð :Indices of elements that return true when
                                                                                                                            ¤ : Converted to a base-2 string (to account for 0s)
                                                                                                                            à :Combinations
                                                                                                                            f :Filter by
                                                                                                                            Ê : Length (to remove the empty combination)
                                                                                                                            k_ :Remove elements that return true
                                                                                                                            än : Deltas
                                                                                                                            ø1 : Contains 1
                                                                                                                            Ã :End remove
                                                                                                                            ® :Map
                                                                                                                            m : Map
                                                                                                                            gU : Index into U
                                                                                                                            Ã :End map
                                                                                                                            ñ :Sort by
                                                                                                                            x : Sum
                                                                                                                            :Implicit output of last element





                                                                                                                            share|improve this answer











                                                                                                                            $endgroup$

















                                                                                                                              1












                                                                                                                              $begingroup$


                                                                                                                              Japt -h, 21 bytes



                                                                                                                              Ever have one of those challenges where you completely forget how to golf?!



                                                                                                                              ð¤à fÊk_än ø1îmgUÃñx


                                                                                                                              Try it



                                                                                                                              ð¤à fÊk_än ø1îmgUÃñx :Implicit input of array U
                                                                                                                              ð :Indices of elements that return true when
                                                                                                                              ¤ : Converted to a base-2 string (to account for 0s)
                                                                                                                              à :Combinations
                                                                                                                              f :Filter by
                                                                                                                              Ê : Length (to remove the empty combination)
                                                                                                                              k_ :Remove elements that return true
                                                                                                                              än : Deltas
                                                                                                                              ø1 : Contains 1
                                                                                                                              Ã :End remove
                                                                                                                              ® :Map
                                                                                                                              m : Map
                                                                                                                              gU : Index into U
                                                                                                                              Ã :End map
                                                                                                                              ñ :Sort by
                                                                                                                              x : Sum
                                                                                                                              :Implicit output of last element





                                                                                                                              share|improve this answer











                                                                                                                              $endgroup$















                                                                                                                                1












                                                                                                                                1








                                                                                                                                1





                                                                                                                                $begingroup$


                                                                                                                                Japt -h, 21 bytes



                                                                                                                                Ever have one of those challenges where you completely forget how to golf?!



                                                                                                                                ð¤à fÊk_än ø1îmgUÃñx


                                                                                                                                Try it



                                                                                                                                ð¤à fÊk_än ø1îmgUÃñx :Implicit input of array U
                                                                                                                                ð :Indices of elements that return true when
                                                                                                                                ¤ : Converted to a base-2 string (to account for 0s)
                                                                                                                                à :Combinations
                                                                                                                                f :Filter by
                                                                                                                                Ê : Length (to remove the empty combination)
                                                                                                                                k_ :Remove elements that return true
                                                                                                                                än : Deltas
                                                                                                                                ø1 : Contains 1
                                                                                                                                Ã :End remove
                                                                                                                                ® :Map
                                                                                                                                m : Map
                                                                                                                                gU : Index into U
                                                                                                                                Ã :End map
                                                                                                                                ñ :Sort by
                                                                                                                                x : Sum
                                                                                                                                :Implicit output of last element





                                                                                                                                share|improve this answer











                                                                                                                                $endgroup$




                                                                                                                                Japt -h, 21 bytes



                                                                                                                                Ever have one of those challenges where you completely forget how to golf?!



                                                                                                                                ð¤à fÊk_än ø1îmgUÃñx


                                                                                                                                Try it



                                                                                                                                ð¤à fÊk_än ø1îmgUÃñx :Implicit input of array U
                                                                                                                                ð :Indices of elements that return true when
                                                                                                                                ¤ : Converted to a base-2 string (to account for 0s)
                                                                                                                                à :Combinations
                                                                                                                                f :Filter by
                                                                                                                                Ê : Length (to remove the empty combination)
                                                                                                                                k_ :Remove elements that return true
                                                                                                                                än : Deltas
                                                                                                                                ø1 : Contains 1
                                                                                                                                Ã :End remove
                                                                                                                                ® :Map
                                                                                                                                m : Map
                                                                                                                                gU : Index into U
                                                                                                                                Ã :End map
                                                                                                                                ñ :Sort by
                                                                                                                                x : Sum
                                                                                                                                :Implicit output of last element






                                                                                                                                share|improve this answer














                                                                                                                                share|improve this answer



                                                                                                                                share|improve this answer








                                                                                                                                edited yesterday

























                                                                                                                                answered Apr 17 at 21:49









                                                                                                                                ShaggyShaggy

                                                                                                                                19.1k21768




                                                                                                                                19.1k21768





















                                                                                                                                    0












                                                                                                                                    $begingroup$


                                                                                                                                    Python 2, 63 70 65 bytes





                                                                                                                                    f=lambda a:a and max([a[:1],a[:1]+f(a[2:]),f(a[1:])],key=sum)or a


                                                                                                                                    Try it online!



                                                                                                                                    5 bytes thx to ArBo






                                                                                                                                    share|improve this answer











                                                                                                                                    $endgroup$












                                                                                                                                    • $begingroup$
                                                                                                                                      Your test case [1, 7, 4, -2] [1, 4] 5 7 is getting the wrong answer.
                                                                                                                                      $endgroup$
                                                                                                                                      – xnor
                                                                                                                                      23 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      @xnor: fixed now.
                                                                                                                                      $endgroup$
                                                                                                                                      – Chas Brown
                                                                                                                                      18 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      65 bytes
                                                                                                                                      $endgroup$
                                                                                                                                      – ArBo
                                                                                                                                      6 hours ago















                                                                                                                                    0












                                                                                                                                    $begingroup$


                                                                                                                                    Python 2, 63 70 65 bytes





                                                                                                                                    f=lambda a:a and max([a[:1],a[:1]+f(a[2:]),f(a[1:])],key=sum)or a


                                                                                                                                    Try it online!



                                                                                                                                    5 bytes thx to ArBo






                                                                                                                                    share|improve this answer











                                                                                                                                    $endgroup$












                                                                                                                                    • $begingroup$
                                                                                                                                      Your test case [1, 7, 4, -2] [1, 4] 5 7 is getting the wrong answer.
                                                                                                                                      $endgroup$
                                                                                                                                      – xnor
                                                                                                                                      23 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      @xnor: fixed now.
                                                                                                                                      $endgroup$
                                                                                                                                      – Chas Brown
                                                                                                                                      18 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      65 bytes
                                                                                                                                      $endgroup$
                                                                                                                                      – ArBo
                                                                                                                                      6 hours ago













                                                                                                                                    0












                                                                                                                                    0








                                                                                                                                    0





                                                                                                                                    $begingroup$


                                                                                                                                    Python 2, 63 70 65 bytes





                                                                                                                                    f=lambda a:a and max([a[:1],a[:1]+f(a[2:]),f(a[1:])],key=sum)or a


                                                                                                                                    Try it online!



                                                                                                                                    5 bytes thx to ArBo






                                                                                                                                    share|improve this answer











                                                                                                                                    $endgroup$




                                                                                                                                    Python 2, 63 70 65 bytes





                                                                                                                                    f=lambda a:a and max([a[:1],a[:1]+f(a[2:]),f(a[1:])],key=sum)or a


                                                                                                                                    Try it online!



                                                                                                                                    5 bytes thx to ArBo







                                                                                                                                    share|improve this answer














                                                                                                                                    share|improve this answer



                                                                                                                                    share|improve this answer








                                                                                                                                    edited 5 hours ago

























                                                                                                                                    answered yesterday









                                                                                                                                    Chas BrownChas Brown

                                                                                                                                    5,2391523




                                                                                                                                    5,2391523











                                                                                                                                    • $begingroup$
                                                                                                                                      Your test case [1, 7, 4, -2] [1, 4] 5 7 is getting the wrong answer.
                                                                                                                                      $endgroup$
                                                                                                                                      – xnor
                                                                                                                                      23 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      @xnor: fixed now.
                                                                                                                                      $endgroup$
                                                                                                                                      – Chas Brown
                                                                                                                                      18 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      65 bytes
                                                                                                                                      $endgroup$
                                                                                                                                      – ArBo
                                                                                                                                      6 hours ago
















                                                                                                                                    • $begingroup$
                                                                                                                                      Your test case [1, 7, 4, -2] [1, 4] 5 7 is getting the wrong answer.
                                                                                                                                      $endgroup$
                                                                                                                                      – xnor
                                                                                                                                      23 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      @xnor: fixed now.
                                                                                                                                      $endgroup$
                                                                                                                                      – Chas Brown
                                                                                                                                      18 hours ago










                                                                                                                                    • $begingroup$
                                                                                                                                      65 bytes
                                                                                                                                      $endgroup$
                                                                                                                                      – ArBo
                                                                                                                                      6 hours ago















                                                                                                                                    $begingroup$
                                                                                                                                    Your test case [1, 7, 4, -2] [1, 4] 5 7 is getting the wrong answer.
                                                                                                                                    $endgroup$
                                                                                                                                    – xnor
                                                                                                                                    23 hours ago




                                                                                                                                    $begingroup$
                                                                                                                                    Your test case [1, 7, 4, -2] [1, 4] 5 7 is getting the wrong answer.
                                                                                                                                    $endgroup$
                                                                                                                                    – xnor
                                                                                                                                    23 hours ago












                                                                                                                                    $begingroup$
                                                                                                                                    @xnor: fixed now.
                                                                                                                                    $endgroup$
                                                                                                                                    – Chas Brown
                                                                                                                                    18 hours ago




                                                                                                                                    $begingroup$
                                                                                                                                    @xnor: fixed now.
                                                                                                                                    $endgroup$
                                                                                                                                    – Chas Brown
                                                                                                                                    18 hours ago












                                                                                                                                    $begingroup$
                                                                                                                                    65 bytes
                                                                                                                                    $endgroup$
                                                                                                                                    – ArBo
                                                                                                                                    6 hours ago




                                                                                                                                    $begingroup$
                                                                                                                                    65 bytes
                                                                                                                                    $endgroup$
                                                                                                                                    – ArBo
                                                                                                                                    6 hours ago

















                                                                                                                                    draft saved

                                                                                                                                    draft discarded
















































                                                                                                                                    If this is an answer to a challenge…



                                                                                                                                    • …Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.


                                                                                                                                    • …Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
                                                                                                                                      Explanations of your answer make it more interesting to read and are very much encouraged.


                                                                                                                                    • …Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.


                                                                                                                                    More generally…



                                                                                                                                    • …Please make sure to answer the question and provide sufficient detail.


                                                                                                                                    • …Avoid asking for help, clarification or responding to other answers (use comments instead).




                                                                                                                                    draft saved


                                                                                                                                    draft discarded














                                                                                                                                    StackExchange.ready(
                                                                                                                                    function ()
                                                                                                                                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f183390%2fmaximum-summed-subsequences-with-non-adjacent-items%23new-answer', 'question_page');

                                                                                                                                    );

                                                                                                                                    Post as a guest















                                                                                                                                    Required, but never shown





















































                                                                                                                                    Required, but never shown














                                                                                                                                    Required, but never shown












                                                                                                                                    Required, but never shown







                                                                                                                                    Required, but never shown

































                                                                                                                                    Required, but never shown














                                                                                                                                    Required, but never shown












                                                                                                                                    Required, but never shown







                                                                                                                                    Required, but never shown







                                                                                                                                    Popular posts from this blog

                                                                                                                                    Category:9 (number) SubcategoriesMedia in category "9 (number)"Navigation menuUpload mediaGND ID: 4485639-8Library of Congress authority ID: sh85091979ReasonatorScholiaStatistics

                                                                                                                                    Circuit construction for execution of conditional statements using least significant bitHow are two different registers being used as “control”?How exactly is the stated composite state of the two registers being produced using the $R_zz$ controlled rotations?Efficiently performing controlled rotations in HHLWould this quantum algorithm implementation work?How to prepare a superposed states of odd integers from $1$ to $sqrtN$?Why is this implementation of the order finding algorithm not working?Circuit construction for Hamiltonian simulationHow can I invert the least significant bit of a certain term of a superposed state?Implementing an oracleImplementing a controlled sum operation

                                                                                                                                    Magento 2 “No Payment Methods” in Admin New OrderHow to integrate Paypal Express Checkout with the Magento APIMagento 1.5 - Sales > Order > edit order and shipping methods disappearAuto Invoice Check/Money Order Payment methodAdd more simple payment methods?Shipping methods not showingWhat should I do to change payment methods if changing the configuration has no effects?1.9 - No Payment Methods showing upMy Payment Methods not Showing for downloadable/virtual product when checkout?Magento2 API to access internal payment methodHow to call an existing payment methods in the registration form?