Уже [текущий год], ребята, иди домой


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
Tas

Ответы:



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).
17

1
Правда, но это не «программа AC , которая будет производить желаемый результат» , а «команду оболочки , которая будет производить желаемый результат»
Элазар

2
@ 12431234123412341234123 Функции являются приемлемыми ответами здесь на Codegolf.
Orlp

1
Nitpickers ... @orlp, так __DATE__[6]как это пробел, вы можете сэкономить один байт: ..."It's%s already, folks, go home.",__DATE__+6);}( обратите внимание на пропущенный пробел между ним и %s).
МКЦ

15

05AB1E , 21 20 байт

Сохранил байт благодаря Эрику Аутгольферу

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

Попробуйте онлайн!


1
Я думаю, что вы путали 05AB1E с Jelly, который имеет “...»синтаксис для сжатых строк и »не может быть подавлен в любом случае.
Эрик Outgolfer

3
Это единственное решение без читабельного текста :(
boboquack

1
Пояснения пожалуйста?
ckjbgames

2
@ckjbgames встроенный словарь
qwr

@boboquack Да, It's читабельно. В остальном сделай это .
user202729


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 оказалось почти таким же длинным, как и при печати на регистре base-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

Mathematica, 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(

OS 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)использует L_1 и L_2, поэтому я должен установить их оба.
pizzapants184

Сохраните несколько байтов в первом: используйте max(getDate)вместо этого, потому что наибольшее число в getDate - это всегда год.
lirtosiast

3

JavaScript ES6, 56 байт

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

Попробуйте онлайн!

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

console.log(f())


+1 Точно решение, которое я собирался опубликовать. Вы также можете использовать substr(11,4)или slice(11,15)вместо split.
Лохматый

Разве вам не требуется более 56 байтов, как часть задачи, чтобы вывести его?
Нортфилд,

3
@cnorthfield Вообще говоря, в Code Golf функция, которая возвращает значение, является приемлемым ответом, если вопрос не имеет более специфических требований. Проверьте это и это .
Пауэлл

@powelles Спасибо за объяснение
cnorthfield

Это правда @powelles, но ваш ответ ничего не даст, если в ваш гольф не добавлено больше.
Кайл Фэрнс,


3

PowerShell 3.0, 44 байта

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

PowerShell конкурирует довольно хорошо сегодня!


1
Это не будет работать во второй версии PowerShell (синтаксис foreach). Так что у вас должен быть идентификатор v3 + здесь. Круто другой мудрый.
Мэтт

2

C #, 58 байт

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

Анонимная функция, которая возвращает искомую строку.

Полная программа:

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
Я думаю, что вы можете сохранять символы, используя строки C # 6: $ "Это {DateTime.Now.Year} и т. Д.".
Артуро Торрес Санчес

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

2

Pyth , 38 байт

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

Онлайн переводчик.


Та же длина: s["It's ".d3d." y\n9?}7Tè+1°Õh6%Ñ< (если вы замените \nна новую
строку

@KarlKastor Как это работает для вас?
Эрик Outgolfer

Не совсем понял вопрос. Я использовал онлайн переводчик . Алгоритм создания упакованного Pyth'а ". Строки:+++\.N++hSzeSzCi-RChSzCMz-hCeSzChSzN
KarlKastor

@KarlKastor Я использовал это, но это должно быть что-то в Chrome, и я очень сомневаюсь, что это печатные непечатные символы.
Эрик Outgolfer

2

Haskell , 113 байт

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

Попробуйте онлайн! Заменить fс mainдля полной программы.

Функция getCurrentTimeвозвращает UTCTimeобъект, который выглядит примерно как "2017-04-02 10:22:29.8550527 UTC"при преобразовании в строку с помощью show. fst.span(>'-')принимает главных героев, в то время как они больше, чем '-', это текущий год. В течение следующих 7972 лет take 4будет работать на 8 байт меньше, но мы хотим, чтобы наш код работал всегда и всегда.

Насколько я вижу, встроенные функции для получения текущего года требуют import Data.Time.Calendar, поэтому извлечение года из строки должно быть самым коротким вариантом.


2

JavaScript, 77 71 67 63 байта

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

Спасибо @ programmer5000 за пробелы!

JavaScript ES6 66 60 байт

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


Добро пожаловать в PPCG! Пожалуйста, ответьте на ваш вопрос (удалите пробелы вокруг +s!)
programmer5000

1
console.log("It's",new Date().getFullYear(),"already, folks, go home.")для 71 байт
ОВС

@ fəˈnɛtɪk вернулась обратно в console.log, добавила скобки в предупреждение
ES6


2

Befunge-98 , 57 55 байт

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

Попробуйте онлайн!

Спасибо Джеймсу Холдернессу за указание на мою ошибку с инструкцией sysinfo.

"emoh og ,sklof ,ydaerla@ s'tI"толкает предложение в стек, где 4k,печатает первое слово. yинструкция sysinfo Когда прошло 20 (непечатаемый в строке), он возвращается 256*256*(year-1900) + 256*month + day of month. \4*:*/"&2"*+.берет значение года из значения, печатает его и f7+k,печатает оставшуюся часть предложения.


@JamesHolderness Arghhh, это объясняет, почему я никогда не мог заставить работать sysinfo. Огромное спасибо!
Джо Кинг



1

Python 3, 73 68 байт

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

Очень простой ответ. "% Y" получает текущий год.

Спасибо @ovs за удаление 5 байтов


Сохраните 6 байтов сprint(f"It's {time.gmtime()[0]} already, go home")
L3viathan

@ L3viathan, это слишком похоже на другой ответ Python
caird coinheringaahing

1

IBM / Lotus Notes Formula, 54 байта

Не совсем сложно, но мы все равно идем ...

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

1

Java 8, 81 78 байт

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

1
Не нужно ставить точку с запятой в конце лямбды, и print или printf будут короче println.
Павел

1

T-SQL, 66 байт

print concat('It''s ',year(getdate()),' already, folks, go home.')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.