Answers:
.dↄґ6C65h*325q/Al
C65h* - multiply the day by the (current month + 1)
325q - ^ == 325
6 / - 6 / ^
.dↄґ - load "merry christmas"
Al - ^.capwords()
或18个字节不具有竞争力。
.dↄґ6Cs6Y1q/Al
除了本节外,完全相同:
Cs6Y1q
C - get_time()
s6 - add 1 week
Y - get day of the year
1q - ^ == 1
30 * (10+1)
= 330而不是325
注意:此功能仅在Google Chrome浏览器中经过测试,程序的行为可能因浏览器而异(或设备与设备之间不同)
@ ConorO'Brien节省了2个字节
@ETHProductions节省了7个字节
alert(/c 25/.test(Date())?"Merry Christmas":a)
Uncaught ReferenceError: a is not defined
如果日期不是则退出Dec 25
。我不确定这是否算是崩溃
alert(/c 25/.test(Date())?"Merry Christmas":a)
.slice(6,10)=="c 25"
样
c
(结尾Oct
很近,但仍然不能满足正则表达式)的任何一天或一个月。谢谢你的提示!
Date()
完全取决于实现。例如,我希望它随机器的语言和位置而变化。
感谢来自JavaScript / ES答案的想法,我设法压缩了一些字节。为字典建立索引-不存在的键将引发一个KeyError
。以下代码在本地时区工作
import time;print({1:'Merry Christmas'}['c 25'in time.ctime()])
的输出格式与ctime
语言环境无关-格式始终为〜'Sun Dec 25 19:23:05 2016'
。由于只有12月份的3个字母的缩写以结尾c
,因此'c 25'in time.ctime()
在这里可以安全使用。
先前版本:
这适用于UTC时区。对于本地时区,需要再s/gm/local
增加3个字节。对于Python 2,可以删除print
65个字节的括号。
import time;print({(12,25):'Merry Christmas'}[time.gmtime()[1:3]])
该构造会引发KeyError
其他日期:
>>> import time;print({(1,1):'Happy New Year'}[time.gmtime()[1:3]])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: (12, 25)
import time;print{'2512':'Merry Christmas'}[time.strftime("%d%m")]
Python 2 ,并将其标记为Python 2,则它仍然是66个字节,并且在12月25日以外的日期
1:3
,我偶然复制了我的测试代码
gmtime()
想法作为答案时,您会意识到这一点。希望您不要介意:-)
<?=date(md)-1225?"":"Merry Christmas";
要么
<?date(md)-1225?die:0?>Merry Christmas
要么
<?=["Merry Christmas"][date(md)-1225];
date(Lz)%1001-358
吗?:D
""
在第一个代码中省去2个字节。如果不是因为该死的闰年,你可以节省2字节以上通过更换md
由z
并且1225
由12月25日的一年中的天数。
eval((date(md)^TQZZ).'"Merry Christmas";');
(43个字节)
1
。这将打印计算结果。并且0104-1225
是1121
-1感谢@muddyfish
感谢@AnttiHaapala拯救了另一对夫妇的想法。
import time;print['Merry Christmas'][(12,25)!=time.gmtime()[1:3]]
如果不是12月25日,则抛出IndexError。
59字节的非竞争版本,因为它仅适用于非Le年(使用今年的360,但leap年为361)
import time;print['Merry Christmas'][360!=time.gmtime()[7]]
gmtime()
一对夫妇。我必须承认,我希望我可以用一年中的想法做更多的事情。
`if`(format(Sys.Date(),"%m%d")=="1225","Merry Christmas",)
如果当前日期不是12月25日,则将返回错误,因为没有提供第三个参数if
。
编辑:修复了一个愚蠢的错误
我第一次来这里...从有史以来最好的语言开始:
import java.util.*;public class a{public static void main(String[]r){Calendar c=Calendar.getInstance();if(!(c.get(2)==11&&c.get(5)==25)){int i=1/0;}System.out.print("Merry Christmas");}}
Calendar
for *
并保存一些字节。您还可以args
在main方法中缩短参数的名称,我想...
'Merry Christmas'IHh&Z'5U12h=?}Yl
这适用于该语言的当前版本(19.7.0)。为了引起错误,以下代码利用了字符串的对数给出错误的事实(在将来的版本中可能会改变)。
'Merry Christmas' % Push this string
IHh % Push 3, then 2, concatenate: gives array [3 2]
&Z' % Get 3rd and 2nd outputs of clock vector: current day and month
5U12h % Push 5, square, push 12, concatenate: gives [25 12]
= % Compare if corresponding entries are equal in the two arrays
? % If all entries are equal: do nothing
} % Else
Yl % Logarithm. Gives an error when applied on a string
% End (implicit). Display (implicit)
~left$$|(_D,5)=@12-25||?@Merry Christmas|\?a(12)
说明:
~ IF
left$$|(_D,5) the date string starts with
=@12-25| the string "12-25"
| THEN
?@Me..as| PRINT "Merry Christmas"
\ ELSE
?a(12) Print the twelfth index of an undefined array.
Since there are only 11 elements in undefined arrays, this
results in an index-out-of-bounds error.
The the IF statement is auto-closed by QBIC.
这假设美国MM-DD
日期符号。如果我最终在QBIC中创建一个Substring函数,它将更短。
感谢Adnan的字符串压缩:),节省了11个字节。
1žfže‚12D·>‚Q÷”ÞٌΔ×
žfže‚ Push [current month, current day]
12D·>‚ Push [12, 25]
Q Push tmp = 1 if the two arrays are equal, tmp = 0 otherwise
1 ÷ Evaluate x = 1/tmp. If tmp = 0 a division by 0 exception is thrown
”ÞÙŒÎ”× Implicitly display "Merry Christmas" x times
我做了我首先想到的事情,因此可能有更好的方法。但是PPCG也应该在05AB1E里度过圣诞节;)。
x
是重复和双倍的缩写:)。
99字节解决方案
using System;int i;Console.WriteLine(DateTime.Now.ToString("dM")=="2512"?"Merry Christmas":i/0+"");
100字节的解决方案(更喜欢这个...有点不同)
using System;int i;Console.WriteLine(DateTime.Now.AddDays(7).DayOfYear==1?"Merry Christmas":i/0+"");
解释:
using System;
int i;
// if today plus 7 days is the first day of the year, then it's xmas!
Console.WriteLine(DateTime.Now.AddDays(7).DayOfYear==1
? "Merry Christmas"
// otherwise divide i by 0
: i/0+"");
DateTime.Now.AddDays(7).DayOfYear==1
比DateTime.Now.ToString("ddMM")=="2512"
1个字节短1个字节,但比1个字节长1个字节DateTime.Now.ToString("dM")=="2512"
$"{DateTime.Now:dM}"=="2512"
。dM
是不明确的,但不适用于“ 2512”。
$"{DateTime.Now:dM}"=="2512"?"Merry Christmas":1/1-1+""
55字节)=)
int i
和不公正1/0
?
$"{DateTime.Now:dM}"=="2512"?"Merry Christmas":"".Remove(1)
(59个字节)
((`date +%m%d`-1225))&&${};echo Merry Christmas
*感谢@ KenY-N指出可以删除回显中的引号,感谢@IporSircer可以将条件大小减少2个字节。
bash: ${}: bad substitution
错误。您也可以删除圣诞快乐的引号,以节省两个字节。此外,[ `date +%m%d` = 1225 ]&&echo Merry Christmas
对我而言,等于45个字节。
${}
用!-
一个字节打我。你赢了,我会支持你的。
import time
if time.strftime("%d%m")=="2512":print"Merry Christmas"
else:1/0
如果它在圣诞节时是否以错误退出而没有关系,则:
import time
if time.strftime("%d%m")=="2512":print"Merry Christmas"
1/0
编辑:
感谢@ Flp.Tkc指出我需要提出一个错误
@Max中的-2字节,用于指出有关从strftime函数中删除冒号的信息
et[C25]#1="Merry Christmas"/
说明:
et push an array of current [year month day hour ...]
[C25] push the array [12 25] (C=12)
# find the position of the 2nd array within the first one
1= compare it with 1, resulting in 1 for 1 and 0 otherwise
"Merry Christmas"/ split "Merry Christmas" into pieces of that length
(it crashes if the length is 0)
at the end, all the pieces are concatenated
and printed automatically
感谢Kritixi Lithos,节省了8个字节
再次感谢Kritixi Lithos节省了1个字节;)
namespace System{class P{static void Main(string[] args){var d=DateTime.Today;if(d.Day==25)if(d.Month>11){Console.Write("Merry Christmas!");return;}throw new Exception();}}}
备选的非高尔夫变体:
namespace System //In System, so we don't have to use system.
{
class Program
{
static void Main(string[] args) //Main function.
{
var d = DateTime.Today; //Get Today.
if (d.Day == 25) if (d.Month == 12) //Day has to be 25th, Month has to be 12nd.
{
Console.Write("Merry Christmas!"); return; //Prints.
}
throw new NotChristmasException(); //Errors/Crashes the program.
}
}
class NotChristmasException : Exception { } //Holiday exception, hooray!
}
NotChristmasException
仅在非高尔夫版本中。
if(d.Day==25&&d.Month>11)Console.Write(...);else throw new Exception()
注:如果语句和清除周围的大括号的组合Console.Write
和替换 return
用else
。另外更改,var d=DateTime.Now
您可以args[-1];
在将args重命名为a
so 之后摆脱异常引发a[-1];
(这与在其他地方使用的零除并不相同)
v=1225==strftime("%m%d")||1/0
运行它:
$ echo Merry xmas | awk 'v=1225==strftime("%m%d")||1/0'
awk: cmd. line:1: (FILENAME=- FNR=1) fatal: division by zero attempted
季节问候已传送到awk
。strftime
返回month + day(例如1226
),如果匹配则1225
$0
输出记录。比较结果1225==1226
放在v
var上,如果日期比较失败,该变量用于除以1。
如果不是圣诞节,则会崩溃并显示“函数f中的非穷尽模式”。
import Data.Time
f(_,12,25)="Merry Christmas"
main=getZonedTime>>=print.f.toGregorian.localDay.zonedTimeToLocalTime
不幸的是,没有一个功能可以让您立即以一种有用的格式获取时间,因此大多数转换日期格式。
date +%m%d|grep -q 1225&&echo Merry Christmas||!-
date +%m%d|grep -q 1225||!-;echo Merry Christmas
类似于Mitchell Spector的,但是grep
在静默模式下使用以检查是否匹配,然后&&
将确保仅在成功时打印,并确保||
其使用来查询历史记录!-
,这使我做到了:
-bash: !-: event not found
并停止执行,如!- ; echo foo
所示。的bash
文档说!-n
指的是电流指令减去n
,因此,也许它被解释为!-0
,这给出了一个相同的(与非本地化的)错误消息。
;
代替||
。