首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGAC2022第17天:礼物堆

CGAC2022第17天:礼物堆
EN

Code Golf用户
提问于 2022-12-16 19:31:52
回答 8查看 408关注 0票数 14

代码:高尔夫预告牌2022事件的一部分。有关详细信息,请参阅链接的元帖子。

https://xkcd.com/835启发

在他的中年危机中,圣诞老人冲动地购买了一款Sleigh™作为今年的礼物。唯一的问题是,这种雪橇有一个特殊设计的无限现在躯干与刚性的边,而不是一个现在的袋子与灵活的。这意味着圣诞老人必须把礼物包装得最好,这样才有尽可能少的空空间。

挑战

编写一个以正整数列表(表示呈现宽度)为输入的程序,并输出正整数列表(表示礼物行),其中每一行遵循以下两条规则:

  • 每一行的礼物从来没有比前面的少。
  • 每一行的总宽度与当前最宽的宽度相同。

如果不可能实现这些规则,程序必须返回任何常量值。可能有多个有效的解决方案;您的程序可以输出其中的任何一个。

示例

代码语言:javascript
复制
Input: [5, 1, 2, 6, 4, 3, 3]
Possible output: [[6], [5, 1], [2, 4], [3, 3]]
Visualization:
vvvvvv
+++++=
xx----
___ooo

Input: [9, 4, 2, 4, 5, 3]
Possible output: [[9], [4, 5], [3, 4, 2]]
Visualization:
+++++++++
vvvv=====
xxxoooo--

我不知道是否有任何可能输出的输入;在我看来并不是这样,但是如果你能证明有或没有,请留下评论!(我并不是用不同的单行礼物排序来计算细微的差异。)

EN

回答 8

Code Golf用户

发布于 2022-12-17 16:57:06

05AB1E,14字节

代码语言:javascript
复制
æʒO¹àQ}éæ.Δ˜ÃQ

在网上试试!

解释:

代码语言:javascript
复制
æʒO¹àQ}éæ.Δ˜ÃQ
æ               # powerset
 ʒ    }         # filter:
  O             #   sum
   ¹à           #   maximum of input
     Q          #   are equal
       é        # sort by length
        æ       # powerset
         .Δ     # first where the following is true:
           ˜    #   flatten
            Ã   #   intersect with implicit input
             Q  #   is equal to implicit input
票数 4
EN

Code Golf用户

发布于 2022-12-16 19:45:59

维沙尔,16字节

代码语言:javascript
复制
ṖvøṖÞf'Ṡ?G=A;hÞṡ

在网上试试!

效率极低。只是用蛮力强迫它。

代码语言:javascript
复制
ṖvøṖÞf'Ṡ?G=A;hÞṡ
Ṗ                 # All permutations
 vøṖ              # For each, get a list of all ways to partition the list
    Þf            # Shallow flatten
      '           # Filter:
       Ṡ          #  Sum each
        ?G=A      #  All are equal to the max of the input?
            ;     # End filter
             h    # First item
              Þṡ  # Sort by length
票数 3
EN

Code Golf用户

发布于 2022-12-16 21:27:49

杰夫特,21 字节数

如果没有结果,则返回undefined

代码语言:javascript
复制
n
à f@̶XxÃà æ@eXÔc n

试试看

代码语言:javascript
复制
n\nà f@̶XxÃà æ@eXÔc n     :Implicit input of array U
n                          :Sort
 \n                        :Reassign to U
   à                       :Combinations
     f                     :Filter by
      @                    :Passing each X through the following function
       Ì                   :  Last element of U
        ¶                  :  Is equal to
         Xx                :  X reduced by addition
           Ã               :End filter
            à              :Combinations (in descending order of length)
              æ            :First element to return true
               @           :When passed through the following function as X
                e          :  U is equal to
                 XÔ        :    Reverse X (mutates the original)
                   c       :    Flatten
                     n     :    Sort
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/255591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档