È già [l'anno in corso], gente, andate a casa


31

Sulla maggior parte delle sfide per i , quando attualmente non è l'anno corrispondente della sfida, lo afferma in primo piano.

È già [l'anno in corso], gente, andate a casa.

Devi stampare questo testo con l'anno corrente sostituito.


I / O

Input: nessuno.

Output : It's [year] already, folks, go home.con [anno] modificato nell'anno corrente.


17
Prima prova, ho ottenuto l'ora invece della data: sono già le 8:58, gente, andate a casa.
Steenbergh,

Posso prendere input e quindi ignorarlo (cioè fare qualcosa del genere String goHome(Object foo){return "It's "+currentYear()+" already, folks, go home.";}(ma molto più breve, ovviamente))?
Dorukayhan vuole che Monica ritorni il

È un peccato non dovrei compilare la sfida alla lettera: ///, 46 byteIt's the current year already, folks, go home.
Compagno SparklePony

3
@steenbergh Se solo la scuola fosse così la mattina. xD: P
HyperNeutrino

Ritengo che questa sfida sarebbe più appropriata se fosse "se non fosse l'anno in corso, se questo non fosse stato pubblicato, altrimenti non avrebbe prodotto nulla", ma sarebbe comunque una bella sfida +1
Tas

Risposte:



17

C (gcc), 58 byte

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

19
Nota che è necessario ricompilarlo una volta all'anno per ottenere la funzionalità corretta.
Robert Fraser,

3
@RobertFraser Per eseguire una risposta C (gcc) su questo sito, eseguirla come gcc golf.c && ./a.out. Che in questo processo si formi un binario è irrilevante per il golf del codice. Il mio codice sorgente viene valutato, non il file binario generato (in tal caso la mia risposta sarebbe x86-64).
orlp

1
Vero, ma questo non è "un programma AC che produrrà l'output desiderato" ma "Un comando shell che produrrà l'output desiderato"
Elazar

2
@ 12431234123412341234123 Le funzioni sono risposte accettabili qui su codegolf.
orlp,

1
Nitpickers ... @orlp, poiché __DATE__[6]è uno spazio, puoi risparmiare un byte: ..."It's%s already, folks, go home.",__DATE__+6);}(attenzione allo spazio mancante tra It's e %s).
YSC,

15

05AB1E , 21 20 byte

Salvataggio di un byte grazie a Erik the Outgolfer

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

Provalo online!


1
Penso che tu stia confondendo 05AB1E con Jelly, che ha “...»sintassi per stringhe compresse e »non può essere soppresso in ogni caso.
Erik the Outgolfer

3
Questa è l'unica soluzione senza testo leggibile :(
boboquack

1
Spiegazione per favore?
ckjbgames

2
Dizionario incorporato @ckjbgames
qwr

@boboquack Sì, It's è leggibile. Per il resto fai questo .
user202729,


11

PHP, 42 byte

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

Abbastanza sicuro di aver bisogno di citazioni intorno al Y.
Micheal Johnson,

3
@MichealJohnson PHP convertirà costanti non riconosciute in stringhe con lo stesso valore, quindi dovrebbe funzionare (ma genererà un avviso)
Erik

7
@MichealJohnson Non sei mai sicuro con PHP
Charlie,

8

Bash, 45 caratteri

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

La printfversione 4.2 integrata di Bash ha ottenuto l' %(fmt)Tidentificatore di formato e dalla versione 4.3 è impostata automaticamente sul timestamp corrente in assenza di argomenti.

Esecuzione di esempio:

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

6

Lotto, 45 byte

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

Il batch è in realtà ragionevolmente competitivo per una volta.


1
Immagino che questo risultato della soluzione vari dalle diverse impostazioni locali ...
stevefestl


5

codice macchina x86 su 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

Anche se l'input dal BIOS è in BCD (al contrario del semplice valore a 16 bit ottenuto dall'equivalente chiamata DOS), decodificarlo in ASCII si è rivelato lungo quasi quanto la base-10 stampasse un registro. Oh bene.

    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

Rubino, 52 byte

puts"It's #{Time.now.year} already, folks, go home."



4

Mathematica, 58 byte

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

Funzione anonima. Non accetta input e restituisce una stringa come output. No, non ho intenzione di presentare una richiesta REPL, pubblicarla tu stesso se quel byte è così importante.



3

TI-Basic (TI-84 Plus CE con OS 5.2+), 64 byte

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

TI-Basic è un linguaggio tokenizzato. Alcuni comandi ( getDate, toString(ecc), e tutte le lettere minuscole sono due byte e tutto il resto qui utilizzato è un byte ciascuno.

Spiegazione:

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 con OS 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 è un linguaggio tokenizzato. Le variabili utente più complicati ( , , , ), alcuni comandi ( , , , ,Y1L1L2Str0LinReg(ax+b getDatesub(Equ►String(length( ), e tutte le lettere minuscole sono due byte e quant'altro qui usato è un byte ciascuno.

OS 5.2 ha aggiunto un toString(comando, che nasconde circa la metà di questa presentazione, che si basa su questo algoritmo .

Spiegazione:

{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

puoi incorporare L_1 nei programmi 5.1. elimina una nuova riga, due token "L_1" e un →. 6 byte salvati?
colpisce il

@striking LinReg(ax+b)utilizza L_1 e L_2, quindi devo impostarli entrambi.
pizzapants184

Salvare alcuni byte sul primo: usare max(getDate)invece perché il numero più grande in getDate è sempre l'anno.
lirtosiast,

3

JavaScript ES6, 56 byte

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

Provalo online!

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

console.log(f())


+1 Esattamente la soluzione che stavo per pubblicare. Puoi anche usare substr(11,4)o slice(11,15)invece di split.
Shaggy,

Non hai bisogno di più di 56 byte come parte della sfida è di produrlo?
cnorthfield,

3
@cnorthfield In generale, nel code golf, una funzione che restituisce un valore è una risposta accettabile a meno che la domanda non abbia requisiti più specifici. Dai un'occhiata a questo e questo .
Powelles,

@powelles Grazie per aver spiegato
cnorthfield

Questo è vero @powelles, ma la tua risposta non restituisce nulla a meno che non venga aggiunto altro al tuo golf.
Kyle Fairns,


3

PowerShell 3.0, 44 byte

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

PowerShell sta gareggiando abbastanza bene oggi!


1
Questo non funzionerà nella versione 2 di PowerShell (la sintassi foreach). Quindi dovresti avere un identificatore v3 + qui. Raffreddare altro saggio.
Matt,

2

C #, 58 byte

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

Funzione anonima che restituisce la stringa richiesta.

Programma completo:

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
Penso che puoi salvare i caratteri usando le stringhe C # 6: $ "È {DateTime.Now.Year} etc etc".
Arturo Torres Sánchez,

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

2

Pyth , 38 byte

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

Interprete online.


Stessa lunghezza: s["It's ".d3d." y\n9?}7Tè+1°Õh6%Ñ< (se si sostituisce \ncon una nuova riga effettiva) link
KarlKastor

@KarlKastor Come ha funzionato per te?
Erik the Outgolfer

Non capisco bene la domanda. Ho usato l' interprete online . L'algoritmo per creare le stringhe di pyth. "È:+++\.N++hSzeSzCi-RChSzCMz-hCeSzChSzN
KarlKastor,

@KarlKastor L'ho usato, ma deve essere qualcosa in Chrome, e dubito fortemente che siano i caratteri stampabili non stampabili.
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."

Provalo online! Sostituisci fcon mainper un programma completo.

La funzione getCurrentTimerestituisce un UTCTimeoggetto che assomiglia a qualcosa "2017-04-02 10:22:29.8550527 UTC"quando convertito in una stringa da show. fst.span(>'-')prende i personaggi principali mentre sono più grandi di '-', cioè l'anno in corso. Per i prossimi 7972 annitake 4 funzionerebbe per 8 byte in meno, ma vogliamo che il nostro codice funzioni correttamente per sempre.

Per quanto vedo le funzioni integrate per ottenere l'anno in corso richiedono un import Data.Time.Calendar, quindi estrarre l'anno dalla stringa dovrebbe essere l'opzione più breve.


2

JavaScript, 77 71 67 63 byte

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

Grazie a @ programmer5000 per gli spazi!

JavaScript ES6 66 60 byte

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


Benvenuti in PPCG! Si prega di golf la tua risposta (rimuovere gli spazi intorno alla +s!)
programmatore

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

@ fəˈnɛtɪk è tornato a console.log, aggiunto parentesi all'allarme ES6
cnorthfield

2

R, 62 59 62 byte

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

1
Usando substr(date(),21,24)invece di format(Sys.time(),"%Y")salvare tre byte
bouncyball

funziona quest'anno 20017?
Roman Gräf,

Ahh. Corretta. Tornando indietro. Tnx !!
Zahiro Mor,

2

Befunge-98 , 57 55 byte

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

Provalo online!

Grazie a James Holderness per aver segnalato il mio errore con l'istruzione sysinfo.

"emoh og ,sklof ,ydaerla@ s'tI"spinge la frase nella pila dove 4k,stampa la prima parola. yè l'istruzione sysinfo. Quando viene passato 20 (non stampabile nella stringa), ritorna 256*256*(year-1900) + 256*month + day of month. \4*:*/"&2"*+.prende solo l'anno dal valore e lo stampa e f7+k,stampa il resto della frase.


@JamesHolderness Arghhh, questo spiega perché non sono mai stato in grado di far funzionare sysinfo. Grazie mille!
Jo King


1

MATL , 42 byte

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

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

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

Risposta molto semplice. "% Y" ottiene l'anno corrente.

Grazie a @ovs per la rimozione di 5 byte


Salva 6 byte conprint(f"It's {time.gmtime()[0]} already, go home")
L3viathan,

@ L3viathan è troppo simile all'altra risposta di Python
caird coinheringaahing,

1

Formula IBM / Lotus Notes, 54 byte

Non esattamente impegnativo ma qui andiamo comunque ...

"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
Non è necessario il punto e virgola alla fine di una lambda e print o printf saranno più brevi di println.
Pavel,

1

T-SQL, 66 byte

print concat('It''s ',year(getdate()),' already, folks, go home.')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.