首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >给定4个栅栏的长度,你能做的最大的长方形院子是什么?

给定4个栅栏的长度,你能做的最大的长方形院子是什么?
EN

Code Golf用户
提问于 2023-05-09 22:14:38
回答 18查看 3.6K关注 0票数 21

这是一个很简单的小问题,我认为这是以前没有人问过的。

挑战

编写一个程序或函数,其中包含四个正整数,表示可移动但不可折断和不可弯曲的直栅栏的长度。输出最大的长方形院子的面积,可以完全用这些栅栏围起来。

栅栏可以以90°的增量移动和旋转,但不能重叠或切割。在院子拐角处碰到的篱笆仍然算在那个拐角处的院子里。

例如,给定栅栏长度2、8、5和9,你能做的最好是使2和5边平行,8和9边平行于一个院子,即2×8:

代码语言:javascript
运行
复制
 888888885
2yyyyyyyy5
2yyyyyyyy5
9999999995
         5

让任何一方长一点,围栏就不会完全包围院子。因此,这里的产量,院子的面积,应该是16。

另一个例子是,给定1、1、2、2,可以建造的最大面积院子是2:

代码语言:javascript
运行
复制
 22
1yy1
 22

有第1区的院子

代码语言:javascript
运行
复制
22
1y1
 22

是一个有效的院子,因为它的周长是完全围栏,但1是无效的输出,因为它不是最大的。

这是密码-高尔夫,所以最短的程序赢了!

您可能不会假设程序的4个整数输入是按任何特定顺序进行的。

下面是一些更多的测试用例:

代码语言:javascript
运行
复制
Inputs -> Output
1,1,1,1 -> 1
1,2,3,4 -> 3
4,3,2,1 -> 3
90,1,2,1 -> 2
1,90,1,1 -> 1
44,51,50,36 -> 1800
3,3,3,3 -> 9
3,3,3,4 -> 9
3,4,3,4 -> 12
4,4,3,4 -> 12
4,4,4,4 -> 16
EN

回答 18

Code Golf用户

发布于 2023-05-09 23:01:40

Python,28字节

代码语言:javascript
运行
复制
lambda*a:min(a)*sorted(a)[2]

它是一个匿名函数,当被调用时,它返回答案,比如func(2,8,9,5) -> 16func(1,1,2,2) -> 2

除非我完全误解了我自己的问题,否则我相信它可以通过对4个输入数字进行排序,取最小的第二次最大的次数来解决,因为这两个边将分别与第二个最小和最大的平行。

就像如果排序的输入是a <= b <= c <= d,那么您可以做的最大的rect是区域a * c,其中边ab并行,cd并行,一些bd栅栏可能会被浪费掉。

(我是这里的一个新用户,所以我很想知道这个Python是否可以被缩短。谢谢!)

票数 11
EN

Code Golf用户

发布于 2023-05-10 01:58:05

莱伊,7字节

代码语言:javascript
运行
复制
&napfp*

在网上试试!

与其他解决方案类似,这会对堆栈中的数字进行排序,以获得最小和第二大的数据。然后它会将它们加倍以得到答案。

代码语言:javascript
运行
复制
&n       - read in all the numbers
  a      - sort
   p     - discard top (largest)
    f    - flip two entries (pushes 2nd largest down)
     p   - discard top (3rd largest)
      *  - multiple what's left (smallest and 2nd largest)
         - exits and prints what's on the stack as a number
票数 7
EN

Code Golf用户

发布于 2023-05-10 01:18:28

阿图罗,20字节

代码语言:javascript
运行
复制
$->a[sort'a a\0*a\2]

试试看

对长度进行排序,然后将第一个乘以第三个。与blaketyro独立得出的算法相同。

票数 5
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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