首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写个微波计时器!

写个微波计时器!
EN

Code Golf用户
提问于 2020-05-19 15:40:03
回答 32查看 5.5K关注 0票数 25

你是Microteque的一名员工,这是一家硅谷领先的初创公司,为各种奇怪的地方创造智能微波炉。你的顾客可以得到印有图案的微波炉,以配合他们的厨房、露营者、男人洞穴;甚至大型国家设施的厨房也有闪亮的新品牌微波炉。

由于微波控制板技术的尖端特性,你最终不得不使用编程语言MicrowaveX*,你正在研究如何编程时间计数器。你的柜台看起来是这样的:

您的目标是编写一个程序,该程序占用输入时间并将其转换为微波运行所需的秒数。

作为输入,函数必须采用##:##格式的字符串(包括位置3处的冒号)并返回一个整数。

请注意,它还应该能够处理超过60秒的秒插槽。

最后,由于一些烦人的规定,你不能让你的微波炉运行超过100分钟(6,000秒)。

抽样输入和产出:

01:30 ->90秒

00:66 -> 66秒

01:99 -> 159秒

02:39 -> 159秒

99:99 -> 6,000秒(由于上述规定,上限为100分钟)

*:MicrowaveX碰巧与你所选择的编程语言相同,但Microteque将其重新命名为听起来对投资者更有吸引力。

EN

回答 32

Code Golf用户

发布于 2020-05-19 16:55:18

Python 2,42字节

代码语言:javascript
复制
lambda t:min(int(t[:2])*60+int(t[3:]),6e3)

在网上试试!

票数 11
EN

Code Golf用户

发布于 2020-05-19 16:45:14

JavaScript (ES6),42字节

代码语言:javascript
复制
s=>Math.min(6e3,+([m]=s.split`:`)[1]+m*60)

在网上试试!

评论

代码语言:javascript
复制
s =>               // s = input string
  Math.min(        // return the minimum of ...
    6e3,           //   ... 6000 and the following result ...
    +(             //   coerce to integer:
      [m] =        //     store into m the number of minutes
        s.split`:` //     which is the first term of the array obtained
                   //     by splitting s on ':'
    )[1] +         //   yield the seconds (2nd term of the above array)
    m * 60         //   and add the seconds multiplied by 60
  )                // end of Math.min()
票数 9
EN

Code Golf用户

发布于 2020-05-19 19:52:21

批处理,55字节

代码语言:javascript
复制
@set/ps=
@cmd/cset/a"(s=%s::=*60+%)+(s-=6000)*(-s>>13)

获取STDIN的输入。说明:%s::=*60+%在输入中以*60+代替:,从而生成一个将时间转换为秒的算术表达式。因为Batch没有最小函数,所以我必须通过右移产生0-1的差值来计算这个值,然后用来调整秒数,然后由于使用cmd/c而自动输出。

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

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

复制
相关文章

相似问题

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