将日期编码为平安夜格式


51

这篇文章发表的那天是平安夜。明天将是圣诞节。昨天是平安夜。两天后

Christmas Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve

您的工作是确定程序运行的日期,并将其编码为平安夜格式。

  • 如果您的程序在圣诞节运行,则应输出字符串“圣诞节”。
  • 如果您的程序不是在圣诞节运行,则应输出字符串“ Christmas”,然后输出字符串“ Eve”,重复n一次,即n直到圣诞节的天数。
    • 请注意,这必须基于下一个圣诞节。例如,如果一天是2019年4月26日,则必须基于2019年12月25日而不是其他任何圣诞节进行计算。
    • 记住要数leap日。
  • 圣诞节是每年的12月25日。

这是,因此最短的代码获胜!请注意,尽管这样做的目的不是找到任何一种语言中最短的程序,而是找到每种特定语言中最短的程序。例如,如果您找到最短的C ++程序,那么即使有人在Python中找到了一个较短的程序,它也将赢得C ++竞赛。


7
不知何故,当我看到动画片-我从+1来
黑猫头鹰Kai


7
@BlackOwlKai LMBO在您发表评论之前,我什至没有看到该漫画。我已经计划发布此邮件,并且正等待圣诞节前夕。我猜想,伟大的思想会一样。
PyRulez

1
日期可以作为参数吗?
奥利维尔·格雷戈尔(OlivierGrégoire)

1
@OlivierGrégoire嗯,如果该语言无法以其他方式获取当前日期,我会允许的。
PyRulez

Answers:


52

SmileBASIC,73 71 67字节

?"Christmas";
@L?" Eve"*(D!=P);
P=D
DTREAD OUT,M,D
IF M/D-.48GOTO@L

该程序将打印“圣诞节”,然后每天打印一次“夏娃”,直到12月25日。(12/25 = 0.48)
可能需要长达一年的时间才能运行。


7
纯天才...
FlipTack

7
这让我微笑...
尼尔

3
真好!我的JavaScript解决方案之一采用了类似的方法。但是,在JavaScript中,等待时间只是尽力而为。SmileBASIC在这方面进展如何?
targumon

4
@ 12Me21显然会由于leap秒而失败,该版本看起来要好得多。
Rɪᴋᴇʀ

5
+1跳出框框让我发笑。
汤姆(Tom)

24

Excel公式,59个字节

="Christmas"&REPT(" Eve",DATE(YEAR(NOW()+6),12,25)-TODAY())

4
我认为YEAR(TODAY()+6)总是返回正确的年份,从而避免出现这种情况。
尼尔,

3
我认为YEAR(NOW()+6)少2个字节也可以工作。
土司工程师

2
我认为=“ Christmas”&REPT(“ Eve”,DATE(YEAR(NOW()+ 6),12,26)-NOW())更短,我认为它应该可以工作。
JeroendeK '18

1
NOW()包括时间,所以它不是整数,我不确定REPT是否允许。
18Me21年

2
但这不会在圣诞节那天给“圣诞节”。检查="Christmas"&REPT(" Eve",DATE(YEAR(DATE(2018,12,25)+6),12,26)-DATE(2018,12,25))
安东尼

12

Perl 6的61个 47字节

说“圣诞节”〜“夏娃”(Date.today ... ^ {。month == 12 &&。day == 25})

say 'Christmas'~' Eve'x(Date.today...^/12\-25/)

在线尝试!

-14字节(!)感谢Jo King

Date.today ...^ /12\-25/是从今天开始到圣诞节前一天的日期序列。(将正则表达式/12\-25/与日期的字符串表示形式进行匹配。)将字符串" Eve"复制等于该序列长度的次数,并在字符串之后输出"Christmas"


您能否执行“ month> 11”来保存一个字节?
chrixbittinx

2
/12.25/工作吗?
Kritixi Lithos

2
@Cowsquack不,因为那样的日期可能会与年份匹配,例如12025-12-24
Jo King

我认为可以肯定不会发生
12Me21 '18

8

R112106 72字节

通过@digEmAll和@ J.Doe

x=Sys.Date()-1;cat('Christmas');while(!grepl('12-25',x<-x+1))cat(' Eve')

在线尝试!

我的原始答案是在澄清代码要以代码运行的日期作为输入之前。可以像上面那样修改它以节省很多字节,但我不会打扰。

function(x,z=as.Date(paste0(strtoi(format(x,"%Y"))+0:1,"-12-25"))-x)cat("Christmas",rep("Eve",z[z>=0][1]))

在线尝试!

说明:每个人都在教堂,所以我有时间这样做。提取年份,强制转换为整数。对当年的Xmas和下一年的Xmas作向量,然后减去输入日期,以得到输入日期和这两个Xmas之间两个差值的向量。

选择非负数和cat带有多个“夏娃”的“圣诞节”。


您只使用y一次,因此可以直接使用108个字节。
朱塞佩

也可以z[z>=0][1]代替min吗?
朱塞佩

73个字节。根据最后一条评论,该程序必须根据运行日期输出文本。圣诞快乐!:D
digEmAll

1
将您的文件调整为72个字节,@digEmAll。圣诞节快乐!
J.Doe

8

Windows PowerShell67 64 63字节

for(;1225-'{0:Md}'-f(date|% *ys $i)){$i++}'Christmas'+' eve'*$i

在线尝试!

通过使用ormat运算符代替,然后从数值1225中减去日期字符串而不是与进行比较,成功地删除了3个字节和 4个字节(感谢Cows quack)。结果整数将被解释为以下条件的布尔值:(将在圣诞节发生)解释为(不进入循环),而其他任何值解释为(进入循环)。-f.ToString()-ne0FalseTrue

由于整数现在位于左侧,因此日期字符串将被转换为整数并完成数学运算,与之前的版本将1225整数转换为用于比较的字符串相反。

原始版本


Windows PowerShell,67字节

for(;(date|% *ys $i|% tost* Md)-ne1225){$i++};'Christmas'+' eve'*$i

在线尝试!

基本上将for循环用作while循环,因为它更短。在循环条件下,我们使用可以通配符名称调用方法的形式,检查通过管道传递给的别名的当前日期(date缩写为Get-Date)。在这种情况下,该方法是在对对象,我们给出的数值是。ForEach-Object%AddDays()DateTime$i

这将ForEach-Object再次传递给调用该ToString()方法的方法,该方法具有格式字符串Md(月,日,后最小位数,因为我们不在乎接下来的内容)。然后测试该字符串以查看其是否不等于-nenumber 1225,该数字将转换为用于比较的字符串,从而节省了引号。

这就是为什么月和日都是个数字无关紧要的原因,它永远不会模棱两可,因为一年中没有其他日期可归纳为1225

循环继续进行,直到字符串 为止1225。在程序开始时,$i它将为零,因此它将比较今天的日期,并且该循环将永远不会执行,但是对于$i循环体内的其他任何一天,该计数都会递增,这样我们就可以算出直到明年圣诞节,自动计算leap年以及圣诞节是否过了今年。

循环之后,我们仅输出Christmas连接后的字符串,该字符串的结果是将字符串eve乘以的值$i(圣诞节那天为0,结果为,结果为eve)。


显然;以后{$i++}是多余的吗?(同样令您赞叹,您再次领先bash)
Kritixi Lithos

@Cowsquack真好!我怎么没注意到呢?
briantist

7

C#(Visual C#交互式编译器),89字节

Write("Christmas");for(var t=DateTime.Now;$"{t:Md}"!="1225";t=t.AddDays(1))Write(" Eve");

在线尝试!

-3个字节,感谢@JeppeStigNielsen!

我的策略很简单:

  1. 将循环变量初始化为t当前日期
  2. Eve如果t不是圣诞节则打印
  3. 添加一天t并重复

我尝试了一些更高级的操作,但是这种方式需要最少的字节数。


...您需要在增量器中将t分配给自己吗?我前面没有文档,但是如果没有,您可以再节省两个字节。
Stackstuck

1
哦,这是一个结构。当然是的。没关系。
Stackstuck

1
您可以t.Month<12|t.Day!=25用较短的替换$"{t:Md}"!="1225"。它使用插值字符串和自定义DateTime格式设置字符串。
Jeppe Stig Nielsen

6

T-SQL,92 88字节

PRINT'Christmas'+REPLICATE(' Eve',DATEDIFF(D,GETDATE(),STR(YEAR(GETDATE()+6))+'-12-25'))

编辑:由于@BradC,节省了4个字节。


辛苦了 PRINT'Christmas'+...使用DATEDIFF(D,代替DATEDIFF(DAY,
BradC

@BradC很好,谢谢!
尼尔

5

APL(Dyalog Unicode)76 63 字节SBCS

完整程序。假设⎕IO←0(零索引)。

⎕CY'dfns'
'Christmas',' Eve'⍴⍨4×12 25⍳⍨⍉2↑1↓⍉date(⍳366)+days⎕TS

在线尝试!

⎕CY'dfns'Ç Ó p y中的DFN和库

⎕TS 当前 IME 小号夯实为[年,月,日,小时,分钟,秒,毫秒]
days并[c]  发现的天数[n]的自1899年12月31日00:00:00.000
(⍳366) 添加的第一个366点的整数(0 ... 365)到
date并[c]  发现的日期[n]的对应于这些数字(366×7表;每单位一列)
 转置(7×366表;每单位一行)
1↓ 丢弃一个行(年)
2↑ 采取前两行(月和日)
12 25⍳⍨ 找到第一个圣诞节的索引,然后
 将其乘以4
' Eve'⍴⍨ ,即可用于重塑字符列表,
'Christmas ', 并将其附加到此

[c]  该功能的代码
[n]  该功能的注意事项


5

Python 2中111个 103字节

from datetime import*
d=date.today()
print"Christmas"+" Eve"*(date((d+timedelta(6)).year,12,25)-d).days

在线尝试!

更新受Richard Crossley的回答启发。

说明:

from datetime import*
# get today as a date, so we don't have to worry about rounding errors due to time
d=date.today()
                              # get the year of the Christmas to compare to
                              # if the current date is after this year's Christmas, the 6 day offset will give the next year
                              # otherwise, returns this year
                              (d+timedelta(6)).year
                         # next Christmas minus the current date
                         date(.....................,12,25)-d
# Christmas, plus (number of days until next Christmas) " Eve"s
print"Christmas"+" Eve"*(...................................).days



4

JavaScript中,135个 131 121 92 88字节

我的第一个(幼稚的)解决方案(135b):

t=new Date();n=new Date();n.setMonth(11);n.setDate(25);'Christmas'+' Eve'.repeat((n>=t?n-t:(n.setFullYear(n.getFullYear()+1)-t))/864e5)

它设置2个日期:现在和今年的圣诞节。如果后者还没有通过,它将与他们进行比较,如果已经通过,则与下一年的圣诞节进行比较。使用两个差异作为重复次数。

(试图)在框外思考(131b):

i=0;f=_=>{t=new Date();if(t.getMonth()!=11||t.getDate()!=25){i++;setTimeout(f,864e5)}else{alert('Christmas'+' Eve'.repeat(i))}};f()

挑战指定在给定日期运行该程序时需要WHICH输出,但未指定WHEN返回它...

这将只是“睡眠”一天,将计数器增加1,然后重复直到它是Xmas,以提供输出。

由于JavaScript无法保证“睡眠”时间,因此实际结果可能不正确。

使用该alert函数也很丑陋,这意味着实际上不使用纯JavaScript,而是使用浏览器API(我们可以使用console.log6个额外的字节)。

更好的方法(121b):

t=new Date();i=0;while(t.getMonth()!=11||t.getDate()!=25){t=new Date(t.valueOf()+864e5);i++};'Christmas'+' Eve'.repeat(i)

从今天开始,将日期增加一天直到其为圣诞节,然后使用该循环的计数器获取所需的重复次数。

改进(包括经过一个缩小器并使用12Me21的技巧来剃除额外的5b)(92b):

for(s='Christmas',t=new Date;t.getMonth()/t.getDate()-.44;)t=new Date(t*1+864e5),s+=' Eve';s

最后润色(88b):

for(s='Christmas',t=new Date;t.getMonth()/(d=t.getDate())-.44;t.setDate(d+1))s+=' Eve';s
  • 对于上述所有情况,均假设为REPL。
  • 参见Vadim提交的内容-比我的要好得多!

1
我认为您可以t.getMonth()/t.getDate-.48用来检查日期是否不是12月25日
18Me21

1
欢迎光临本站!您可以使用4个空格缩进来使您的代码块看起来更好。
小麦巫师

1
欢迎来到PPCG!
毛茸茸的

1
98print是必要的,因为这是一个程序不是一个函数,除非 1.你把它变成一个lambda或者2.你指出你使用REPL
ASCII唯一

1
t=new Date(+t+864e5)短1个字节。
安德鲁Svietlichnyy

3

VBA(Excel),108个字节

复制到空白模块中。打印到立即窗口:

Sub X:s="Christmas":d=Now:For t=1 To (DateSerial(Year(d+6),12,25)-d):s=s &" Eve":Next:Debug.Print s:End Sub

注意:使用:代替换行符可以每行节省两个字节。

请注意,VBA编辑器将在Sub定义之后的关键字,运算符等与括号之间插入其他空格,但是如果您复制并粘贴此代码,它将起作用(我无法在之前删除该空格&)。

对于VBA来说还不错(一次)。


1
* Christmas:|
ASCII码,仅ASCII

@仅ASCII:在&引发错误之前删除空格
Barranka '18

-1个字节。感谢@ ASCII-only来帮助您输入错误
-Barranka

1
通过将其转换为即时窗口函数并删除的临时变量,您可以将其缩减为71个字符now。当您执行此操作时,它应该看起来像?"Christmas";:For i=1To DateSerial(Year(Now+6),12,25)-Now:?" Eve";:Next
Taylor Scott

3

Bash + GNU日期,72 73字节

for((d=0;1`date +%d%m -d$d\day`-12512;d++));{ x+=\ Eve;};echo Christmas$x
  • 保存一个字节,替换!=-
  • 另一个删除多余的空间
  • 修复-3个字节d=0,因为它date -dday是date + 1并且在25/12上不起作用

在线尝试


嗯,为什么=~在for循环条件中不起作用?
Kritixi Lithos '18

因为for循环条件是一个算术表达式,所以单词被强制转换为整数,并且八进制也假定以0开头的数字,这就是为什么要加上1的原因
Nahuel Fouilleul


3

Bash68 65 61字节

感谢Nahuel Fouilleul通过使用``命令替换并eval代替sed exargs

echo Christmas `eval date\ -d{0..366}day\;|sed /c.25/Q\;cEve`

在线尝试!

`` 命令替换中,我们有

eval 将以下字符串作为shell命令运行

  • date\ -d{0..366}day\;在的大括号扩展{0..366},这将导致字符串date -d0day; date -d1day; date -d2day; ... date -d366day;,此字符串中的每个命令计算从现在起的0到366天之间的日期,从而产生格式的输出,每个命令Wed Dec 26 18:22:33 UTC 2018都在其自己的行中

|sed 在其上,调用以下sed命令

  • /c.25/Q如果正则表达式/c.25/匹配,Q则不打印

  • \;cEve 否则将行更改为 Eve

所有所需数量的Eves均在其自己的生产线上产生。此输出在中捕获``,并且受到单词拆分的影响,其中单词在换行符上拆分。每个单词都作为的自变量echo

echo Christmas ...

echo打印的每个参数都用空格隔开,从而得到所需的输出。


bash该解决方案没有真正特定的功能。它需要GNU datesed以及seq虽然。
库桑兰达


@NahuelFouilleul谢谢,使用反引号命令替换来避免xargs并使用eval跳过seq的
妙招

2

C(gcc),157字节

我以为我可以避免包含,time.h但这只是造成段错误。

#include <time.h>
*t,u;f(){time(&u);t=localtime(&u);t[5]+=t[4]>10&t[3]>25;t[4]=11;t[3]=25;u-=mktime(t);printf("Christmas");for(u/=86400;u++;printf(" Eve"));}

在线尝试!


IMO,您应该忽略#include <stdlib.h>,而不是完全不做任何事
仅使用ASCII

建议*t;f(u)而不是,*t,u;f()#import<time.h>不是,#include <time.h>5[t=localtime(&u)]不是t=localtime(&u);t[5]
ceilingcat '18


2

Python 3,106字节

from datetime import*
d=date.today()
print("Christmas"+" Eve"*(date((d+timedelta(6)).year,12,25)-d).days)

2

116个 113字节

var d=new java.util.Date
print("Christmas")
while(!(""+d).contains("c 25")){print(" Eve");d.setDate(d.getDate+1)}

在线尝试!

哪里c 25的简称Dec 25


1
我想你可以使用contains("c 25"),而不是matches(".*c 25.*")
12Me21

谢谢,少了三个字节!😁
谢蒂尔S.

哇,做得很好,toString的日期很好
V. Courtois

2

JavaScript,86 77字节

使用REPL它将是

for(c='Christmas',d=new Date;!/c 25/.test(d);d=new Date(+d+864e5))c+=' Eve';c

-9字节仅对ASCII表示感谢



太棒了!你做得比我好。我可以提供一个额外的字节吗? for(c='Christmas',d=new Date;!/c 25/.test(d=new Date(+d+864e5));)c+=' Eve';c 或此变体: for(s='Christmas',t=Date.now();!/c 25/.test(new Date(t+=864e5));)s+=' Eve';s 均为76字节。
targumon

2

的Lua137个 118字节。

118字节

t,d,month,day=os.time,os.date,1,-6year=d"%Y"+(d"%D">"12/25"and 2or 1)print("Christmas",d" Eve":rep(d("%j",t(_G)-t())))

137个字节(先前)

t,d=os.time,os.date a=d"*t"a.year,a.month,a.day=a.year+(d"%m%d">"1225"and 1 or 0),12,25 print("Christmas",("Eve "):rep((t(a)-t())/86400))

值得注意的是,它在LuaJIT中不起作用(语法错误)


欢迎来到PPCG!不错的第一篇文章!
Rɪᴋᴇʀ

1

MySQL,102字节

Neil的T-SQL答案几乎相同。在SQL中似乎没有更短的方法。

select concat("Christmas",repeat(" Eve",datediff(concat(year(now()+interval 6 day),"-12-25"),now())));

在线尝试


1

MATLAB,91字节

n=datetime
x=datetime(year(n+6),12,25)
s='Christmas'
while days(x-n)>=1 n=n+1 s=[s,' Eve'] end

MATLAB Non-looper,100字节

x=datenum(datetime(floor((now+5)/365.2425),12,25))
d=x-now
['Christmas' repmat(' Eve',1,min(d(d>=0)))]

1

Scala,123字节

感谢纯ASCII的工作。

print("Christmas")
var d=new java.util.Date
while(d.getMonth()<11||d.getDate()!=25){print(" Eve");d.setDate(d.getDate()+1)}

在线尝试!

Scala + Joda-Time,140字节

import org.joda.time._
var s="Christmas"
var d=DateTime.now
while(d!=d.withDate(d.year().get(),12,25)){d=d.plusDays(1);s+=" Eve"};println(s)

由于需要Joda-Time库,因此无法在TIO中运行。


不,乔达154。可悲的是不能java.util.Date在这里工作:/
ASCII码,仅ASCII


啊,仅object Main extends App{}@ASCII,我没有在计数中计算字符(因为我也没有在其他Scala答案中)。如果我们将其删除,则您击败了我^^
V. Courtois

withDate()调用是如此昂贵...
V.库尔图瓦

1.还记得您需要将语言指定为“ Scala + Joda-Time”,因为您使用的是外部库,并且2.不打算使用我的更改吗?它的短加上不需要库:P
ASCII唯一

1

05AB1E93 89 字节

žežfžg)V'ŒÎ[Y¨JŽ9ÚQ#Y`2ô0Kθ4ÖUD2Qi\28X+ë31s<7%É-}‹iY¬>0ëYT`ǝDÅsD12‹i>1ë\1Dǝ¤>2}}ǝVð'»ˆ}J™

在线尝试以模拟的自指定日期“ today” 在线尝试

说明:

05AB1E除接收当前的年/月/日/小时/分钟/秒/微秒外,没有任何内置日期,因此大多数字节用于手动计算。

žežfžg)V   # Get the current date and save it in variable `Y`
'ŒÎ       '# Push compressed string "christmas"
[          # Start an infinite loop
 Y¨JŽ9ÚQ   #  If the current date is December 25th:
        #  #   Stop the infinite loop
 Y`2ô0Kθ4ÖUD2Qi\28X31s<7%É-}‹iY¬>0ëYTDÅsD12i>1ë\1Dǝ¤>2}}ǝV
           #  Go to the next day, and set `Y` to it
 ð         #  Push a space " "
 '»ˆ      '#  Push compressed string "eve"
}          # After the infinite loop:
 J         # Join everything on the stack together
          # And make every word title-case (and output the result implicitly)

请参阅我的答案,以了解我们第二天的去向。(PS:1¾ǝ已被替换为T`ǝ,因为我们counter_variable也在其他地方使用了。)

见我这个05AB1E尖端(部分如何使用字典?并且如何压缩大整数?理解为什么'»ˆ"eve"; 'ŒÎ"christmas"; 并且Ž9Ú1225


聪明打高尔夫球!
MilkyWay90

0

C#(Visual C#交互式编译器),141个字节

var g=DateTime.Now;Write("Christmas"+string.Concat(Enumerable.Repeat(" Eve",(new DateTime(g.Year+(g.Day>25&g.Month>11?1:0),12,25)-g).Days)));

在线尝试!


1
我认为这不适用于11月30日...
Neil

现在已修复,我忘了添加检查是否是12月
无知的体现

您确定月份> 25吗?
尼尔,

立即修复...
无知的体现

1:0是必需品吗?不并返回整数?
18Me21年

0

红色89 86 84 78 76字节

-10字节,仅使用ASCII!

does[a: now prin"Christmas"while[a/3 * 31 + a/4 <> 397][prin" Eve"a: a + 1]]

在线尝试!



当然,只有@ASCII嗯!谢谢!
Galen Ivanov



@ ASCII-only在圣诞节运行时,您的76字节版本无法给出正确的结果:Date作为参数,我对不使用only now和not 感到愚蠢now/date。感谢您的改进!
Galen Ivanov '18

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.