各位,已经[本年度]回家


31

在大多数的挑战时,它是目前还没有挑战的一年相对应,它说,这在前面。

各位,已经是[本年],回家。

您必须输出此文本并替换当前年份。


输入输出

输入:无。

输出It's [year] already, folks, go home.将[year]更改为当前年份。


17
第一次试运行,得到的是时间而不是日期:伙计们,已经8:58回家了。
steenbergh

我可以接受输入然后忽略它吗(即按照String goHome(Object foo){return "It's "+currentYear()+" already, folks, go home.";}(但要短得多)做一些事情)?
dorukayhan希望Monica回来

可惜我不应该将挑战字面意义上的编译为:///,46个字节It's the current year already, folks, go home.
SparklePony同志17年

3
@steenbergh如果早上只有那样去上学。xD:P
HyperNeutrino

我认为如果“如果不是当前年份,则输出此输出,否则则不输出任何输出”,则此挑战会更合适,但仍是很好的挑战+1
Tas

Answers:



17

C(gcc),58个字节

f(){printf("It's%s already, folks, go home.",__DATE__+6);}

19
请注意,您需要每年重新编译一次以获得正确的功能。
罗伯特·弗雷泽

3
@RobertFraser要在此站点上运行任何C(gcc)答案,请以身份运行gcc golf.c && ./a.out。在此过程中,形成二进制文件与代码高尔夫无关。正在判断我的源代码,而不是正在生成的二进制文件(如果是这种情况,我的答案将是x86-64)。
orlp

1
是的,但这不是“将产生所需输出的AC程序”,而是“将产生所需输出的Shell命令”
Elazar

2
@ 124312341234123412341234123函数在codegolf上是可接受的。
orlp

1
Nitpickers ... @orlp,由于__DATE__[6]是空格,您可以保留一个字节:(请..."It's%s already, folks, go home.",__DATE__+6);}注意It's和之间的丢失空间%s)。
YSC

15

05AB1E21 20字节

感谢Outgolfer的Erik节省了一个字节

žg“It's ÿˆ§,¹Ò,‚œ€¨.

在线尝试!


1
我认为您将05AB1E与Jelly混淆了,Jelly具有“...»压缩字符串的语法,»无论如何都不能将其抑制。
暴民埃里克(Erik the Outgolfer)'17年

3
这是没有可读文本的唯一解决方案:(
boboquack

1
请解释一下?
ckjbgames

2
@ckjbgames内置词典
qwr

@boboquack是的,It's 可读。对于剩下的做这个
user202729 '18

14

TeX(44字节)

It's \the\year\ already, folks, go home.\bye

11

PHP,42字节

It's <?=date(Y)?> already, folks, go home.

可以肯定的是,您需要在双引号周围加引号Y
米歇尔·约翰逊

3
@MichealJohnson PHP将未识别的常量转换为具有相同值的字符串,因此这应该起作用(但会发出通知)
Erik

7
@MichealJohnson您不确定使用PHP
Charlie

8

重击,45个字符

printf "It's %(%Y)T already, folks, go home."

Bash printf在4.2版中内置了%(fmt)T格式说明符,从4.3版开始,它在没有参数的情况下默认为当前时间戳。

样品运行:

bash-4.3$ printf "It's %(%Y)T already, folks, go home."
It's 2017 already, folks, go home.

6

批量45字节

@echo It's %date:~6% already, folks, go home.

批次实际上具有合理的竞争力。


1
我猜这个解决方案的结果会因地区设置的不同而有所不同...
stevefestl


5

DOS上的x86机器代码-62个字节

00000000  b4 04 cd 1a bf 23 01 88  c8 24 0f 00 05 4f c1 e9  |.....#...$...O..|
00000010  04 75 f4 ba 1b 01 b4 09  cd 21 c3 49 74 27 73 20  |.u.......!.It's |
00000020  30 30 30 30 20 61 6c 72  65 61 64 79 2c 20 66 6f  |0000 already, fo|
00000030  6c 6b 73 2c 20 67 6f 20  68 6f 6d 65 2e 24        |lks, go home.$|
0000003e

即使来自BIOS的输入是BCD(与从等效的DOS调用获得的普通16位值相反),将其解码为ASCII的时间几乎与以10为基数打印寄存器的时间一样长。那好吧。

    org 100h

section .text

start:
    mov ah,4
    int 1ah             ; get the date from BIOS; cx now contains the year in packed BCD
    mov di,placeholder  ; put di on the last character of placeholder
lop:
    mov al,cl
    and al,0xf  ; get the low nibble of cx
    add [di],al ; add it to the digit
    dec di      ; previous character
    shr cx,4    ; next nibble
    jnz lop     ; loop as long as we have digits to unpack in cx
    mov dx,its
    mov ah,9
    int 21h     ; print the whole string
    ret

its:
    db "It's 000"
placeholder:
    db "0 already, folks, go home.$"




4

Mathematica, 58 bytes

"It's "<>ToString@#<>" already, folks, go home."&@@Date[]&

Anonymous function. Takes no input and returns a string as output. No, I'm not going to make a REPL submission, post it yourself if that one byte is so important.



3

TI-Basic (TI-84 Plus CE with OS 5.2+), 64 bytes

getDate
"It's "+toString(Ans(1))+" already, folks, go home.

TI-Basic is a tokenized language. Some commands (getDate, toString(, etc.), and all lowercase letters are two-bytes and everything else used here is one byte each.

Explanation:

getDate                                             # 3, store {Y,M,D} in Ans
"It's "+toString(Ans(1))+" already, folks, go home. # 61, implicitly return required string with Y from getDate

TI-Basic (TI-84 Plus CE with OS 5.1), 108 bytes

{0,1→L1
getDate
Ans(1)L1→L2
LinReg(ax+b) Y1
Equ►String(Y1,Str0
sub(Str0,1,length(Str0)-3→Str0
"It's "+Str0+" already, folks, go home.

TI-Basic is a tokenized language. The more complicated user variables (Y1, L1, L2, Str0), some commands (LinReg(ax+b , getDate, sub(, Equ►String(, length(), and all lowercase letters are two-bytes and everything else used here is one byte each.

OS 5.2 added a toString( command, which obsolesces about half of this submission, which is based off of this algorithm.

Explanation:

{0,1→L1                                  # 8 bytes
getDate                                  # 3 bytes, store {Y,M,D} list in Ans
Ans(1)L1→L2                              # 10 bytes, multiply L1 by the year and store in L2
LinReg(ax+b) Y1                          # 5 bytes, take a linear regression of the points specified by each pair of corresponding coordinates in L1 and L2 and store it in Y1
Equ►String(Y1,Str0                       # 8 bytes, convert Y1 to a string
sub(Str0,1,length(Str0)-3→Str0           # 18 bytes, remove the "X+0" from LinReg
"It's "+Str0+" already, folks, go home.  # 56 bytes, implicitly return the required output

you can inline L_1 in the 5.1 programs. gets rid of a newline, two "L_1" tokens, and a →. 6 bytes saved?
striking

@striking LinReg(ax+b) uses L_1 and L_2, so I have to set them both.
pizzapants184

Save some bytes on the first: use max(getDate) instead because the largest number in getDate is always the year.
lirtosiast

3

JavaScript ES6, 56 bytes

_=>`It's ${Date().split` `[3]} already, folks, go home.`

Try it online!

const f = _=>`It's ${Date().split` `[3]} already, folks, go home.`

console.log(f())


+1 Exactly the solution I was about to post. You could also use substr(11,4) or slice(11,15) instead of the split.
Shaggy

Don't you require more than 56 bytes as part the challenge is to output it?
cnorthfield

3
@cnorthfield Generally speaking in code golf, a function that returns a value is an acceptable answer unless the question has more specific requirements. Check out this and this.
powelles

@powelles Thank you for explaining
cnorthfield

That is true @powelles, but your answer doesn't return anything unless more is added to your golf.
Kyle Fairns


3

PowerShell 3.0, 44 bytes

"It's $(date|% y*) already, folks, go home."

PowerShell is competing quite well today!


1
This will not work in version 2 of PowerShell (the foreach syntax). So you should have a v3+ identifier on here. Cool other wise.
Matt

2

C#, 58 bytes

()=>"It's "+DateTime.Now.Year+" already, folks, go home.";

Anonymous function which returns the required string.

Full program:

using System;

public class Program
{
    public static void Main()
    {
        Func<string> f=
        ()=>"It's "+DateTime.Now.Year+" already, folks, go home.";

        Console.WriteLine(f());
    }
}

6
I think you can save characters by using C# 6 strings: $"It's {DateTime.Now.Year} etc etc".
Arturo Torres Sánchez

()=>$"It's {DateTime.Now.Year} already, folks, go home."; 57
wertzui

2

Pyth, 38 bytes

s["It's ".d3" already, folks, go home.

Online interpreter.


Same length: s["It's ".d3d." y\n9?}7Tè+1°Õh6%Ñ< (If you replace \n by an actual newline) link
KarlKastor

@KarlKastor How did that work for you?
Erik the Outgolfer

Don't quite get the question. I used the online interpreter. The algorithm to create pyth's packed ."strings is: +++\.N++hSzeSzCi-RChSzCMz-hCeSzChSzN
KarlKastor

@KarlKastor I used that, but it must be something in Chrome, and I highly doubt it's the printable unprintable characters.
Erik the Outgolfer

2

Haskell, 113 bytes

import Data.Time.Clock
f=do t<-getCurrentTime;putStr$"It's "++(fst.span(>'-').show)t++" already, folks, go home."

Try it online! Replace f with main for a full program.

The function getCurrentTime returns a UTCTime object which looks something like "2017-04-02 10:22:29.8550527 UTC" when converted to a string by show. fst.span(>'-') takes the leading characters while they are larger than '-', that is the current year. For the next 7972 years take 4 would work for 8 bytes less, but we want our code to work correctly for ever and ever.

As far as I see build-in functions to get the current year require a import Data.Time.Calendar, so extracting the year from the string should be the shortest option.


2

JavaScript, 77 71 67 63 bytes

alert("It's "+Date().split(' ')[3]+" already, folks, go home.")

Thanks to @programmer5000 for the spaces!

JavaScript ES6 66 60 bytes

alert(`It's ${Date().split` `[3]} already, folks, go home.`)


Welcome to PPCG! Please golf your answer (remove the spaces around the +s!)
programmer5000

1
console.log("It's",new Date().getFullYear(),"already, folks, go home.") for 71 bytes
ovs

@fəˈnɛtɪk reverted back to console.log, added brackets to ES6 alert
cnorthfield

2

R, 62 59 62 bytes

cat("It's",format(Sys.time(),"%Y"),"already, folks, go home.")

1
Using substr(date(),21,24) instead of format(Sys.time(),"%Y") saves three bytes
bouncyball

does this works in year 20017?
Roman Gräf

Ahh. Correct. Reverting back. Tnx!!
Zahiro Mor

2

Befunge-98, 57 55 bytes

"emoh og ,sklof ,ydaerla@ s'tI"4k,y\4*:*/"&2"*+.f7+k,@

Try it online!

Thanks to James Holderness for pointing out my mistake with the sysinfo instruction.

"emoh og ,sklof ,ydaerla@ s'tI" pushes the sentence to the stack where 4k, prints the first word. y is the sysinfo instruction. When passed 20 (the unprintable in the string), it returns 256*256*(year-1900) + 256*month + day of month. \4*:*/"&2"*+. takes just the year from the value and prints it andf7+k, prints the rest of the sentence.


@JamesHolderness Arghhh, that explains why I've never been able to get sysinfo working. Thanks a bunch!
Jo King


1

MATL, 42 bytes

'It''s '1&Z'V' already, folks, go home.'&h

Try it online!

'It''s '                      % Push this string
1&Z'                          % Push current year
V                             % Convert to string
' already, folks, go home.'   % Push this string
&h                            % Concatenate all stack contents horizontally
                              % Implicitly display

1

Python 3, 73 68 bytes

import time
print(time.strftime("It's %Y already, folks, go home."))

Very basic answer. The "%Y" gets the current year.

Thanks to @ovs for removing 5 bytes


Save 6 bytes with print(f"It's {time.gmtime()[0]} already, go home")
L3viathan

@L3viathan thats too similar to the other Python answer
caird coinheringaahing

1

IBM/Lotus Notes Formula, 54 bytes

Not exactly challenging but here we go anyway...

"It's "+@Text(@Year(@Now))+" already, folks, go home."

1

Java 8, 81 78 bytes

()->System.out.print("It's "+java.time.Year.now()+" already, folks, go home.")

1
Don't need the semicolon at the end of a lambda, and either print or printf will be shorter than println.
Pavel

1

T-SQL, 66 bytes

print concat('It''s ',year(getdate()),' already, folks, go home.')
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.