首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGAC2022第一天:让我们建立一个巧克力金字塔!

CGAC2022第一天:让我们建立一个巧克力金字塔!
EN

Code Golf用户
提问于 2022-12-01 00:00:39
回答 10查看 2.3K关注 0票数 23

跟着去年的活动,我们在做代码:高尔夫预告牌2022

从今天(12月1日)到圣诞节(12月25日)的每一天,都会发布一个以圣诞节为主题的挑战,就像“降临”的日历一样。这是一个免费的和公正的乐趣参与的活动,没有领导板和奖品解决他们快速或解决他们的最短代码。更多细节可以在上面的链接中找到。

我有两种奇怪形状的巧克力供应无限:

  • 白巧克力,方金字塔边长1
  • 黑巧克力,侧长为1的正方形

为了庆祝即将到来的圣诞节,我想把它们组装成一个巨大的巧克力金字塔。当金字塔的底部是一个大小为R \times C的矩形时,构建这样一个金字塔的过程如下:

  1. 在地板上放满白色巧克力的RC拷贝。
  2. 用黑巧克力填补白巧克力之间的空白。
  3. 用白巧克力填补黑巧克力之间的洞。现在,顶部是一个大小为(R-1) \times (C-1)的矩形。
  4. 重复1-3,直到顶部的面积为0.

下图显示了2 \times 3的过程。一楼需要8块白巧克力和7块黑巧克力,整个金字塔需要10块白和8块黑巧克力。

考虑到基础矩形的宽度和高度,我需要多少块白巧克力和黑巧克力才能形成巧克力金字塔?

您可以假设宽度和高度是正整数。你可以按任何顺序输出两个数字。

适用标准的密码-高尔夫规则。以字节为单位的最短代码获胜。

测试用例

代码语言:javascript
复制
(width, height) -> (white, dark)
(2, 3) -> (10, 8)
(10, 10) -> (670, 660)
(10, 1) -> (10, 9)
EN

回答 10

Code Golf用户

发布于 2022-12-01 01:26:07

帕里/GP,41字节

代码语言:javascript
复制
f(r,c)=if(r*c,[t=r*c+r--*c--,t-1]+f(r,c))

在网上试试!

帕里/GP,41字节

代码语言:javascript
复制
f(r,c)=m=min(r,c);[t=1+3*r*c-m^2,t-3]*m/3

在网上试试!

代码语言:javascript
复制
f(r,c)=m=min(r,c);[t=r*c*m+m/3-m^3/3,t-m]

在网上试试!

使用封闭形式公式。

票数 4
EN

Code Golf用户

发布于 2022-12-01 08:04:44

05AB1E,13 字节数

代码语言:javascript
复制
Wݨ€-DPαOD>‚O

@emanresuAVyxal回答港,所以一定要支持他/她!

输入为对[width,height];输出为对[dark,white]

在网上试试验证所有测试用例.

Explanation:

代码语言:javascript
复制
W             # Get the minimum of the (implicit) input-pair
 Ý            # Pop and push a list in the range [0,min]
  ¨           # Remove the last item to make the range [0,min)
   €-         # Subtract each from the (implicit) input-pair
     D        # Duplicate this list of pairs
      P       # Get the product of each inner pairs
       α      # Get the absolute difference with the values in the pairs
        O     # Sum each inner pair
         D    # Duplicate this list
          >   # Increase each inner value by 1
           ‚  # Pair the two lists together
            O # Sum each inner list
              # (after which this pair is output implicitly as result [dark,white])
票数 2
EN

Code Golf用户

发布于 2022-12-01 15:57:08

皮斯,20字节

代码语言:javascript
复制
_-h=SQ
sm+*FQ*F=tMQh

在网上试试!

拍摄(宽度,高度),输出(白色,深色)

解释

代码语言:javascript
复制
   =SQ            sort the input, set to Q
_-h               output dark - min(Q)

s                 sum of
 m          hQ    run min(Q) times:
  +                add
   *FQ             product of elements of Q
        =tMQ       decrement each element of Q
      *F           product of elements of Q
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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