Já é [ano atual], pessoal, vá para casa


31

Na maioria desafios do quando atualmente não é o ano correspondente do desafio, diz isso na frente.

Já é [ano atual], pessoal, vá para casa.

Você precisa imprimir este texto com o ano atual substituído.


I / O

Entrada: Nenhuma.

Saída : It's [year] already, folks, go home.com [ano] alterado para o ano atual.


17
O primeiro teste foi realizado, em vez da data: já são 8:58, pessoal, volte para casa.
214176Preço

Posso receber informações e depois ignorá-las (ou seja, fazer algo como String goHome(Object foo){return "It's "+currentYear()+" already, folks, go home.";}(mas muito mais curto, é claro))?
Dorukayhan quer Monica de volta 01/04/19

É uma pena que eu não deveria compilar o desafio para literalmente: ///, 46 bytesIt's the current year already, folks, go home.
camarada SparklePony

3
@steenbergh Se ao menos a escola fosse assim pela manhã. xD: P
HyperNeutrino

Sinto-me este desafio seria mais apropriado se fosse "se não é o ano em curso, a saída deste, a saída o mais nada", mas ainda bom desafio +1
Tas

Respostas:



17

C (gcc), 58 bytes

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

19
Observe que você precisa recompilar isso uma vez por ano para obter a funcionalidade correta.
Robert Fraser

3
@RobertFraser Para executar qualquer resposta C (gcc) neste site, você a executa como gcc golf.c && ./a.out. Que nesse processo um binário seja formado é irrelevante para o código de golfe. Meu código fonte está sendo julgado, não o binário sendo gerado (se esse fosse o caso, minha resposta seria x86-64).
orlp

1
Verdade, mas este não é "programa de CA que produzirá a saída desejada", mas "Um comando de shell que produzirá a saída desejada"
Elazar

2
@ 12431234123412341234123 As funções são respostas aceitáveis ​​aqui no codegolf.
Orlp 03/04/19

1
Nitpickers ... @orlp, como __DATE__[6]é um espaço, você pode economizar um byte: ..."It's%s already, folks, go home.",__DATE__+6);}(lembre-se do espaço que falta entre It's e %s).
YSC

15

05AB1E , 21 20 bytes

Guardou um byte graças a Erik the Outgolfer

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

Experimente online!


1
Eu acho que você estava confundindo 05AB1E com Jelly, que tem “...»sintaxe para cadeias compactadas e »que não pode ser suprimida em nenhum caso.
Erik the Outgolfer

3
Esta é a única solução sem texto legível :(
boboquack 2/17/17

1
Explicação, por favor?
Ckjbgames

2
@ckjbgames dicionário
embutido

@boboquack Sim, It's é legível. Para o resto faça isso .
user202729


11

PHP, 42 bytes

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

Certeza que você precisa de aspas em torno do Y.
Michael Johnson

3
@MichealJohnson PHP irá converter constantes unrecogized às cordas com o mesmo valor, então isso deve funcionar (mas vai lançar um aviso)
Erik

7
@MichealJohnson Você nunca tem certeza com PHP
Charlie

8

Bash, 45 caracteres

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

A printfversão interna do Bash na versão 4.2 obteve o %(fmt)Tespecificador de formato e, desde a versão 4.3, o padrão é o carimbo de data / hora atual na ausência de argumento.

Exemplo de execução:

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

6

Lote, 45 bytes

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

Lote é realmente razoavelmente competitivo pela primeira vez.


1
Eu acho que este resultado solução varia de diferentes configurações locais ...
stevefestl


5

código de máquina x86 no DOS - 62 bytes

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

Embora a entrada do BIOS esteja no BCD (em oposição ao valor simples de 16 bits obtido da chamada equivalente do DOS), decodificá-lo para ASCII acabou sendo quase o tempo que a base 10 imprimiu um registro. Ah bem.

    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[]&

Função anônima. Não recebe entrada e retorna uma string como saída. Não, não vou enviar um REPL, publique você mesmo se esse byte for tão importante.



3

TI-Basic (TI-84 Plus CE com OS 5.2 ou superior), 64 bytes

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

O TI-Basic é uma linguagem tokenizada. Alguns comandos ( getDate, toString(etc.) e todas as letras minúsculas são de dois bytes e tudo o mais usado aqui é um byte cada.

Explicação:

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 com 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.

O TI-Basic é uma linguagem tokenizada. As variáveis de usuário mais complicado ( , , , ), alguns comandos ( , , , , ), e todas as letras minúsculas são de dois bytes e tudo o mais usado aqui é um byte cada.Y1L1L2Str0LinReg(ax+b getDatesub(Equ►String(length(

O OS 5.2 adicionou um toString(comando que obsolescia cerca de metade desse envio, baseado nesse algoritmo .

Explicação:

{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

você pode incorporar L_1 nos programas 5.1. se livra de uma nova linha, dois tokens "L_1" e um →. 6 bytes salvos?
marcando

@striking LinReg(ax+b)usa L_1 e L_2, então eu tenho que definir os dois.
Pizzapants184

Salve alguns bytes no primeiro: use max(getDate)porque o maior número em getDate é sempre o ano.
precisa saber é o seguinte

3

JavaScript ES6, 56 bytes

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

Experimente online!

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

console.log(f())


+1 Exatamente a solução que eu estava prestes a postar. Você também pode usar substr(11,4)ou em slice(11,15)vez do split.
Shaggy

Você não precisa de mais de 56 bytes, como parte do desafio é produzi-lo?
precisa saber é o seguinte

3
@cnorthfield De maneira geral, no código golf, uma função que retorna um valor é uma resposta aceitável, a menos que a pergunta tenha requisitos mais específicos. Confira isso e isso .
powelles

@powelles Obrigado por explicar
cnorthfield

Isso é verdade, @powelles, mas sua resposta não retorna nada, a menos que mais seja adicionado ao seu golfe.
Kry Fairns #


3

PowerShell 3.0, 44 bytes

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

O PowerShell está competindo muito bem hoje!


1
Isso não funcionará na versão 2 do PowerShell (a sintaxe foreach). Portanto, você deve ter um identificador v3 + aqui. Esfrie outro sábio.
Matt

2

C #, 58 bytes

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

Função anônima que retorna a string necessária.

Programa 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
Eu acho que você pode salvar caracteres usando as seqüências de caracteres C # 6: $ "It's {DateTime.Now.Year} etc etc".
Arturo Torres Sánchez

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

2

Pitão , 38 bytes

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

Intérprete online.


Mesmo comprimento: s["It's ".d3d." y\n9?}7Tè+1°Õh6%Ñ< (Se você substituir \npor uma nova linha real) ligação
KarlKastor

@KarlKastor Como isso funcionou para você?
Erik the Outgolfer

Não entendi bem a pergunta. Eu usei o intérprete online . . O algoritmo para criar pyth embalado "cordas é:+++\.N++hSzeSzCi-RChSzCMz-hCeSzChSzN
KarlKastor

@KarlKastor Eu usei isso, mas deve ser algo no Chrome, e duvido que sejam os caracteres imprimíveis e imprimíveis.
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."

Experimente online! Substitua fcom mainum programa completo.

A função getCurrentTimeretorna um UTCTimeobjeto que se parece com "2017-04-02 10:22:29.8550527 UTC"quando convertido em uma string por show. fst.span(>'-')leva os personagens principais enquanto eles são maiores que '-', esse é o ano atual. Nos próximos 7972 anos take 4, funcionaria com 8 bytes a menos, mas queremos que nosso código funcione corretamente para todo o sempre.

Até onde eu vejo as funções internas para obter o ano atual exigem um import Data.Time.Calendar, extrair o ano da string deve ser a opção mais curta.


2

JavaScript, 77 71 67 63 bytes

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

Obrigado a @ programmer5000 pelos espaços!

JavaScript ES6 66 60 bytes

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


Bem-vindo ao PPCG! Por favor golf sua resposta (remover os espaços em torno do +s!)
programmer5000

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

@ fənɛtɪk revertido para console.log, suportes adicionados ao alerta ES6
cnorthfield

2

R, 62 59 62 bytes

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

1
Usando substr(date(),21,24)vez de format(Sys.time(),"%Y")salva três bytes
bouncyball

isso funciona no ano 20017?
Roman Gräf

Ahh Corrigir. Revertendo de volta. Tnx !!
Zahiro Mor 04/04

2

Befunge-98 , 57 55 bytes

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

Experimente online!

Agradeço a James Holderness por apontar meu erro com a instrução sysinfo.

"emoh og ,sklof ,ydaerla@ s'tI"envia a frase para a pilha onde 4k,imprime a primeira palavra. yé a instrução sysinfo. Quando passados ​​20 (o não imprimível na sequência), ele retorna 256*256*(year-1900) + 256*month + day of month. \4*:*/"&2"*+.pega apenas o ano do valor e o imprime e f7+k,imprime o restante da frase.


@ JamesHolderness Arghhh, isso explica por que nunca consegui fazer o sysinfo funcionar. Muito obrigado!
Jo Rei


1

MATL , 42 bytes

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

Experimente 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."))

Resposta muito básica. O "% Y" recebe o ano atual.

Obrigado a @ovs por remover 5 bytes


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

@ L3viathan isso é muito semelhante ao outro Python resposta
caird coinheringaahing

1

Fórmula IBM / Lotus Notes, 54 bytes

Não é exatamente um desafio, mas aqui vamos nós de qualquer maneira ...

"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
Não precisa do ponto e vírgula no final de uma lambda, e print ou printf será menor que println.
Pavel

1

T-SQL, 66 bytes

print concat('It''s ',year(getdate()),' already, folks, go home.')
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.