Heavy Box StackingFind the optimal set of weights to add to a certain set of weightsDraw Growing Stacks of BoxesImplode the BoxStack ExchangingAutomatic box expanderCode golf ABC's: The ASCII Box ChallengeMake An ASCII Poker Chip Stack ArrangementExplode the BoxA pile of weights

What's the purpose of this lambda?

Is it good practice to speed up and slow down where not written in a song?

Coupling two 15 Amp circuit breaker for 20 Amp

'Horseshoes' for Deer?

Storing milk for long periods of time

Does the telecom provider need physical access to the SIM card to clone it?

Break down the phrase "shitsurei shinakereba naranaindesu"

How to get a B2B company to take chances on their image?

What caused the end of cybernetic implants?

Don't look at what I did there

Is there anything in the universe that cannot be compressed?

How were US credit cards verified in-store in the 1980's?

Necessity of tenure for lifetime academic research

Which is the correct version of Mussorgsky's Pictures at an Exhibition?

Why do IR remotes influence AM radios?

What was Captain Marvel supposed to do once she reached her destination?

Why did I get UK entry stamps in my British passport?

Why haven't the British protested Brexit as ardently like Hong Kongers protest?

Welche normative Autorität hat der Duden? / What's the normative authority of the Duden?

How do I get my neighbour to stop disturbing with loud music?

Calculate Landau's function

Why doesn't Starship have four landing legs?

What is this "opened" cube called?

Was it illegal to blaspheme God in Antioch in 360.-410.?



Heavy Box Stacking


Find the optimal set of weights to add to a certain set of weightsDraw Growing Stacks of BoxesImplode the BoxStack ExchangingAutomatic box expanderCode golf ABC's: The ASCII Box ChallengeMake An ASCII Poker Chip Stack ArrangementExplode the BoxA pile of weights






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








11












$begingroup$


You have a bunch of heavy boxes and you want to stack them in the fewest number of stacks possible. The issue is that you can't stack more boxes on a box than it can support, so heavier boxes must go on the bottom of a stack.



The Challenge



Input: A list of weights of boxes, in whole kg.



Output: A list of lists describing the stacks of boxes. This must use the fewest number of stacks possible for the input. To be a valid stack, the weight of each box in the stack must be greater than or equal to the sum of the weight of all boxes above it.



Examples of Valid stacks



(In bottom to top order)



  • [3]

  • [1, 1]

  • [3, 2, 1]

  • [4, 2, 1, 1]

  • [27, 17, 6, 3, 1]

  • [33, 32, 1]

  • [999, 888, 99, 11, 1]

Examples of Invalid stacks



(In order from bottom to top)



  • [1, 2]

  • [3, 3, 3]

  • [5, 5, 1]

  • [999, 888, 777]

  • [4, 3, 2]

  • [4321, 3000, 1234, 321]

Example Test Cases



1



IN: [1, 2, 3, 4, 5, 6, 9, 12]
OUT: [[12, 6, 3, 2, 1], [9, 5, 4]]


2



IN: [87, 432, 9999, 1234, 3030]
OUT: [[9999, 3030, 1234, 432, 87]]


3



IN: [1, 5, 3, 1, 4, 2, 1, 6, 1, 7, 2, 3]
OUT: [[6, 3, 2, 1], [7, 4, 2, 1], [5, 3, 1, 1]]


Rules and Assumptions



  • Standard I/O rules and banned loopholes apply

  • Use any convenient format for I/O

    • Stacks may be described top to bottom or bottom to top, as long as you are consistent.

    • The order of stacks (rather than boxes within those stacks) does not matter.


  • If there is more than one optimal configuration of stacks, you may output any one of them

  • You may assume that there is at least one box and that all boxes weigh at least 1 kg

  • You must support weights up to 9,999 kg, at minimum.

  • You must support up to 9,999 total boxes, at minimum.

  • Boxes with the same weight are indistinguishable, so there is no need to annotate which box was used where.

Happy golfing! Good luck!










share|improve this question









$endgroup$













  • $begingroup$
    May we take the weights in sorted order? (either ascending or descending)
    $endgroup$
    – Arnauld
    8 hours ago










  • $begingroup$
    "You must support up to 9,999 total boxes, at minimum." How is "support" interpreted here? Does it merely mean the program should be able to take such size of input, or does it mean that the program should actually provide the answer in a reasonable amount of time? If it is the latter, there should be much larger test cases provided.
    $endgroup$
    – Joel
    6 hours ago











  • $begingroup$
    Suggested test case: [8, 8, 8, 5, 1] -> [[8, 8], [8, 5, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago






  • 1




    $begingroup$
    Or even better: [8, 5, 8, 8, 1, 2] -> [[8, 8], [8, 5, 2, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago

















11












$begingroup$


You have a bunch of heavy boxes and you want to stack them in the fewest number of stacks possible. The issue is that you can't stack more boxes on a box than it can support, so heavier boxes must go on the bottom of a stack.



The Challenge



Input: A list of weights of boxes, in whole kg.



Output: A list of lists describing the stacks of boxes. This must use the fewest number of stacks possible for the input. To be a valid stack, the weight of each box in the stack must be greater than or equal to the sum of the weight of all boxes above it.



Examples of Valid stacks



(In bottom to top order)



  • [3]

  • [1, 1]

  • [3, 2, 1]

  • [4, 2, 1, 1]

  • [27, 17, 6, 3, 1]

  • [33, 32, 1]

  • [999, 888, 99, 11, 1]

Examples of Invalid stacks



(In order from bottom to top)



  • [1, 2]

  • [3, 3, 3]

  • [5, 5, 1]

  • [999, 888, 777]

  • [4, 3, 2]

  • [4321, 3000, 1234, 321]

Example Test Cases



1



IN: [1, 2, 3, 4, 5, 6, 9, 12]
OUT: [[12, 6, 3, 2, 1], [9, 5, 4]]


2



IN: [87, 432, 9999, 1234, 3030]
OUT: [[9999, 3030, 1234, 432, 87]]


3



IN: [1, 5, 3, 1, 4, 2, 1, 6, 1, 7, 2, 3]
OUT: [[6, 3, 2, 1], [7, 4, 2, 1], [5, 3, 1, 1]]


Rules and Assumptions



  • Standard I/O rules and banned loopholes apply

  • Use any convenient format for I/O

    • Stacks may be described top to bottom or bottom to top, as long as you are consistent.

    • The order of stacks (rather than boxes within those stacks) does not matter.


  • If there is more than one optimal configuration of stacks, you may output any one of them

  • You may assume that there is at least one box and that all boxes weigh at least 1 kg

  • You must support weights up to 9,999 kg, at minimum.

  • You must support up to 9,999 total boxes, at minimum.

  • Boxes with the same weight are indistinguishable, so there is no need to annotate which box was used where.

Happy golfing! Good luck!










share|improve this question









$endgroup$













  • $begingroup$
    May we take the weights in sorted order? (either ascending or descending)
    $endgroup$
    – Arnauld
    8 hours ago










  • $begingroup$
    "You must support up to 9,999 total boxes, at minimum." How is "support" interpreted here? Does it merely mean the program should be able to take such size of input, or does it mean that the program should actually provide the answer in a reasonable amount of time? If it is the latter, there should be much larger test cases provided.
    $endgroup$
    – Joel
    6 hours ago











  • $begingroup$
    Suggested test case: [8, 8, 8, 5, 1] -> [[8, 8], [8, 5, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago






  • 1




    $begingroup$
    Or even better: [8, 5, 8, 8, 1, 2] -> [[8, 8], [8, 5, 2, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago













11












11








11





$begingroup$


You have a bunch of heavy boxes and you want to stack them in the fewest number of stacks possible. The issue is that you can't stack more boxes on a box than it can support, so heavier boxes must go on the bottom of a stack.



The Challenge



Input: A list of weights of boxes, in whole kg.



Output: A list of lists describing the stacks of boxes. This must use the fewest number of stacks possible for the input. To be a valid stack, the weight of each box in the stack must be greater than or equal to the sum of the weight of all boxes above it.



Examples of Valid stacks



(In bottom to top order)



  • [3]

  • [1, 1]

  • [3, 2, 1]

  • [4, 2, 1, 1]

  • [27, 17, 6, 3, 1]

  • [33, 32, 1]

  • [999, 888, 99, 11, 1]

Examples of Invalid stacks



(In order from bottom to top)



  • [1, 2]

  • [3, 3, 3]

  • [5, 5, 1]

  • [999, 888, 777]

  • [4, 3, 2]

  • [4321, 3000, 1234, 321]

Example Test Cases



1



IN: [1, 2, 3, 4, 5, 6, 9, 12]
OUT: [[12, 6, 3, 2, 1], [9, 5, 4]]


2



IN: [87, 432, 9999, 1234, 3030]
OUT: [[9999, 3030, 1234, 432, 87]]


3



IN: [1, 5, 3, 1, 4, 2, 1, 6, 1, 7, 2, 3]
OUT: [[6, 3, 2, 1], [7, 4, 2, 1], [5, 3, 1, 1]]


Rules and Assumptions



  • Standard I/O rules and banned loopholes apply

  • Use any convenient format for I/O

    • Stacks may be described top to bottom or bottom to top, as long as you are consistent.

    • The order of stacks (rather than boxes within those stacks) does not matter.


  • If there is more than one optimal configuration of stacks, you may output any one of them

  • You may assume that there is at least one box and that all boxes weigh at least 1 kg

  • You must support weights up to 9,999 kg, at minimum.

  • You must support up to 9,999 total boxes, at minimum.

  • Boxes with the same weight are indistinguishable, so there is no need to annotate which box was used where.

Happy golfing! Good luck!










share|improve this question









$endgroup$




You have a bunch of heavy boxes and you want to stack them in the fewest number of stacks possible. The issue is that you can't stack more boxes on a box than it can support, so heavier boxes must go on the bottom of a stack.



The Challenge



Input: A list of weights of boxes, in whole kg.



Output: A list of lists describing the stacks of boxes. This must use the fewest number of stacks possible for the input. To be a valid stack, the weight of each box in the stack must be greater than or equal to the sum of the weight of all boxes above it.



Examples of Valid stacks



(In bottom to top order)



  • [3]

  • [1, 1]

  • [3, 2, 1]

  • [4, 2, 1, 1]

  • [27, 17, 6, 3, 1]

  • [33, 32, 1]

  • [999, 888, 99, 11, 1]

Examples of Invalid stacks



(In order from bottom to top)



  • [1, 2]

  • [3, 3, 3]

  • [5, 5, 1]

  • [999, 888, 777]

  • [4, 3, 2]

  • [4321, 3000, 1234, 321]

Example Test Cases



1



IN: [1, 2, 3, 4, 5, 6, 9, 12]
OUT: [[12, 6, 3, 2, 1], [9, 5, 4]]


2



IN: [87, 432, 9999, 1234, 3030]
OUT: [[9999, 3030, 1234, 432, 87]]


3



IN: [1, 5, 3, 1, 4, 2, 1, 6, 1, 7, 2, 3]
OUT: [[6, 3, 2, 1], [7, 4, 2, 1], [5, 3, 1, 1]]


Rules and Assumptions



  • Standard I/O rules and banned loopholes apply

  • Use any convenient format for I/O

    • Stacks may be described top to bottom or bottom to top, as long as you are consistent.

    • The order of stacks (rather than boxes within those stacks) does not matter.


  • If there is more than one optimal configuration of stacks, you may output any one of them

  • You may assume that there is at least one box and that all boxes weigh at least 1 kg

  • You must support weights up to 9,999 kg, at minimum.

  • You must support up to 9,999 total boxes, at minimum.

  • Boxes with the same weight are indistinguishable, so there is no need to annotate which box was used where.

Happy golfing! Good luck!







code-golf optimization






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 9 hours ago









BeefsterBeefster

3,14118 silver badges57 bronze badges




3,14118 silver badges57 bronze badges














  • $begingroup$
    May we take the weights in sorted order? (either ascending or descending)
    $endgroup$
    – Arnauld
    8 hours ago










  • $begingroup$
    "You must support up to 9,999 total boxes, at minimum." How is "support" interpreted here? Does it merely mean the program should be able to take such size of input, or does it mean that the program should actually provide the answer in a reasonable amount of time? If it is the latter, there should be much larger test cases provided.
    $endgroup$
    – Joel
    6 hours ago











  • $begingroup$
    Suggested test case: [8, 8, 8, 5, 1] -> [[8, 8], [8, 5, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago






  • 1




    $begingroup$
    Or even better: [8, 5, 8, 8, 1, 2] -> [[8, 8], [8, 5, 2, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago
















  • $begingroup$
    May we take the weights in sorted order? (either ascending or descending)
    $endgroup$
    – Arnauld
    8 hours ago










  • $begingroup$
    "You must support up to 9,999 total boxes, at minimum." How is "support" interpreted here? Does it merely mean the program should be able to take such size of input, or does it mean that the program should actually provide the answer in a reasonable amount of time? If it is the latter, there should be much larger test cases provided.
    $endgroup$
    – Joel
    6 hours ago











  • $begingroup$
    Suggested test case: [8, 8, 8, 5, 1] -> [[8, 8], [8, 5, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago






  • 1




    $begingroup$
    Or even better: [8, 5, 8, 8, 1, 2] -> [[8, 8], [8, 5, 2, 1]]
    $endgroup$
    – Hiatsu
    5 hours ago















$begingroup$
May we take the weights in sorted order? (either ascending or descending)
$endgroup$
– Arnauld
8 hours ago




$begingroup$
May we take the weights in sorted order? (either ascending or descending)
$endgroup$
– Arnauld
8 hours ago












$begingroup$
"You must support up to 9,999 total boxes, at minimum." How is "support" interpreted here? Does it merely mean the program should be able to take such size of input, or does it mean that the program should actually provide the answer in a reasonable amount of time? If it is the latter, there should be much larger test cases provided.
$endgroup$
– Joel
6 hours ago





$begingroup$
"You must support up to 9,999 total boxes, at minimum." How is "support" interpreted here? Does it merely mean the program should be able to take such size of input, or does it mean that the program should actually provide the answer in a reasonable amount of time? If it is the latter, there should be much larger test cases provided.
$endgroup$
– Joel
6 hours ago













$begingroup$
Suggested test case: [8, 8, 8, 5, 1] -> [[8, 8], [8, 5, 1]]
$endgroup$
– Hiatsu
5 hours ago




$begingroup$
Suggested test case: [8, 8, 8, 5, 1] -> [[8, 8], [8, 5, 1]]
$endgroup$
– Hiatsu
5 hours ago




1




1




$begingroup$
Or even better: [8, 5, 8, 8, 1, 2] -> [[8, 8], [8, 5, 2, 1]]
$endgroup$
– Hiatsu
5 hours ago




$begingroup$
Or even better: [8, 5, 8, 8, 1, 2] -> [[8, 8], [8, 5, 2, 1]]
$endgroup$
– Hiatsu
5 hours ago










3 Answers
3






active

oldest

votes


















2













$begingroup$

JavaScript (ES6),  157  143 bytes





A=>(g=([n,...a],s=[])=>n?s.map((b,i,[...c])=>n<eval(b.join`+`)||g(a,c,c[i]=[n,...b]),g(a,[...s,[n]]))&&A:A[s.length]?A=s:A)(A.sort((a,b)=>a-b))


Try it online!



Commented



A => ( // A[] = input array, re-used to store the best stacks
g = ( // g is a recursive function taking:
[n, // n = next weight to process
...a], // a[] = array of remaining weights
s = [] // s[] = list of stacks
) => //
n ? // if n is defined:
s.map((b, i, // for each stack b[] at position i in s[],
[...c]) => // using c[] as a copy of s[]:
n < eval(b.join`+`) || // if n is heavy enough to support all values in b[]:
g(a, c, c[i] = [n, ...b]), // do a recursive call with n prepended to c[i]
g(a, [...s, [n]]) // do a recursive call with a new stack containing n
) && A // end of map(); yield A
: // else:
A[s.length] ? A = s : A // if s[] is shorter than A[], update A[] to s[]
)(A.sort((a, b) => a - b)) // initial call to g with A[] sorted in ascending order





share|improve this answer











$endgroup$






















    1













    $begingroup$


    Jelly, 22 bytes



    Œ!ŒṖ€ẎṢ€€ṖÄ>ḊƲ€¬ȦƊƇLÞḢ


    Try it online!



    Top to bottom.






    share|improve this answer









    $endgroup$






















      0













      $begingroup$


      Python 3, 112 bytes





      R=range
      f=lambda b:[[b[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]


      Try it online!



      Takes input in sorted decreasing order. If that isn't allowed, it can be done for 148 bytes: (-10 bytes thanks to @Joel)



      R=range
      V=lambda a:sorted(a)[::-1]
      f=lambda b:[[V(b)[j::i]for j in R(i)]for i in R(1,len(b))if all(V(b)[j]*2>=sum(V(b)[j::i])for j in R(len(b)))][0]


      or in Python 3.8 for 131:



      R=range
      f=lambda b:[[(b:=sorted(b)[::-1])[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]





      share|improve this answer











      $endgroup$










      • 1




        $begingroup$
        list(reversed(sorted(a))) can be written as sorted(a)[::-1] for golfing purpose.
        $endgroup$
        – Joel
        6 hours ago










      • $begingroup$
        You would think I would know that by now, especially since I do so much other indexing. Thanks.
        $endgroup$
        – Hiatsu
        6 hours ago










      • $begingroup$
        Just as a side remark, if not for golfing it would be better write sorted(a, reverse=True) instead.
        $endgroup$
        – Joel
        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%2f191086%2fheavy-box-stacking%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      2













      $begingroup$

      JavaScript (ES6),  157  143 bytes





      A=>(g=([n,...a],s=[])=>n?s.map((b,i,[...c])=>n<eval(b.join`+`)||g(a,c,c[i]=[n,...b]),g(a,[...s,[n]]))&&A:A[s.length]?A=s:A)(A.sort((a,b)=>a-b))


      Try it online!



      Commented



      A => ( // A[] = input array, re-used to store the best stacks
      g = ( // g is a recursive function taking:
      [n, // n = next weight to process
      ...a], // a[] = array of remaining weights
      s = [] // s[] = list of stacks
      ) => //
      n ? // if n is defined:
      s.map((b, i, // for each stack b[] at position i in s[],
      [...c]) => // using c[] as a copy of s[]:
      n < eval(b.join`+`) || // if n is heavy enough to support all values in b[]:
      g(a, c, c[i] = [n, ...b]), // do a recursive call with n prepended to c[i]
      g(a, [...s, [n]]) // do a recursive call with a new stack containing n
      ) && A // end of map(); yield A
      : // else:
      A[s.length] ? A = s : A // if s[] is shorter than A[], update A[] to s[]
      )(A.sort((a, b) => a - b)) // initial call to g with A[] sorted in ascending order





      share|improve this answer











      $endgroup$



















        2













        $begingroup$

        JavaScript (ES6),  157  143 bytes





        A=>(g=([n,...a],s=[])=>n?s.map((b,i,[...c])=>n<eval(b.join`+`)||g(a,c,c[i]=[n,...b]),g(a,[...s,[n]]))&&A:A[s.length]?A=s:A)(A.sort((a,b)=>a-b))


        Try it online!



        Commented



        A => ( // A[] = input array, re-used to store the best stacks
        g = ( // g is a recursive function taking:
        [n, // n = next weight to process
        ...a], // a[] = array of remaining weights
        s = [] // s[] = list of stacks
        ) => //
        n ? // if n is defined:
        s.map((b, i, // for each stack b[] at position i in s[],
        [...c]) => // using c[] as a copy of s[]:
        n < eval(b.join`+`) || // if n is heavy enough to support all values in b[]:
        g(a, c, c[i] = [n, ...b]), // do a recursive call with n prepended to c[i]
        g(a, [...s, [n]]) // do a recursive call with a new stack containing n
        ) && A // end of map(); yield A
        : // else:
        A[s.length] ? A = s : A // if s[] is shorter than A[], update A[] to s[]
        )(A.sort((a, b) => a - b)) // initial call to g with A[] sorted in ascending order





        share|improve this answer











        $endgroup$

















          2














          2










          2







          $begingroup$

          JavaScript (ES6),  157  143 bytes





          A=>(g=([n,...a],s=[])=>n?s.map((b,i,[...c])=>n<eval(b.join`+`)||g(a,c,c[i]=[n,...b]),g(a,[...s,[n]]))&&A:A[s.length]?A=s:A)(A.sort((a,b)=>a-b))


          Try it online!



          Commented



          A => ( // A[] = input array, re-used to store the best stacks
          g = ( // g is a recursive function taking:
          [n, // n = next weight to process
          ...a], // a[] = array of remaining weights
          s = [] // s[] = list of stacks
          ) => //
          n ? // if n is defined:
          s.map((b, i, // for each stack b[] at position i in s[],
          [...c]) => // using c[] as a copy of s[]:
          n < eval(b.join`+`) || // if n is heavy enough to support all values in b[]:
          g(a, c, c[i] = [n, ...b]), // do a recursive call with n prepended to c[i]
          g(a, [...s, [n]]) // do a recursive call with a new stack containing n
          ) && A // end of map(); yield A
          : // else:
          A[s.length] ? A = s : A // if s[] is shorter than A[], update A[] to s[]
          )(A.sort((a, b) => a - b)) // initial call to g with A[] sorted in ascending order





          share|improve this answer











          $endgroup$



          JavaScript (ES6),  157  143 bytes





          A=>(g=([n,...a],s=[])=>n?s.map((b,i,[...c])=>n<eval(b.join`+`)||g(a,c,c[i]=[n,...b]),g(a,[...s,[n]]))&&A:A[s.length]?A=s:A)(A.sort((a,b)=>a-b))


          Try it online!



          Commented



          A => ( // A[] = input array, re-used to store the best stacks
          g = ( // g is a recursive function taking:
          [n, // n = next weight to process
          ...a], // a[] = array of remaining weights
          s = [] // s[] = list of stacks
          ) => //
          n ? // if n is defined:
          s.map((b, i, // for each stack b[] at position i in s[],
          [...c]) => // using c[] as a copy of s[]:
          n < eval(b.join`+`) || // if n is heavy enough to support all values in b[]:
          g(a, c, c[i] = [n, ...b]), // do a recursive call with n prepended to c[i]
          g(a, [...s, [n]]) // do a recursive call with a new stack containing n
          ) && A // end of map(); yield A
          : // else:
          A[s.length] ? A = s : A // if s[] is shorter than A[], update A[] to s[]
          )(A.sort((a, b) => a - b)) // initial call to g with A[] sorted in ascending order






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 7 hours ago

























          answered 8 hours ago









          ArnauldArnauld

          91.5k7 gold badges107 silver badges373 bronze badges




          91.5k7 gold badges107 silver badges373 bronze badges


























              1













              $begingroup$


              Jelly, 22 bytes



              Œ!ŒṖ€ẎṢ€€ṖÄ>ḊƲ€¬ȦƊƇLÞḢ


              Try it online!



              Top to bottom.






              share|improve this answer









              $endgroup$



















                1













                $begingroup$


                Jelly, 22 bytes



                Œ!ŒṖ€ẎṢ€€ṖÄ>ḊƲ€¬ȦƊƇLÞḢ


                Try it online!



                Top to bottom.






                share|improve this answer









                $endgroup$

















                  1














                  1










                  1







                  $begingroup$


                  Jelly, 22 bytes



                  Œ!ŒṖ€ẎṢ€€ṖÄ>ḊƲ€¬ȦƊƇLÞḢ


                  Try it online!



                  Top to bottom.






                  share|improve this answer









                  $endgroup$




                  Jelly, 22 bytes



                  Œ!ŒṖ€ẎṢ€€ṖÄ>ḊƲ€¬ȦƊƇLÞḢ


                  Try it online!



                  Top to bottom.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 8 hours ago









                  Erik the OutgolferErik the Outgolfer

                  36k4 gold badges30 silver badges113 bronze badges




                  36k4 gold badges30 silver badges113 bronze badges
























                      0













                      $begingroup$


                      Python 3, 112 bytes





                      R=range
                      f=lambda b:[[b[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]


                      Try it online!



                      Takes input in sorted decreasing order. If that isn't allowed, it can be done for 148 bytes: (-10 bytes thanks to @Joel)



                      R=range
                      V=lambda a:sorted(a)[::-1]
                      f=lambda b:[[V(b)[j::i]for j in R(i)]for i in R(1,len(b))if all(V(b)[j]*2>=sum(V(b)[j::i])for j in R(len(b)))][0]


                      or in Python 3.8 for 131:



                      R=range
                      f=lambda b:[[(b:=sorted(b)[::-1])[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]





                      share|improve this answer











                      $endgroup$










                      • 1




                        $begingroup$
                        list(reversed(sorted(a))) can be written as sorted(a)[::-1] for golfing purpose.
                        $endgroup$
                        – Joel
                        6 hours ago










                      • $begingroup$
                        You would think I would know that by now, especially since I do so much other indexing. Thanks.
                        $endgroup$
                        – Hiatsu
                        6 hours ago










                      • $begingroup$
                        Just as a side remark, if not for golfing it would be better write sorted(a, reverse=True) instead.
                        $endgroup$
                        – Joel
                        6 hours ago















                      0













                      $begingroup$


                      Python 3, 112 bytes





                      R=range
                      f=lambda b:[[b[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]


                      Try it online!



                      Takes input in sorted decreasing order. If that isn't allowed, it can be done for 148 bytes: (-10 bytes thanks to @Joel)



                      R=range
                      V=lambda a:sorted(a)[::-1]
                      f=lambda b:[[V(b)[j::i]for j in R(i)]for i in R(1,len(b))if all(V(b)[j]*2>=sum(V(b)[j::i])for j in R(len(b)))][0]


                      or in Python 3.8 for 131:



                      R=range
                      f=lambda b:[[(b:=sorted(b)[::-1])[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]





                      share|improve this answer











                      $endgroup$










                      • 1




                        $begingroup$
                        list(reversed(sorted(a))) can be written as sorted(a)[::-1] for golfing purpose.
                        $endgroup$
                        – Joel
                        6 hours ago










                      • $begingroup$
                        You would think I would know that by now, especially since I do so much other indexing. Thanks.
                        $endgroup$
                        – Hiatsu
                        6 hours ago










                      • $begingroup$
                        Just as a side remark, if not for golfing it would be better write sorted(a, reverse=True) instead.
                        $endgroup$
                        – Joel
                        6 hours ago













                      0














                      0










                      0







                      $begingroup$


                      Python 3, 112 bytes





                      R=range
                      f=lambda b:[[b[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]


                      Try it online!



                      Takes input in sorted decreasing order. If that isn't allowed, it can be done for 148 bytes: (-10 bytes thanks to @Joel)



                      R=range
                      V=lambda a:sorted(a)[::-1]
                      f=lambda b:[[V(b)[j::i]for j in R(i)]for i in R(1,len(b))if all(V(b)[j]*2>=sum(V(b)[j::i])for j in R(len(b)))][0]


                      or in Python 3.8 for 131:



                      R=range
                      f=lambda b:[[(b:=sorted(b)[::-1])[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]





                      share|improve this answer











                      $endgroup$




                      Python 3, 112 bytes





                      R=range
                      f=lambda b:[[b[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]


                      Try it online!



                      Takes input in sorted decreasing order. If that isn't allowed, it can be done for 148 bytes: (-10 bytes thanks to @Joel)



                      R=range
                      V=lambda a:sorted(a)[::-1]
                      f=lambda b:[[V(b)[j::i]for j in R(i)]for i in R(1,len(b))if all(V(b)[j]*2>=sum(V(b)[j::i])for j in R(len(b)))][0]


                      or in Python 3.8 for 131:



                      R=range
                      f=lambda b:[[(b:=sorted(b)[::-1])[j::i]for j in R(i)]for i in R(1,len(b))if all(b[j]*2>=sum(b[j::i])for j in R(len(b)))][0]






                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited 6 hours ago

























                      answered 6 hours ago









                      HiatsuHiatsu

                      1717 bronze badges




                      1717 bronze badges










                      • 1




                        $begingroup$
                        list(reversed(sorted(a))) can be written as sorted(a)[::-1] for golfing purpose.
                        $endgroup$
                        – Joel
                        6 hours ago










                      • $begingroup$
                        You would think I would know that by now, especially since I do so much other indexing. Thanks.
                        $endgroup$
                        – Hiatsu
                        6 hours ago










                      • $begingroup$
                        Just as a side remark, if not for golfing it would be better write sorted(a, reverse=True) instead.
                        $endgroup$
                        – Joel
                        6 hours ago












                      • 1




                        $begingroup$
                        list(reversed(sorted(a))) can be written as sorted(a)[::-1] for golfing purpose.
                        $endgroup$
                        – Joel
                        6 hours ago










                      • $begingroup$
                        You would think I would know that by now, especially since I do so much other indexing. Thanks.
                        $endgroup$
                        – Hiatsu
                        6 hours ago










                      • $begingroup$
                        Just as a side remark, if not for golfing it would be better write sorted(a, reverse=True) instead.
                        $endgroup$
                        – Joel
                        6 hours ago







                      1




                      1




                      $begingroup$
                      list(reversed(sorted(a))) can be written as sorted(a)[::-1] for golfing purpose.
                      $endgroup$
                      – Joel
                      6 hours ago




                      $begingroup$
                      list(reversed(sorted(a))) can be written as sorted(a)[::-1] for golfing purpose.
                      $endgroup$
                      – Joel
                      6 hours ago












                      $begingroup$
                      You would think I would know that by now, especially since I do so much other indexing. Thanks.
                      $endgroup$
                      – Hiatsu
                      6 hours ago




                      $begingroup$
                      You would think I would know that by now, especially since I do so much other indexing. Thanks.
                      $endgroup$
                      – Hiatsu
                      6 hours ago












                      $begingroup$
                      Just as a side remark, if not for golfing it would be better write sorted(a, reverse=True) instead.
                      $endgroup$
                      – Joel
                      6 hours ago




                      $begingroup$
                      Just as a side remark, if not for golfing it would be better write sorted(a, reverse=True) instead.
                      $endgroup$
                      – Joel
                      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%2f191086%2fheavy-box-stacking%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

                      19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу

                      Israel Cuprins Etimologie | Istorie | Geografie | Politică | Demografie | Educație | Economie | Cultură | Note explicative | Note bibliografice | Bibliografie | Legături externe | Meniu de navigaresite web oficialfacebooktweeterGoogle+Instagramcanal YouTubeInstagramtextmodificaremodificarewww.technion.ac.ilnew.huji.ac.ilwww.weizmann.ac.ilwww1.biu.ac.ilenglish.tau.ac.ilwww.haifa.ac.ilin.bgu.ac.ilwww.openu.ac.ilwww.ariel.ac.ilCIA FactbookHarta Israelului"Negotiating Jerusalem," Palestine–Israel JournalThe Schizoid Nature of Modern Hebrew: A Slavic Language in Search of a Semitic Past„Arabic in Israel: an official language and a cultural bridge”„Latest Population Statistics for Israel”„Israel Population”„Tables”„Report for Selected Countries and Subjects”Human Development Report 2016: Human Development for Everyone„Distribution of family income - Gini index”The World FactbookJerusalem Law„Israel”„Israel”„Zionist Leaders: David Ben-Gurion 1886–1973”„The status of Jerusalem”„Analysis: Kadima's big plans”„Israel's Hard-Learned Lessons”„The Legacy of Undefined Borders, Tel Aviv Notes No. 40, 5 iunie 2002”„Israel Journal: A Land Without Borders”„Population”„Israel closes decade with population of 7.5 million”Time Series-DataBank„Selected Statistics on Jerusalem Day 2007 (Hebrew)”Golan belongs to Syria, Druze protestGlobal Survey 2006: Middle East Progress Amid Global Gains in FreedomWHO: Life expectancy in Israel among highest in the worldInternational Monetary Fund, World Economic Outlook Database, April 2011: Nominal GDP list of countries. Data for the year 2010.„Israel's accession to the OECD”Popular Opinion„On the Move”Hosea 12:5„Walking the Bible Timeline”„Palestine: History”„Return to Zion”An invention called 'the Jewish people' – Haaretz – Israel NewsoriginalJewish and Non-Jewish Population of Palestine-Israel (1517–2004)ImmigrationJewishvirtuallibrary.orgChapter One: The Heralders of Zionism„The birth of modern Israel: A scrap of paper that changed history”„League of Nations: The Mandate for Palestine, 24 iulie 1922”The Population of Palestine Prior to 1948originalBackground Paper No. 47 (ST/DPI/SER.A/47)History: Foreign DominationTwo Hundred and Seventh Plenary Meeting„Israel (Labor Zionism)”Population, by Religion and Population GroupThe Suez CrisisAdolf EichmannJustice Ministry Reply to Amnesty International Report„The Interregnum”Israel Ministry of Foreign Affairs – The Palestinian National Covenant- July 1968Research on terrorism: trends, achievements & failuresThe Routledge Atlas of the Arab–Israeli conflict: The Complete History of the Struggle and the Efforts to Resolve It"George Habash, Palestinian Terrorism Tactician, Dies at 82."„1973: Arab states attack Israeli forces”Agranat Commission„Has Israel Annexed East Jerusalem?”original„After 4 Years, Intifada Still Smolders”From the End of the Cold War to 2001originalThe Oslo Accords, 1993Israel-PLO Recognition – Exchange of Letters between PM Rabin and Chairman Arafat – Sept 9- 1993Foundation for Middle East PeaceSources of Population Growth: Total Israeli Population and Settler Population, 1991–2003original„Israel marks Rabin assassination”The Wye River Memorandumoriginal„West Bank barrier route disputed, Israeli missile kills 2”"Permanent Ceasefire to Be Based on Creation Of Buffer Zone Free of Armed Personnel Other than UN, Lebanese Forces"„Hezbollah kills 8 soldiers, kidnaps two in offensive on northern border”„Olmert confirms peace talks with Syria”„Battleground Gaza: Israeli ground forces invade the strip”„IDF begins Gaza troop withdrawal, hours after ending 3-week offensive”„THE LAND: Geography and Climate”„Area of districts, sub-districts, natural regions and lakes”„Israel - Geography”„Makhteshim Country”Israel and the Palestinian Territories„Makhtesh Ramon”„The Living Dead Sea”„Temperatures reach record high in Pakistan”„Climate Extremes In Israel”Israel in figures„Deuteronom”„JNF: 240 million trees planted since 1901”„Vegetation of Israel and Neighboring Countries”Environmental Law in Israel„Executive branch”„Israel's election process explained”„The Electoral System in Israel”„Constitution for Israel”„All 120 incoming Knesset members”„Statul ISRAEL”„The Judiciary: The Court System”„Israel's high court unique in region”„Israel and the International Criminal Court: A Legal Battlefield”„Localities and population, by population group, district, sub-district and natural region”„Israel: Districts, Major Cities, Urban Localities & Metropolitan Areas”„Israel-Egypt Relations: Background & Overview of Peace Treaty”„Solana to Haaretz: New Rules of War Needed for Age of Terror”„Israel's Announcement Regarding Settlements”„United Nations Security Council Resolution 497”„Security Council resolution 478 (1980) on the status of Jerusalem”„Arabs will ask U.N. to seek razing of Israeli wall”„Olmert: Willing to trade land for peace”„Mapping Peace between Syria and Israel”„Egypt: Israel must accept the land-for-peace formula”„Israel: Age structure from 2005 to 2015”„Global, regional, and national disability-adjusted life years (DALYs) for 306 diseases and injuries and healthy life expectancy (HALE) for 188 countries, 1990–2013: quantifying the epidemiological transition”10.1016/S0140-6736(15)61340-X„World Health Statistics 2014”„Life expectancy for Israeli men world's 4th highest”„Family Structure and Well-Being Across Israel's Diverse Population”„Fertility among Jewish and Muslim Women in Israel, by Level of Religiosity, 1979-2009”„Israel leaders in birth rate, but poverty major challenge”„Ethnic Groups”„Israel's population: Over 8.5 million”„Israel - Ethnic groups”„Jews, by country of origin and age”„Minority Communities in Israel: Background & Overview”„Israel”„Language in Israel”„Selected Data from the 2011 Social Survey on Mastery of the Hebrew Language and Usage of Languages”„Religions”„5 facts about Israeli Druze, a unique religious and ethnic group”„Israël”Israel Country Study Guide„Haredi city in Negev – blessing or curse?”„New town Harish harbors hopes of being more than another Pleasantville”„List of localities, in alphabetical order”„Muncitorii români, doriți în Israel”„Prietenia româno-israeliană la nevoie se cunoaște”„The Higher Education System in Israel”„Middle East”„Academic Ranking of World Universities 2016”„Israel”„Israel”„Jewish Nobel Prize Winners”„All Nobel Prizes in Literature”„All Nobel Peace Prizes”„All Prizes in Economic Sciences”„All Nobel Prizes in Chemistry”„List of Fields Medallists”„Sakharov Prize”„Țara care și-a sfidat "destinul" și se bate umăr la umăr cu Silicon Valley”„Apple's R&D center in Israel grew to about 800 employees”„Tim Cook: Apple's Herzliya R&D center second-largest in world”„Lecții de economie de la Israel”„Land use”Israel Investment and Business GuideA Country Study: IsraelCentral Bureau of StatisticsFlorin Diaconu, „Kadima: Flexibilitate și pragmatism, dar nici un compromis în chestiuni vitale", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 71-72Florin Diaconu, „Likud: Dreapta israeliană constant opusă retrocedării teritoriilor cureite prin luptă în 1967", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 73-74MassadaIsraelul a crescut in 50 de ani cât alte state intr-un mileniuIsrael Government PortalIsraelIsraelIsraelmmmmmXX451232cb118646298(data)4027808-634110000 0004 0372 0767n7900328503691455-bb46-37e3-91d2-cb064a35ffcc1003570400564274ge1294033523775214929302638955X146498911146498911

                      Кастелфранко ди Сопра Становништво Референце Спољашње везе Мени за навигацију43°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.5588543°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.558853179688„The GeoNames geographical database”„Istituto Nazionale di Statistica”проширитиууWorldCat156923403n850174324558639-1cb14643287r(подаци)