来临挑战3:是时候重新制作礼物了!


9

<<上一页 下一页>>

不幸的是,圣诞老人无法及时赶上精灵!他现在必须回到制造礼物。由于精灵绝对不是圣诞老人的奴隶,所以他必须弄清楚要付多少钱给他们。

挑战

给定一些有关礼物的信息,确定所有礼物的制造成本。

每个礼物都放在一个纸板箱中,并用包装纸包裹,最后用缎带包裹。包装纸很神奇,不需要重叠,因此包装纸的使用量正好等于盒子的表面积。所有礼物都是矩形棱柱,因为这样圣诞老人可以更紧凑地存放它们。色带沿所有三个方向缠绕(因此,用于包装的色带的长度等于三个不同周长的总和)。

幸运的是,礼物本身的成本是已知的。纸板每平方米1美元,包装纸每平方米2美元。(提示:您可以将表面积乘以3:P)。碳带每米收费1美元。

格式规格

输入将作为礼物清单给出,其中每个礼物都包含实际物品的成本和礼物盒的三个维度。您的输出应该是所需的总成本。

准确的说,对于单个存在的关于项目成本的成本公式c和尺寸xyzc + 6 * (x * y + y * z + z * x) + 4 * (x + y + z)

测试用例

[[7, 8, 6, 7], [7, 7, 5, 5], [8, 9, 6, 7], [6, 5, 10, 10], [5, 9, 6, 7], [9, 9, 10, 6], [8, 10, 10, 6], [6, 5, 7, 9], [7, 10, 8, 8], [5, 9, 9, 10]] -> 11866
[[5, 10, 8, 9], [8, 8, 5, 8], [8, 7, 7, 6], [5, 9, 9, 10], [9, 7, 5, 8], [9, 8, 9, 5], [7, 5, 6, 7], [5, 7, 6, 10]] -> 8854
[[9, 8, 8, 8], [10, 9, 8, 5], [10, 7, 5, 5], [10, 10, 6, 6], [8, 5, 8, 7]] -> 4853
[[7, 7, 8, 10], [8, 10, 7, 8], [9, 7, 7, 8], [8, 5, 10, 5], [6, 6, 6, 8], [8, 9, 7, 5], [8, 5, 6, 5], [7, 9, 8, 5], [10, 10, 10, 8]] -> 9717
[[5, 8, 9, 7], [5, 8, 7, 10], [5, 7, 7, 6], [5, 5, 5, 6], [9, 9, 5, 7], [5, 6, 7, 8], [8, 5, 8, 7], [6, 9, 5, 5], [10, 10, 9, 10]] -> 9418
[[9, 9, 7, 10], [5, 8, 7, 9], [5, 5, 9, 8], [10, 5, 9, 10], [8, 5, 10, 7], [8, 9, 5, 5], [5, 10, 6, 10]] -> 8178
[[5, 9, 5, 8], [7, 8, 10, 6], [7, 10, 7, 10], [8, 9, 7, 5], [5, 7, 8, 6], [9, 9, 6, 10], [6, 5, 9, 9], [7, 9, 9, 9]] -> 9766
[[7, 10, 5, 10], [8, 10, 8, 9], [8, 6, 7, 8], [6, 9, 8, 5], [6, 7, 10, 9], [7, 6, 5, 8]] -> 7118
[[10, 6, 7, 5], [5, 9, 5, 9], [9, 7, 8, 5], [6, 6, 9, 9], [9, 9, 6, 9], [10, 5, 8, 9], [7, 5, 6, 10], [9, 10, 5, 5]] -> 8007
[[8, 10, 7, 8], [9, 10, 5, 8], [6, 7, 5, 6], [10, 10, 9, 8], [7, 5, 8, 9], [10, 10, 6, 7], [10, 8, 9, 10], [5, 10, 5, 5]] -> 9331

规则

  • 适用标准漏洞
  • 输入和输出可以任何合理的格式给出和呈现
  • 您必须将输入作为礼物列表,而不是4个属性列表。
  • 这是一个 ,因此以字节为单位的最短答案会获胜
  • 没有答案将被接受

希望这个挑战比以前的挑战容易:P

注意:我从Advent Of Code汲取灵感来挑战这个系列。我没有与此网站的隶属关系

通过查看此处第一个挑战的“链接”部分,您可以查看该系列中所有挑战的列表。


我们在c + 6 * (x * y + y * z + z * x) + 4 * (x + y + z)
格雷厄姆(Graham)

@Graham是的,原来我忘了添加。从规格中删除。
HyperNeutrino

@cairdcoinheringaahing抱歉让您感到困惑。我决定坚持最初的想法,并编辑了测试用例以反映这一点。谢谢!
HyperNeutrino

6
我一直在享受这一系列的挑战,但是(诚然,在喝了很多啤酒之后!)这似乎就像是哪种语言可以在最少的字节中执行封闭式公式而没有任何创意高尔夫的空间,因此,在这种情况下,没有+我一个。
毛茸茸的

1
在澄清了现有评论要点后,对于额外的投票人,我还需要澄清什么?
HyperNeutrino

Answers:


5

JavaScript(ES6),58个字节

a=>a.reduce((p,[c,x,y,z])=>p+c+6*(y*z+x*(y+=z))+4*(x+y),0)

测试用例

怎么样?

此处使用的唯一技巧是将(xy + xz)分解为x(y + z),然后在公式的最后一部分重用和(y + z)

a => a.reduce(                    // for each present in a:
  (s, [c, x, y, z]) =>            //   s = sum, [c, x, y, z] = present parameters
    s +                           //   add to s:
    c +                           //     c
    6 * (y * z + x * (y += z)) +  //     6(yz + x(y + z))
    4 * (x + y),                  //     4(x + (y + z))
  0                               //   initial sum = 0
)                                 // end of reduce()



2

Python 3,56个字节

lambda*a:sum(c+(6*x+4)*(y+z)+6*y*z+4*x for(c,x,y,z)in a)

在线尝试!

  • -2个字节感谢Xcoder先生!
  • -15字节感谢notjagan!
  • -1字节感谢Alix Eisenhardt!

2

C(GCC) 104 100 99 93个字节

  • 感谢PrincePolka节省了四个 五个十一字节。
t,x,y,z;f(A,a)int*A;{for(t=0;a--;)t+=*A+++6*((x=*A++)*(y=*A++)+(z=*A++)*(x+=y))+4*(x+z);t=t;}

在线尝试!

获取一份礼物属性列表(列表长度可被四分之一)和一个整数,指定礼物的数量。返回制造所有礼物的成本。


100字节(如果不需要工作多个字节),则可以刮除j = t = 0,
PrincePolka


@PrincePolka谢谢。按照共识,一个功能必须多次工作,因此j=t=0必须保留。我不太清楚如何重新安排计算以节省一个字节。如果您在实施高尔夫球运动时链接到完整版本的代码,这将有所帮助。
乔纳森·弗雷奇


@PrincePolka非常感谢。
乔纳森·弗雷希

1

05AB1E,17个字节

vyćsO4*y¦æ2ùPO6*O

在线尝试!

说明

v                  # for each present y
 yć                # extract the head (cost)
   s               # swap the dimensions to the top
    O4*            # sum and multiply by 4
       y¦          # push y with the head (cost) removed
         æ         # compute the powerset
          2ù       # keep only elements of length 2
            PO     # product and sum
              6*   # multiply by 6
                O  # sum everything



0

Excel,60个字节

输入从列AD,每个新行。其他任何栏中的公式。

=SUMPRODUCT(A:A+6*(B:B*C:C+C:C*D:D+B:B*D:D)+4*(B:B+C:C+D:D))

您可以删除2个字节,方法是将其传输到Google表格,然后删除终端))
Taylor Scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.