首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

售电
EN

Code Golf用户
提问于 2018-02-10 21:46:23
回答 4查看 301关注 0票数 -4

杰克是个小商人。他找到了一种赚钱的方法,那就是在价格便宜的时候买电,在价格更贵的时候卖电。他把电储存在他自己做的电池里。

挑战

您将获得N (如果需要)、杰克知道电力成本的天数、X、杰克可用于投资电力的金额以及N日的电力价值(买卖价值)。你的工作是决定杰克什么时候应该买,什么时候应该卖电,这样他就能赚到尽可能多的钱,然后打印出他以后能得到的尽可能多的钱。

电的价值总是一个正整数,但取决于杰克拥有的钱的数量,他拥有的电量和金钱可能是浮点数。

示例

(I/O不必如所示):

1.

代码语言:javascript
运行
复制
4 10
4 10 5 20

输出:100

  • 因为他在第一天买电,第二天卖,第三天买,第四天卖。

2.

代码语言:javascript
运行
复制
3 21  
10 8 3

输出:21

  • 因为如果他不买/不卖电就更好了。

3.

代码语言:javascript
运行
复制
3 10
8 10 14

输出:17.5

  • 因为他在第一天买电,但在第三天就卖了。

4.

代码语言:javascript
运行
复制
5 10
4 2 10 5 20

输出:200

  • 很像示例1,但这一次Jack在购买之前等待价格降到2

程序与最短数量的代码获胜!这是一个密码高尔夫问题。注意:只要仍然有意义,你就可以缩短输入。

EN

回答 4

Code Golf用户

回答已采纳

发布于 2018-02-11 14:41:18

外壳,7字节

代码语言:javascript
运行
复制
Π:mY1Ẋ/

在网上试试!

怎么做?

代码语言:javascript
运行
复制
Π:mY1Ẋ/ – Full program.
     Ẋ  – For each pair of adjacent elements from the input list...
      / – ... Divide the second by the first.
  m     – For each quotient...
   Y1   – ... Get the maximum between it and 1.
 :      – Append the second input.
Π       – Get the product of the resulting list.
票数 1
EN

Code Golf用户

发布于 2018-02-11 13:48:41

哈斯克尔,41字节

代码语言:javascript
运行
复制
l#n=foldr((*).max 1)n$zipWith(/)(tail l)l

在网上试试!

票数 2
EN

Code Golf用户

发布于 2018-02-11 13:27:46

05AB1E,9字节

代码语言:javascript
运行
复制
Rü/εXM}P*

在网上试试!

使用与乔纳森·艾伦的果冻回答中相同的方法。

解释

代码语言:javascript
运行
复制
R           # reverse input list of buy/sell values
 ü/         # pairwise division
   εXM}     # max of each element and 1
       P    # product
        *   # multiply by initial capital
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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