Đã [năm nay] rồi, mọi người, về nhà đi


31

Trên hầu hết thử thách khi hiện tại không phải là năm tương ứng của thử thách, nó nói điều này ở phía trước.

Đã [năm nay] rồi, mọi người, về nhà đi.

Bạn phải xuất văn bản này với năm hiện tại được thay thế.


Tôi / O

Đầu vào: Không có.

Đầu ra : It's [year] already, folks, go home.với [năm] thay đổi thành năm hiện tại.


17
Lần chạy thử đầu tiên, có thời gian thay vì ngày: Đã 8:58 rồi, mọi người, về nhà đi.
steenbergh

Tôi có thể lấy đầu vào và sau đó bỏ qua nó (tức là làm một cái gì đó dọc theo dòng String goHome(Object foo){return "It's "+currentYear()+" already, folks, go home.";}(nhưng tất nhiên ngắn hơn nhiều))?
dorukayhan muốn Monica trở lại vào

Thật xấu hổ, tôi không nên biên dịch thử thách theo nghĩa đen: ///, 46 byteIt's the current year already, folks, go home.
Đồng chí SparklePony

3
@steenbergh Nếu chỉ có trường học là như vậy vào buổi sáng. xD: P
HyperNeutrino

Tôi cảm thấy thử thách này sẽ phù hợp hơn nếu đó là "nếu không phải là năm hiện tại, đầu ra này, đầu ra không có gì", nhưng vẫn là thử thách tốt +1
TAS

Câu trả lời:



17

C (gcc), 58 byte

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

19
Lưu ý bạn cần biên dịch lại điều này mỗi năm một lần để có được chức năng chính xác.
Robert Fraser

3
@RobertFraser Để chạy bất kỳ câu trả lời C (gcc) nào trên trang web này, bạn chạy nó dưới dạng gcc golf.c && ./a.out. Rằng trong quá trình này, một nhị phân được hình thành là không liên quan đến mã golf. Mã nguồn của tôi đang được đánh giá, không phải mã nhị phân được tạo (nếu đó là trường hợp câu trả lời của tôi sẽ là x86-64).
orlp

1
Đúng, nhưng đây không phải là "Chương trình AC sẽ tạo ra đầu ra mong muốn" mà là "Lệnh shell sẽ tạo ra đầu ra mong muốn"
Elazar

2
@ 12431234123412341234123 Chức năng là câu trả lời chấp nhận được ở đây trên codegolf.
orlp

1
Nitopperers ... @orlp, vì __DATE__[6]là một khoảng trắng, bạn có thể dự phòng một byte: ..."It's%s already, folks, go home.",__DATE__+6);}(nhớ khoảng trống bị thiếu giữa %s).
YSC

15

05AB1E , 21 20 byte

Đã lưu một byte nhờ Erik the Outgolfer

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

Hãy thử trực tuyến!


1
Tôi nghĩ rằng bạn đã nhầm lẫn 05AB1E với Jelly, có “...»cú pháp cho các chuỗi nén và »không thể bị loại bỏ trong mọi trường hợp.
Erik the Outgolfer

3
Đây là giải pháp duy nhất không có văn bản có thể đọc được :(
boboquack

1
Xin giải thích?
ckjbgames

2
@ckjbgames từ điển tích hợp
qwr

@boboquack Có, It's có thể đọc được. Đối với phần còn lại làm điều này .
dùng202729


11

PHP, 42 byte

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

Khá chắc chắn bạn cần báo giá xung quanh Y.
Micheal Johnson

3
@MichealJohnson PHP sẽ chuyển đổi các hằng số không được nhận dạng thành các chuỗi có cùng giá trị, vì vậy điều này sẽ hoạt động (nhưng nó sẽ đưa ra một thông báo)
Erik

7
@MichealJohnson Bạn không bao giờ chắc chắn với PHP
Charlie

8

Bash, 45 ký tự

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

printfPhiên bản 4.2 tích hợp của Bash có bộ %(fmt)Txác định định dạng và kể từ phiên bản 4.3, nó mặc định theo dấu thời gian hiện tại mà không có đối số.

Chạy mẫu:

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

6

Hàng loạt, 45 byte

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

Batch thực sự là cạnh tranh hợp lý cho một lần.


1
Tôi đoán kết quả giải pháp này thay đổi từ các cài đặt ngôn ngữ khác nhau ...
stevefestl

6

Toán học, 53 byte

Print["It's ",Now[[1,1]]," already, folks, go home."]

3
Đọc như "Bây giờ đã, mọi người, về nhà."
Roman Gräf

5

Mã máy x86 trên DOS - 62 byte

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

Mặc dù đầu vào từ BIOS nằm trong BCD (trái ngược với giá trị 16 bit đơn giản nhận được từ lệnh gọi DOS tương đương), việc giải mã nó thành ASCII hóa ra gần như miễn là in cơ sở 10 đăng ký. Ồ tốt

    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

Toán học, 58 byte

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

Chức năng ẩn danh. Không có đầu vào và trả về một chuỗi như đầu ra. Không, tôi sẽ không gửi đệ trình REPL, hãy tự đăng nó nếu một byte đó rất quan trọng.



3

TI-Basic (TI-84 Plus CE với HĐH 5.2+), 64 byte

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

TI-Basic là một ngôn ngữ được mã hóa. Một số lệnh ( getDate,, toString(v.v.) và tất cả các chữ cái viết thường là hai byte và mọi thứ khác được sử dụng ở đây là một byte mỗi.

Giải trình:

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 với HĐH 5.1), 108 byte

{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 là một ngôn ngữ được mã hóa. Các biến sử dụng phức tạp hơn ( , , , ), một số lệnh ( , , , , ), và tất cả các chữ thường là hai byte và mọi thứ khác sử dụng ở đây là một byte mỗi.Y1L1L2Str0LinReg(ax+b getDatesub(Equ►String(length(

Hệ điều hành 5.2 đã thêm một toString(lệnh, điều này làm mất khoảng một nửa số lần gửi này, dựa trên thuật toán này .

Giải trình:

{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

bạn có thể nội tuyến L_1 trong các chương trình 5.1. thoát khỏi một dòng mới, hai mã thông báo "L_1" và →. 6 byte được lưu?
nổi bật

@striking LinReg(ax+b)sử dụng L_1 và L_2, vì vậy tôi phải đặt cả hai.
pizzapants184

Lưu một số byte vào lần đầu tiên: max(getDate)thay vào đó hãy sử dụng vì số lớn nhất trong getDate luôn là năm.
lirtosiast

3

JavaScript ES6, 56 byte

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

Hãy thử trực tuyến!

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

console.log(f())


+1 Chính xác là giải pháp tôi sắp đăng. Bạn cũng có thể sử dụng substr(11,4)hoặc slice(11,15)thay vì split.
Shaggy

Bạn không yêu cầu nhiều hơn 56 byte như một phần thách thức là phải xuất nó?
cnorthfield

3
@cnorthfield Nói chung trong môn đánh gôn, một hàm trả về giá trị là một câu trả lời chấp nhận được trừ khi câu hỏi có các yêu cầu cụ thể hơn. Kiểm tra nàynày .
powelles

@powelles Cảm ơn bạn đã giải thích
cnorthfield

Đó là sự thật @powelles, nhưng câu trả lời của bạn không trả lại bất cứ điều gì trừ khi được thêm vào golf của bạn.
Kyle Fairns


3

PowerShell 3.0, 44 byte

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

PowerShell đang cạnh tranh khá tốt ngày hôm nay!


1
Điều này sẽ không hoạt động trong phiên bản 2 của PowerShell (cú pháp foreach). Vì vậy, bạn nên có một định danh v3 + ở đây. Mát mẻ khôn ngoan khác.
Matt

2

C #, 58 byte

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

Hàm ẩn danh trả về chuỗi yêu cầu.

Chương trình đầy đủ:

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
Tôi nghĩ bạn có thể lưu các ký tự bằng cách sử dụng các chuỗi C # 6: $ "Đó là {DateTime.Now.Year}, v.v.".
Arturo Torres Sánchez

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

2

Bình thường , 38 byte

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

Phiên dịch trực tuyến.


Cùng độ dài: s["It's ".d3d." y\n9?}7Tè+1°Õh6%Ñ< (Nếu bạn thay thế \nbằng một liên kết
KarlKastor

@KarlKastor Làm thế nào mà làm việc cho bạn?
Erik the Outgolfer

Đừng có nhận được câu hỏi. Tôi đã sử dụng thông dịch viên trực tuyến . Thuật toán để tạo ra các chuỗi. "Chuỗi là:+++\.N++hSzeSzCi-RChSzCMz-hCeSzChSzN
KarlKastor

@KarlKastor Tôi đã sử dụng nó, nhưng nó phải là một cái gì đó trong Chrome và tôi rất nghi ngờ đó là các ký tự không thể in được.
Erik the Outgolfer

2

Haskell , 113 byte

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

Hãy thử trực tuyến! Thay thế fbằng maincho một chương trình đầy đủ.

Hàm getCurrentTimetrả về một UTCTimeđối tượng trông giống như "2017-04-02 10:22:29.8550527 UTC"khi được chuyển đổi thành một chuỗi bởi show. fst.span(>'-')có các nhân vật hàng đầu trong khi họ lớn hơn '-', đó là năm hiện tại. Trong 7972 năm tiếp theo take 4sẽ hoạt động ít hơn 8 byte, nhưng chúng tôi muốn mã của chúng tôi hoạt động chính xác mãi mãi.

Theo như tôi thấy các hàm dựng sẵn để có được năm hiện tại thì cần phải có import Data.Time.Calendar, vì vậy trích xuất năm từ chuỗi nên là lựa chọn ngắn nhất.


2

JavaScript, 77 71 67 63 byte

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

Cảm ơn @ lập trình5000 cho các không gian!

JavaScript ES6 66 60 byte

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


Chào mừng đến với PPCG! Vui lòng đánh golf câu trả lời của bạn (xóa khoảng trống xung quanh +s!)
lập trình

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

@ fəˈnɛtɪk trở lại console.log, thêm dấu ngoặc vào cảnh báo
ES6

2

R, 62 59 62 byte

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

1
Sử dụng substr(date(),21,24)thay vì format(Sys.time(),"%Y")tiết kiệm ba byte
bouncyball

cái này có hoạt động trong năm 20017không?
Roman Gräf

À Chính xác. Trở lại. Tnx !!
Zahiro Mor

2

Befunge-98 , 57 55 byte

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

Hãy thử trực tuyến!

Cảm ơn James Holdiness đã chỉ ra lỗi của tôi với hướng dẫn sysinfo.

"emoh og ,sklof ,ydaerla@ s'tI"đẩy câu vào ngăn xếp nơi 4k,in từ đầu tiên. ylà hướng dẫn sysinfo. Khi vượt qua 20 (không thể in trong chuỗi), nó sẽ trả về 256*256*(year-1900) + 256*month + day of month. \4*:*/"&2"*+.chỉ mất năm từ giá trị và in nó và f7+k,in phần còn lại của câu.


@JamesHoldiness Arghhh, điều đó giải thích tại sao tôi chưa bao giờ có thể làm cho sysinfo hoạt động. Cảm ơn nhiều!
Jo King


1

MATL , 42 byte

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

Hãy thử trực tuyến!

'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 byte

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

Câu trả lời rất cơ bản. "% Y" có được năm hiện tại.

Cảm ơn @ovs đã xóa 5 byte


Lưu 6 byte vớiprint(f"It's {time.gmtime()[0]} already, go home")
L3viathan

@ L3viathan quá giống với câu trả lời khác của Python
caird coinheringaahing

1

Công thức ghi chú IBM / Lotus, 54 byte

Không hẳn là thử thách nhưng dù sao chúng ta cũng đi ...

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

1

Java 8, 81 78 byte

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

1
Không cần dấu chấm phẩy ở cuối lambda và in hoặc printf sẽ ngắn hơn println.
Pavel

1

T-SQL, 66 byte

print concat('It''s ',year(getdate()),' already, folks, go home.')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.