Bu zaten [şimdiki yıl] millet, eve gidin


31

çoğu meydan okumasında, şu anda meydan okumaya karşılık gelen bir yıl olmadığında, bunun önünde olduğunu söylüyor.

Bu [şimdiki yıl] millet, eve gidin.

Bu metni, değiştirilen geçerli yılla birlikte yazmanız gerekir.


I / O

Giriş: Yok.

Çıktı : It's [year] already, folks, go home.[yıl] ile geçerli yıla değiştirildi.


17
İlk deneme, tarih yerine zaman aldı: Saat 8:58, millet, eve gidin.
— steenbergh

Girdi alıp görmezden gelebilir miyim (yani, satırları boyunca bir şey yapın String goHome(Object foo){return "It's "+currentYear()+" already, folks, go home.";}(elbette çok daha kısa)
— dorukayhan istiyor Monica geri

Bu gerçekten bir meydan okuma It's the current year already, folks, go home.
— derlememeliyim

3
@steenbergh Sabahları sadece okul böyle olsaydı. xD: P
— HyperNeutrino

Bu meydan okumanın "şu anki yıl değilse, bunun çıktısı, başka bir şey çıkmadı", ama yine de iyi bir meydan okuma olsaydı daha iyi olacağını düşünüyorum +1
— Tas

Yanıtlar:



17

C (gcc), 58 bayt

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

19
Doğru işlevselliği elde etmek için yılda bir kez bunu yeniden derlemeniz gerektiğini unutmayın.
— Robert Fraser,

3
@RobertFraser Bu sitedeki herhangi bir C (gcc) cevabını çalıştırmak için siz olarak çalıştırın gcc golf.c && ./a.out. Bu süreçte bir ikili kod oluşturulmasının kod golf için bir önemi yoktur. Kaynak kodum yargılanıyor, ikili üretilmiyor (eğer öyleyse cevabım x86-64 olurdu).
— orlp

1
Doğru, ancak bu "istenen çıktıyı üretecek AC programı" değil "" istenen çıktıyı üreten bir kabuk komutu "değil
— Elazar

2
@ 12431234123412341234123 İşlevler, burada kod kodlayıcıda kabul edilebilir cevaplardır.
— orlp

1
Nitpickers ... @orlp, __DATE__[6]bir boşluk olduğundan, bir bayt ayırabilirsiniz: ..."It's%s already, folks, go home.",__DATE__+6);}( O arasındaki eksik boşluğa dikkat edin). ve%s ).
— YSC

15

05AB1E , 21 20 bayt

Outgolfer Erik sayesinde bir bayt kaydedildi

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

Çevrimiçi deneyin!


1
Sanırım 05AB1E'yi, “...»sıkıştırılmış dizeler için sözdizimi olan ve »hiçbir durumda bastırılamayan Jelly ile karıştırıyordunuz .
— Outgolfer Erik,

3
Okunabilir metin içermeyen tek çözüm bu :(
— boboquack

1
Açıklama lütfen?
— ckjbgames

2
@ckjbgames yerleşik sözlüğü
— qwr

@boboquack Evet, It's okunabilir. Geri kalanlar için bunu yapın .
— user202729


11

PHP, 42 bayt

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

Oldukça eminim ki tırnak içinde Y.
— Micheal Johnson

3
@MichealJohnson PHP, kaydedilmemiş sabitleri aynı değere sahip dizgelere dönüştürecektir, bu nedenle çalışması gerekir (ancak bir uyarı atar)
— Erik

7
@MichealJohnson PHP ile asla emin değilsin
— Charlie

8

Bash, 45 karakter

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

Bash'in yerleşik printf 4.2 sürümünde olan %(fmt)Tformat belirticisini aldı ve sürüm 4.3'ten beri argüman olmadığında geçerli zaman damgasına varsayılan olarak geliyor.

Örnek çalışma:

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

6

Toplu, 45 bayt

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

Toplu iş aslında bir kereliğine oldukça rekabetçi.


1
Sanırım bu çözüm sonucu farklı yerel ayarlardan farklı ...
— stevefestl


5

DOS'ta x86 makine kodu - 62 bayt

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'un girişi BCD'de olmasına rağmen (eşdeğer DOS çağrısından elde edilen 16 bitlik düz değerin aksine), ASCII'ye kod çözmenin, taban-10'un bir kayıt yazdırması kadar uzun olduğu ortaya çıktı. Oh iyi.

    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 bayt

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

Anonim işlev Girdi almaz ve bir dize çıktı olarak döndürür. Hayır, bir REPL başvurusu yapmayacağım, bir bayt çok önemliyse kendiniz gönderin.



3

TI-Basic (OS 5.2+ ile TI-84 Plus CE), 64 bayt

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

TI-Basic belirtilmiş bir dildir. Bazı komutlar ( getDate, toString(vb.) Ve tüm küçük harfler iki byte'tır ve burada kullanılan her şey birer byte'tır.

Açıklama:

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 (OS 5.1 ile TI-84 Plus CE), 108 bayt

{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 belirtilmiş bir dildir. Daha karmaşık kullanıcı değişkenleri ( , , , ), bazı komutlar ( , , , , ) ve tüm küçük harfler burada başka kullanılan iki bayt ve her şey her bayt biridir vardır.Y1L1L2Str0LinReg(ax+b getDatesub(Equ►String(length(

OS 5.2 toString(, bu gönderimin yaklaşık yarısını engelleyen, bu algoritmaya dayanan bir komut ekledi .

Açıklama:

{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

L_1'i 5.1 programda satır içi yapabilirsiniz. yeni bir satırdan, iki "L_1" jetonundan ve bir → işaretinden kurtulur. 6 bayt kaydedildi mi?
— çarpıcı

@ striking LinReg(ax+b), L_1 ve L_2 kullanır, bu yüzden ikisini de ayarladım.
— pizzapants184

İlk önce bazı baytları kaydedin: max(getDate)bunun yerine kullanın, çünkü getDate'deki en büyük sayı her zaman yıldır.
— lirtosiast

3

JavaScript ES6, 56 bayt

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

Çevrimiçi deneyin!

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.')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.