首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奈史密斯法则

奈史密斯法则
EN

Code Golf用户
提问于 2018-08-06 14:53:36
回答 8查看 2.5K关注 0票数 12

奈史密斯法则帮助计算出散步或远足所需的时间长度,考虑到距离和上升。

给出一个非空的列表,列出沿路径均匀分布的点的高度以及该路径的总距离(以米为单位),您应该根据奈史密斯法则计算所需的时间。

奈史密斯的规则是,你应该每5公里留出一个小时,再加一个小时,每上升600米。

输入必须以米为单位,保证由非负整数组成,输出应始终为小时或分钟(但不能两者兼而有之),并且必须能够在适用的情况下给出十进制数(浮点不准确是可以的)。

例如,考虑到:

代码语言:javascript
复制
[100, 200, 400, 200, 700, 400], 5000

对于前两个元素[100, 200],您有100米的上升,即10分钟。使用[200, 400],您有200米的上升,即20分钟,[400, 200]没有上升,因此没有增加时间。[200, 700]是500米的上升,这是50分钟,最后[700, 400]没有上升。在五公里的距离内,再加一个小时。总共有140分钟或2.333分钟.几个小时。

测试用例

代码语言:javascript
复制
[0, 600] 2500 -> 1.5 OR 90
[100, 200, 300, 0, 100, 200, 300] 10000 -> 2.8333... OR 170
[40, 5, 35] 1000 -> 0.25 OR 15
[604] 5000 -> 1 OR 60
[10, 10, 10] 2000 -> 0.4 OR 24
[10, 25, 55] 1000 -> 0.275 OR 16.5
EN

回答 8

Code Golf用户

发布于 2018-08-06 15:41:40

JavaScript (ES6),50字节

由于朱塞佩的回答 (在进程结束时除以10 ),节省了1个字节

接受输入作为([altitudes])(distance)。以分钟为单位返回时间。

代码语言:javascript
复制
a=>d=>a.map(p=n=>d-=(x=p-(p=n))<0&&x,d*=.12)&&d/10

在网上试试!

票数 3
EN

Code Golf用户

发布于 2018-08-06 15:45:42

05AB1E,15字节

代码语言:javascript
复制
¥ʒ0›}OT÷s₄;6//+

在网上试试!

以分钟为单位返回时间。

解释

代码语言:javascript
复制
              + # sum of ...
¥ʒ0›}OT÷        # the sum of positive deltas of the altitude divided by 10
        s₄;6//  # the distance divided by 83.33333333 (500/6, or the amount of meters per minute) 
票数 2
EN

Code Golf用户

发布于 2018-08-07 02:26:33

好的,21字节

代码语言:javascript
复制
{y+/0|1_-':x}..1.012*

在网上试试!滥用解析错误,其中.1.012.1 .012相同。

代码语言:javascript
复制
              .1.012* /a = [0.1 * input[0], 0.012 * input[1]]
{           }.        /function(x=a[0], y=a[1])
      1_-':x          /  a = subtract pairs of elements from x
    0|                /  a = max(a, 0) w/ implicit map
 y+/                  /  y + sum(a)

1多亏了街酯

KK,23字节

代码语言:javascript
复制
{.1*(.12*y)++/0|1_-':x}

在网上试试!

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

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

复制
相关文章

相似问题

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