To już [bieżący rok], ludzie, idźcie do domu


31

W większości podważa gdy w tej chwili nie jest odpowiedni rok wyzwania, to mówi to z przodu.

To już [bieżący rok], ludzie, idźcie do domu.

Musisz wydrukować ten tekst z zastąpieniem bieżącego roku.


I / O

Dane wejściowe: brak.

Wyjście : It's [year] already, folks, go home.z [rok] zmieniono na bieżący rok.


17
Pierwszy test, mam czas zamiast daty: jest już 8:58, ludzie, idźcie do domu.
steenbergh

Czy mogę wziąć dane wejściowe, a następnie je zignorować (tj. Zrobić coś zgodnie z String goHome(Object foo){return "It's "+currentYear()+" already, folks, go home.";}(ale oczywiście o wiele krótszym))?
dorukayhan chce Moniki z powrotem

Szkoda, że ​​nie powinnam kompilować wyzwania dosłownie: ///, 46 bajtówIt's the current year already, folks, go home.
towarzysz SparklePony

3
@steenbergh Gdyby tylko szkoła była taka rano. xD: P
HyperNeutrino

Wydaje mi się, że to wyzwanie byłoby bardziej odpowiednie, gdyby „jeśli nie jest to bieżący rok, wydaj to, w przeciwnym razie nic nie produkuj”, ale nadal dobre wyzwanie +1
Tas

Odpowiedzi:



17

C (gcc), 58 bajtów

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

19
Pamiętaj, że musisz to skompilować raz w roku, aby uzyskać poprawną funkcjonalność.
Robert Fraser,

3
@RobertFraser Aby uruchomić dowolną odpowiedź C (gcc) na tej stronie, uruchom ją jako gcc golf.c && ./a.out. To, że w tym procesie tworzony jest plik binarny, nie ma znaczenia dla kodu golfa. Mój kod źródłowy jest oceniany, a nie generowany plik binarny (w takim przypadku moja odpowiedź to x86-64).
orlp

1
To prawda, ale nie jest to „program AC, który wytworzy pożądane wyjście”, ale „Polecenie powłoki, które wytworzy pożądane wyjście”
Elazar,

2
@ 12431234123412341234123 Funkcje są akceptowalnymi odpowiedziami tutaj na codegolf.
orlp

1
Nitpickers ... @orlp, ponieważ __DATE__[6]jest spacją, możesz zaoszczędzić jeden bajt: ..."It's%s already, folks, go home.",__DATE__+6);}( zwróć uwagę na brakującą spację między It a %s).
YSC

15

05AB1E , 21 20 bajtów

Oszczędność bajtu dzięki Erikowi Outgolfer

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

Wypróbuj online!


1
Myślę, że myliłeś 05AB1E z Jelly, która ma “...»składnię na skompresowane łańcuchy i »w żadnym wypadku nie można go stłumić.
Erik the Outgolfer

3
To jedyne rozwiązanie bez czytelnego tekstu :(
boboquack

1
Wyjaśnienie proszę?
ckjbgames

2
@ckjbgames wbudowany słownik
qwr

@ Boboquack Tak, It's jest czytelny. Dla reszty zrób to .
user202729,


11

PHP, 42 bajty

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

Jestem pewien, że potrzebujesz cytatów w całym Y.
Micheal Johnson

3
@MichealJohnson PHP konwertuje nierozpoznane stałe na ciągi o tej samej wartości, więc to powinno zadziałać (ale zwróci uwagę)
Erik

7
@MichealJohnson Nigdy nie jesteś pewien PHP
Charlie

8

Bash, 45 znaków

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

Wbudowana printfwersja Bash w wersji 4.2 ma specyfikator %(fmt)Tformatu, a od wersji 4.3 domyślnie przyjmuje bieżący znacznik czasu przy braku argumentu.

Przykładowy przebieg:

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

6

Partia, 45 bajtów

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

Partia faktycznie jest w zasadzie konkurencyjna.


1
Myślę, że wynik tego rozwiązania różni się w zależności od ustawień regionalnych ...
stevefestl


5

kod maszynowy x86 w systemie DOS - 62 bajty

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

Mimo że wejście z BIOS-u jest w BCD (w przeciwieństwie do zwykłej 16-bitowej wartości uzyskanej z równoważnego wywołania DOS), odkodowanie go do ASCII okazało się prawie tak długie, jak wydruk bazy rejestru 10. No cóż.

    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 bajtów

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

Funkcja anonimowa. Nie pobiera danych wejściowych i zwraca ciąg wyjściowy. Nie, nie zamierzam składać raportu REPL, opublikuj go sam, jeśli ten bajt jest tak ważny.



3

TI-Basic (TI-84 Plus CE z OS 5.2+), 64 bajty

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

TI-Basic to tokenizowany język. Niektóre polecenia ( getDate, toString(itp.) I wszystkie małe litery są dwubajtowe, a wszystko inne użyte tutaj to jeden bajt.

Wyjaśnienie:

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 z OS 5.1), 108 bajtów

{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 to tokenizowany język. Im bardziej skomplikowany zmienne użytkownika ( , , , ), niektóre polecenia ( , , , , ), a wszystkie litery małe są dwa bajty i wszystko inne stosowane Oto jeden bajt każda.Y1L1L2Str0LinReg(ax+b getDatesub(Equ►String(length(

OS 5.2 dodał toString(polecenie, które unieważnia około połowy tego przesłania, opartego na tym algorytmie .

Wyjaśnienie:

{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

możesz wstawić L_1 w programach 5.1. pozbywa się nowej linii, dwóch tokenów „L_1” i →. Zapisano 6 bajtów?
uderzenie

@strike LinReg(ax+b)używa L_1 i L_2, więc muszę ustawić je oba.
pizzapants184

Zaoszczędź trochę bajtów za pierwszym razem: użyj max(getDate)zamiast tego, ponieważ największą liczbą w getDate jest zawsze rok.
lirtosiast

3

JavaScript ES6, 56 bajtów

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

Wypróbuj online!

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

console.log(f())


+1 Dokładnie rozwiązanie, które zamierzałem opublikować. Możesz także użyć substr(11,4)lub slice(11,15)zamiast split.
Kudłaty

Czy nie potrzebujesz więcej niż 56 bajtów jako część wyzwania, które musisz wykonać?
cnorthfield,

3
@cnorthfield Mówiąc ogólnie, w kodzie golfowym funkcja, która zwraca wartość, jest akceptowalną odpowiedzią, chyba że pytanie ma bardziej szczegółowe wymagania. Sprawdź to i to .
powelles

@powelles Dziękujemy za wyjaśnienie
cnorthfield

To prawda @powelles, ale twoja odpowiedź nic nie zwróci, chyba że do golfa zostanie dodane więcej.
Kyle Fairns,


3

PowerShell 3.0, 44 bajty

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

PowerShell konkuruje dziś dość dobrze!


1
To nie zadziała w wersji 2 PowerShell (składnia foreach). Powinieneś mieć tutaj identyfikator v3 +. Fajne inne mądre.
Matt

2

C #, 58 bajtów

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

Anonimowa funkcja, która zwraca wymagany ciąg.

Pełny 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
Myślę, że możesz zapisać znaki, używając ciągów 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

Pyth , 38 bajtów

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

Tłumacz online.


Ta sama długość: s["It's ".d3d." y\n9?}7Tè+1°Õh6%Ñ< (Jeśli \n
zastąpisz

@KarlKastor Jak ci się to udało?
Erik the Outgolfer

Nie bardzo rozumiem pytanie. Korzystałem z tłumacza online . Algorytm tworzenia spakowanych pythów. ”Ciągi znaków:+++\.N++hSzeSzCi-RChSzCMz-hCeSzChSzN
KarlKastor

@KarlKastor Użyłem tego, ale musi to być coś w Chrome, i bardzo wątpię, aby były to drukowalne znaki, które nie mogą zostać wydrukowane.
Erik the Outgolfer

2

Haskell , 113 bajtów

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

Wypróbuj online! Wymień fsię maindo pełnego programu.

Funkcja getCurrentTimezwraca UTCTimeobiekt, który wygląda jak "2017-04-02 10:22:29.8550527 UTC"po przekonwertowaniu na ciąg znaków show. fst.span(>'-')bierze wiodące postacie, gdy są większe niż '-', czyli w bieżącym roku. Przez następne 7972 lata take 4będzie działać za 8 bajtów mniej, ale chcemy, aby nasz kod działał poprawnie na zawsze.

O ile widzę import Data.Time.Calendar, wbudowane funkcje, aby uzyskać bieżący rok, wymagają , więc wyodrębnienie roku z ciągu powinno być najkrótszą opcją.


2

JavaScript, 77 71 67 63 bajtów

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

Dzięki @ programmer5000 dla przestrzeni!

JavaScript ES6 66 60 bajtów

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


Witamy w PPCG! Proszę golfa swoją odpowiedź (usuń spacje wokół +s!)
programista

1
console.log("It's",new Date().getFullYear(),"already, folks, go home.")dla 71 bajtów
ovs

@ fəˈnɛtɪk powrócił do konsoli.log, dodał nawiasy klamrowe do alertu ES6
cnorthfield


2

Befunge-98 , 57 55 bajtów

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

Wypróbuj online!

Dziękuję Jamesowi Holdernessowi za wskazanie mojego błędu w instrukcji sysinfo.

"emoh og ,sklof ,ydaerla@ s'tI"wypycha zdanie na stos, na którym 4k,wypisuje pierwsze słowo. yjest instrukcją sysinfo. Po przekazaniu 20 (niedrukowalne w ciągu) zwraca 256*256*(year-1900) + 256*month + day of month. \4*:*/"&2"*+.pobiera z wartości tylko rok i wypisuje go, a następnie f7+k,wypisuje resztę zdania.


@JamesHolderness Arghhh, to wyjaśnia, dlaczego nigdy nie byłem w stanie uruchomić sysinfo. Wielkie dzięki!
Jo King


1

MATL , 42 bajty

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

Wypróbuj 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 bajtów

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

Bardzo podstawowa odpowiedź. „% Y” pobiera bieżący rok.

Dzięki @ovs za usunięcie 5 bajtów


Zaoszczędź 6 bajtów zprint(f"It's {time.gmtime()[0]} already, go home")
L3viathan

@ L3viathan, który jest zbyt podobny do innej odpowiedzi w języku Python
Cairney Coherheringaahing

1

Formuła IBM / Lotus Notes, 54 bajty

Nie do końca trudne, ale i tak jedziemy ...

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

1

Java 8, 81 78 bajtów

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

1
Nie potrzebujesz średnika na końcu lambda, a print lub printf będą krótsze niż println.
Pavel

1

T-SQL, 66 bajtów

print concat('It''s ',year(getdate()),' already, folks, go home.')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.