Це вже [поточний рік], люди, йдіть додому


31

Що стосується більшості викликів, коли зараз це не відповідний рік виклику, це говориться попереду.

Це вже [поточний рік], люди, йдіть додому.

Ви повинні вивести цей текст із заміненим на поточний рік.


I / O

Введення: Ні.

Вихід : It's [year] already, folks, go home.з [рік] змінено на поточний рік.


17
Перший тестовий пробіг, отримав час замість дати: вже 8:58, люди, йдіть додому.
steenbergh

Чи можу я взяти ввід, а потім проігнорувати його (тобто зробити щось за принципом String goHome(Object foo){return "It's "+currentYear()+" already, folks, go home.";}(але, звичайно, значно коротше))?
снідакайхан хоче, щоб Моніка повернулася

Прикро, що я не повинен складати виклик буквально: ///, 46 байтIt's the current year already, folks, go home.
Товариш SparklePony,

3
@steenbergh Якби вранці була тільки така школа. xD: P
HyperNeutrino

Я відчуваю , ця проблема була б більш доцільно , якщо б це було «якщо це не поточний рік, вихід це, інакше вихід нічого», але все - таки хороший виклик +1
Тас

Відповіді:



17

C (gcc), 58 байт

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

19
Зверніть увагу, що вам потрібно перекомпілювати це раз на рік, щоб отримати правильну функціональність.
Роберт Фрейзер

3
@RobertFraser Щоб виконати будь-яку відповідь C (gcc) на цьому сайті, ви запускаєте її як gcc golf.c && ./a.out. Те, що в цьому процесі утворюється двійковий код, не має значення для коду гольфу. Мій вихідний код судять, а не двійковий код, що генерується (якби це було так, моя відповідь була б x86-64).
orlp

1
Правда, але це не «програма змінного струму, яка дасть бажаний вихід», а «команда оболонки, яка дасть бажаний вихід»
Елазар

2
@ 12431234123412341234123 Функції прийнятні відповіді тут на codegolf.
orlp

1
Nitpickers ... @orlp, оскільки __DATE__[6]це пробіл, ви можете пощадити один байт: ..."It's%s already, folks, go home.",__DATE__+6);}(пам’ятайте про пропущений пробіл між It і %s).
ВАТ

15

05AB1E , 21 20 байт

Збережено байт завдяки Еріку Аутгольферу

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

Спробуйте в Інтернеті!


1
Я думаю, що ви плутали 05AB1E з Jelly, який має “...»синтаксис для стислих рядків і його »не можна придушити ні в якому разі.
Ерік Аутгольфер

3
Це єдине рішення без читаного тексту :(
boboquack

1
Пояснення будь ласка?
ckjbgames

2
Вбудований словник
@ckjbgames

@boboquack Так, It's читається. Для решти зробіть це .
користувач202729


11

PHP, 42 байти

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

Досить впевнений, що вам потрібні цитати навколо Y.
Мішель Джонсон

3
@MichealJohnson PHP перетворить нерозпізнані константи в рядки з однаковим значенням, тому це має спрацювати (але це буде кидати повідомлення)
Ерік

7
@MichealJohnson Ти ніколи не впевнений у PHP
Чарлі

8

Баш, 45 символів

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

Bash вбудований printfу версії 4.2 отримав%(fmt)T специфікатор формату, а з версії 4.3 вона за замовчуванням встановлює поточну мітку часу за відсутності аргументів.

Вибірка зразка:

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

6

Пакет, 45 байт

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

Пакет фактично досить конкурентоспроможний за один раз.


1
Я думаю, результат цього рішення варіюється в різних локальних налаштуваннях ...
stevefestl


5

машинний код x86 на DOS - 62 байти

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 знаходиться в BCD (на відміну від простого 16-бітного значення, отриманого від еквівалентного виклику DOS), його декодування до ASCII виявилося майже таким же довгим, як база-10, що друкує регістр. Ну добре.

    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

Математика, 58 байт

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

Анонімна функція. Не приймає введення і повертає рядок як вихід. Ні, я не збираюся робити подання REPL, опублікуйте його самостійно, якщо цей байт такий важливий.



3

TI-Basic (TI-84 Plus CE з ОС 5.2+), 64 байти

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

TI-Basic - це токенізована мова. Деякі команди ( getDate, toString(і т. Д.), І всі малі літери є двобайтовими, а все інше, що використовується тут, - один байт.

Пояснення:

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 з ОС 5.1), 108 байт

{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 - це токенізована мова. Більш складні змінні ( , , , ), деякі команди ( , , , , ), і всі букви нижнього регістра два байта і все інше тут використовується один байт кожен.Y1L1L2Str0LinReg(ax+b getDatesub(Equ►String(length(

ОС 5.2 додала toString(команду, яка застаріла приблизно на половину цього подання, що базується на цьому алгоритмі .

Пояснення:

{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 у програмах 5.1. позбавляється від нової лінії, двох маркерів "L_1" та a →. 6 байтів збережено?
вражаючий

@striking LinReg(ax+b) uses L_1 and L_2, so I have to set them both.
pizzapants184

Save some bytes on the first: use max(getDate) instead because the largest number in getDate is always the year.
lirtosiast

3

JavaScript ES6, 56 bytes

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

Try it online!

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.')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.