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


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.