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


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

05AB1E,21 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.