首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我吃过午饭了吗?

我吃过午饭了吗?
EN

Code Golf用户
提问于 2017-07-14 20:03:57
回答 15查看 1.4K关注 0票数 15

你喜欢吃午饭。然而,你在节食,并希望确保你不会意外地在一天内吃两次午餐。所以你需要做一个程序来帮助你确保。

然而,一个复杂的问题是,你在一个非常奇怪的时间表上吃午餐。您吃午餐的时间是月:日PM (您可以使用UTC或本地化时区)。对,如果是7月14日,你晚上7点14分吃午饭

对于您的程序,您需要使用当前的日期和时间(不要接受输入),如果您已经一天吃过午餐(或者现在是午餐时间),则输出一致的真实值;如果没有,则输出一致的虚假值。

示例:(运行程序=>输出的时间)

  • 5月4日上午11:35 =>假(你将在下午5:04吃午饭)
  • 6月3日下午5:45 =>假(你将在下午6:03吃午饭)
  • 7月28日晚上8点30分=> true (你在晚上7点28分吃午饭)
  • 12月15日下午3:25 => true (你中午12:15吃午饭)
  • 2月29日下午2:29 =>真(正好是午餐时间)
  • 10月12日12:00上午12:00 =>假(刚开始的一天)

参考:

12个小时钟的工作原理

EN

回答 15

Code Golf用户

发布于 2017-07-14 20:28:23

Swift 3,310个字节

代码语言:javascript
复制
import Foundation;var n=String(describing:Date());var k=n.startIndex;print(Int(n[n.index(k,offsetBy:5)...n.index(k,offsetBy:6)])!*60+Int(n[n.index(k,offsetBy:8)...n.index(k,offsetBy:9)])!+720<=Int(n[n.index(k,offsetBy:11)...n.index(k,offsetBy:12)])!*60+Int(n[n.index(k,offsetBy:14)...n.index(k,offsetBy:15)])!)

看看这个!

这打印truefalse,分别为真实和虚假。

注意:这只适用于9999年,晚上11:59:59,因为它使用String来比较日期。

票数 7
EN

Code Golf用户

发布于 2017-07-14 21:09:31

八度,61字节

代码语言:javascript
复制
diff(str2num([(d=datestr(now,'mmddHHMM'))(1:4);d(5:8)]))>1200

在网上试试!

解释:

第一,职能:

  • now()返回十进制格式的时间。括号是可选的。
  • datestr根据第二个参数中给出的格式将十进制数转换为字符串。
  • str2num将字符串转换为数字
  • diff取两个数字之间的差额

分解:

我们从中间取出来:

代码语言:javascript
复制
diff(str2num([(d=datestr(now,'mmddHHMM'))(1:4);d(5:8)]))>1200

datestr(now,'mmddHHMM'):首先,我们将当前时间now作为datestr的输入,并指定mmddHHMM格式。字母的意思是:mm = monthdd = dayHH = hourMM = minutesAM,指定时间应该是12小时格式。不包括分离器,以保持它尽可能短。在编写此说明时,它将输出d = 07142117。从现在起,我将把这部分称为x

[(d=x)(1:4);d(5:8)]:将上面的字符串存储为d,然后创建一个包含两个元素的数组,前四个字符,然后是5-9个字符。这个给出

代码语言:javascript
复制
ans =
0714
2122

其中数字存储为字符串,而不是数字。我们将对下面的y调用上面的结果。

str2num(y)将字符数组转换为数字,其中每行转换为一个数字。这给了[714; 2122]。我们将为z调用结果。

diff(z)>1200获取两个数字之间的差额,并检查当前时间是否比当前日期高1200。这说明了AM/PM。这给了我们想要的结果。

票数 2
EN

Code Golf用户

发布于 2017-07-14 21:48:05

C#,174个字节

代码语言:javascript
复制
using System;public class Program{public static void Main(){Console.WriteLine(DateTime.Now>DateTime.Today.AddHours(DateTime.Today.Month+12).AddMinutes(DateTime.Today.Day));}}

在网上试试!

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

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

复制
相关文章

相似问题

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