100 днів відліку


25

Як правило, розпочинається відлік за 100 днів до події, ймовірно, через нашу базову систему 10. Приклади цього можна знайти скрізь:

  • 100 днів до дня народження
  • 100 днів до весілля
  • 100 днів до виборів
  • 100 днів до нашого закінчення
  • 100 днів до її строку
  • 100 днів до футбольного сезону
  • 100 днів до отримання значка "Фанатик"

Ви отримуєте картину. Здається, що 100-й день перед подією посідає друге місце лише фактичної події. Тож для цього виклику мені потрібно знати, якою буде дата через 100 днів, щоб я міг визначити, з чого я повинен почати відлік.

Вхідні дані

Немає даних

Вихідні дані

Дата 100 днів з поточної дати, заснованої на стандартному григоріанському календарі (обов'язково враховуйте високосні роки). Вихід гнучкий, поки формат дата люди читання в стані (наприклад 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Перемога

Код гольфу: найкоротший код у байтах


Приклади

100 днів з сьогоднішнього дня (5 квітня 2017 року) - п'ятниця, 14 липня 2017 року.

Current                Future
-------                ------
01/01/2001 +100        04/11/2001
01/01/2004 +100        04/10/2004
01/01/1900 +100        04/11/1900
01/01/2000 +100        04/10/2000

07/04/2017 +100        10/12/2017
10/31/2017 +100        02/08/2018
12/25/2017 +100        04/04/2018

08/29/1941 +100        12/07/1941
06/03/2001 +100        09/11/2001

2
Чи можу я додати поточний час до виводу?
Тит

1
@Titus немає, просто дата в майбутньому
NonlinearFruit

1
Більшість відповідей включають дату та час зараз, я думаю, це слід дозволити.
ГБ

1
@ GB Коли ви виводите майбутню дату, формат є гнучким (міг би включати часові позначки), якщо він читається людиною. Однак поточний час / дата не прийнятні.
нелінійний

5
" Через нашу систему bas 10 "? Ні, якщо ми порахували у двійковій формі, ми, швидше за все, відрахуємося від 100 - хіба що це займе лише чотири дні, а не сто ...
Toby Speight

Відповіді:


42

Excel, 10

=NOW()+100

Демонстрація

enter image description here


1
Також працює в Google Таблицях.
Okx

11
Excel завжди хороший для коду для гольфу, який передбачає розбір дат.
Інженер Тост

2
Чи є мовний пакет для excel, в якому функція NOW прописана всього двома літерами? У цьому випадку ви можете зберегти 1 байт.
iFreilicht

13
Так, у голландської мови є 'nu ()'
Томінатор

2
Хоча, лише на частину дати , вам доведеться скористатися =TODAY()+100або=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit

20

Баш, 17 16 15 14 13 байт

date -d100day

Виявляється, dateкоманда приймає досить гнучку інформацію для відносних хронометрів. Ви також можете зробити речі , як 1 year, 1 week ago, yesterdayі т.д. Це дуже здорово.

-1 байт, зрозумівши, що баш не переймається граматикою.
-1 байт, оскільки простір між ними 100і dayнепотрібний.
-1 байт, тому що мені вже не потрібні лапки, тому що у мене немає місця в рядку.
-1 байт, видаливши пробіл після -d(дякую лише ASCII!)


Нова улюблена команда +1
нелінійна

@NonlinearFruit Так, це, мабуть, одна з моїх улюблених команд. Спасибі!
HyperNeutrino

Місце вам не потрібно після-d
лише ASCII

@ ASCII-тільки О, добре. Спасибі!
HyperNeutrino

10

PowerShell, 10 байт

(date)+1e2

Завдяки ConnorLSW за трюк + 1e2.

Здається, що подвійні ( 1e2є подвійними) також додаються як дні.

Попередня версія, 12 байт:

(date)+"100"

Мабуть, ви можете додати рядки до дат у PowerShell. Рядок "100"перетворюється на 100 днів TimeSpan.


2
Добре , не питайте мене , чому, але навіть якщо (date)+100не працює, то (date)+1e2робить ... Я припускаю , що 1e2це на самому справі в doubleтой час як 100це число , поки він не компілюється, тобто ви не можете зателефонувати , 100.GetType()але ви можете 1e2.GetType()- ось -2 і призводить нас до нічия з Excel!
colsw

@ConnorLSW Якщо це допомагає або додає плутанини, 100це сприймається як додавання 100 тиків, коли строка "100"приймається за дні. Обидва дійсні PS, але тільки один робить те, що нам потрібно.
Метт

@Matt 1e6все ще є числом і додається як дні?
colsw

Це цікаво тоді. Можливо, під капотом відбувається більше, де це число сягає понад поріг .... Я не знаю
Метт

Я думаю, що якимось чином пов’язаний зі старим типом DATE, який є 8-байтовим числом з плаваючою точкою, а дні представляються як приріст цілого числа. Я думаю, що для цього використовується Excel.
Данько Дурбич


6

PHP, 28 байт

<?=date(Y_m_d,time()+864e4);

читана людиною версія, 35 байт:

<?=date(Y_m_d,strtotime("100day"));

майже читабельний, 34 байти:

<?=date(Y_m_d,strtotime(1e2.day));

-4 байти, якщо також приймається час друку: замінити Y_m_dна rабо c.

Національне свято у Франції за 100 днів.


Підкреслення змусило мене зробити "Чому підкреслює, це константа? Ні, рядок ОХ ЗАЧЕКАЙТЕ" ПРОСТОРИ "!!" Розумний.
Мартійн

@Martijn Увімкніть E_NOTICEі ви будете знати: Y_m_dце невизначена константа і PHP передбачає рядок. Це працює з будь-яким дійсним словом (включаючи всі назви функцій), крім ключових слів , заздалегідь визначених констант та регістру true, нечутливих до регістру , falseта null.
Тит

5

Рубін , 16 байт

p Time.now+864e4

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


Збирався відповісти на це, приємно. Але я отримую різні результати 864e4і 8640000я навіть не знаю , чому. Я звинувачую ТІО. EDIT: коли ви використовуєте p, ці два значення дають різний результат. Але коли ви користуєтесь puts, вони однакові.
равлик_

Я не розумію, я отримую однаковий результат з обома. Чи можете ви розмістити приклад? Може, це залежить від місцевості?
ГБ

p Time.now+864e4p Time.now+8640000на TIO відстає приблизно 4 дні . Я спробував це кілька разів. Однак, якщо ви використовуєте puts, цього розрізнення не існує. Я насправді не знаю, чи має місце моє місце, Схід США повинен бути досить нормальним: я думаю, я спробую запустити його на своєму ПК, коли повернусь додому.
равлик_

5

Javascript, 29 26 25 байт

Збережено 3 байти завдяки @ ASCII!

Збережено 1 байт завдяки @JohanKarlsson

new Date(+new Date+864e7)

document.body.innerHTML=new Date(+new Date+864e7)


1
Ви можете використовувати 864e7замість864*10e6
лише ASCII

1
Ви можете зберегти 1 байт, скориставшись +new DateзамістьDate.now()
Йохан Карлссон

1
Це фрагмент. Вам потрібно включитиconsole.log
mbomb007


4

Vim, 27 байт

:r!date "+\%F" -d"+100 day"

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

enter image description here

Редагувати: Видалено зайвий простір.


2
Якщо ви використовуєте Linux date, той, що знаходиться на цій сторінці date -d100day, не впевнений, чи допоможе це
лише ASCII

Я тестую це, :r!date +\%F -d100dayце також працює (принаймні, на моєму ПК (C)), але це те саме, що HyperNeutrinoвже використовується в bash.
12431234123412341234123

Е, ви можете зберегти байти, просто видаливши vim і зробивши це в bash.
Девід Конрад

4

MATL , 9 байт

Z'100+1XO

Формат виводу є 15-Jul-2017(який я вважаю найбільш читаним). Зміна 1XOдо , 2XOщоб отримати формат , який використовується в прикладах, 07/15/17.

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

Пояснення

Z'      % Push current date and time as a serial date number
100+    % Add 100
1XO     % Convert to string with format 'dd-mmm-yyyy'. Implicitly display

4

SQL (Microsoft), 35 31 байт

SELECT DATEADD(D,100,GETDATE())

Ви можете використовувати dзамість них DAYта видалити пробіли всередині DATEADD.
mbomb007

Навіть я не знав, що ти можеш використовувати d. Я використовую ddабо dayна практиці. Я просто спробував це, і це спрацювало.
mbomb007

3

Java 8, 77 , 61 байт

()->System.out.print(java.time.LocalDate.now().plusDays(100))

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


Чи є причина, що ви не включаєте котельну плиту? (тобто 'клас A {public static ...') Для Java, я вважаю, необхідний для повноцінної програми. Ви могли б зробити лямбда ()->java.time.LocalDate.now().plusDays(100).
нелінійний

У мене це було, перш ніж редагувати свою відповідь. Це було 94 байти разом з плитою котла. Я новачок у гольфі з Java. отже, я не впевнений, чи потрібно мені це включати!
Кеертана Прабхакаран

2
Подання (якщо не вказано інше) може бути або повноцінною програмою (яку може виконувати перекладач без змін), або функцією.
нелінійний

3

C #, 103 97 байт

Завдяки рознагалу за економію 6 байт!

using System;class P{static void Main(){Console.Write(DateTime.Now.AddDays(100).ToString("d"));}}

Повна програма, яка читає поточну дату, додає 100 днів і відображає результат у M/d/YYYYформаті.

Ви можете змінити формат дати, додавши ще кілька байтів:

using System;class P{static void Main(){Console.Write(DateTime.Now.AddDays(100).ToString("d-M-yyyy"));}}

Для усунення кодового коду - C # невідомо, як дуже компактний - може використовуватися анонімна функція:

C # лямбда, 49 43 байт

()=>DateTime.Now.AddDays(100).ToString("d")

Повна програма:

using System;

class P
{
    static void Main()
    {
        Func<string> f = 
        ()=>DateTime.Now.AddDays(100).ToString("d");

        Console.WriteLine(f());
    }
}

Для повної програми, я думаю, ви можете написати System.DateTime.Now ... щоб уникнути "використання системи;"
Taemyr

1
@Taemyr: Це було б довше, оскільки він також потребує цього Console.Write.
рознагул

2
@adrianmp: Ви можете зберегти 6 байт, використовуючи .ToString("d")замість .ToShortDateString().
raznagul

3

Локшина , 8 байт

]5@LaƇ⁺ƈ

Спробуй це:)


Як це працює

]5@LaƇ⁺ƈ
]5@La    # The string "]5@La" gets pushed onto the stack which in base 98 represents 8,640,000,000.
     Ƈ   # Pushes an integer that represents the current time where highest resolution is milliseconds.
      ⁺  # Add the time and the string which will be interpreted as 8,640,000,000ms.
       ƈ # Convert the integer to human readable time.
         # Implicitly output to the screen.

<div id="noodel" code="]5@LaƇ⁺ƈ" input="" cols="80" rows="2"/>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>


Символ Ƈ - символ унікоду U + 0187, який занадто великий, щоб відображатися в одному байті. Те саме стосується ƈ (U + 0188). Тож поки це 8 символів, мінімальна довжина байтів - 10.
iFreilicht

1
@iFreilicht, Noodel використовує власне кодування. Редактор робить усе в UTF-16, щоб візуально працювати краще, але кодується на основі кодової сторінки Noodel перед розбором.
tkellehe

3

Математика, 26 21 байт

-5 байт завдяки @KiranLinsuain!

Today+Quantity@"100d"

Якщо включати час дозволено, ми можемо зберегти 2 байти:

Now+Quantity@"100d"

1
"Now + Quantity [" 100d "]" скорочує його зовсім небагато, але може не завжди працювати у всіх версіях.
кл

3

C, 87 46 44 байт

врятував 2 байти завдяки Альберту Реншоу

f(){time_t t=time(0)+864e4;puts(ctime(&t));}

Я зрозумів, що результат є досить гнучким, щоб передбачити день тижня та час, тому не потрібно використовувати localtimeабо tmструктуру взагалі.

Стара відповідь

f(){time_t t=time(0)+8640000;char b[9];strftime(b,9,"%d-%m-%y",localtime(&t));puts(b);}

На підставі відповіді Khaled.K , але замість того, щоб возитися зі tmструктурою, до значення додається кількість секунд, еквівалентна 100 дням time_t. Він також друкує лише дату, без часу чи дня тижня.

Як це має статися в програмі для гольфу, під час компіляції створюються деякі потворні попередження.

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

Безголівки:

f(){
    // Current time + 100 days
    time_t t=time(0)+8640000;
    // Buffer for printing formatted time
    char b[9];
    // Print the time in format dd-mm-yy to buffer
    strftime(b,9,"%d-%m-%y",localtime(&t));
    // print buffer
    puts(b);
}

2
Поголіть 2 байти замінивши 8640000на864e4
Альберт Реншо


2

Формула IBM / Lotus Notes, 29 байт

@Adjust(@Today;0;0;100;0;0;0)

На жаль, @Adjustпотрібне простеження 0'sзниклихhh:mm:ss.

If we were allowed to display the time as well then changing @Today to @Now would save 2 bytes for 27.


2

JavaScript (ES6), 44 bytes

_=>new Date(Date.now()+864e7).toDateString()

25 bytes if returning a date with the time is acceptable:

_=>Date(Date.now()+864e7)



2

Swift 3, 39 bytes

print(Date(timeIntervalSinceNow:864E4))

I'd argue you don't need the import foundation;. Swift runs just on iOS and that is auto imported there.
Albert Renshaw

There aren't too many Swift answers here yet, so not sure what the consensus is. But I think you have a good point, I'll remove the import :)
Matt

@Albert Swift also runs on Mac OS and Linux. I don't know what that means for whether the import is required, though.
David Conrad

2

C, 120 113 bytes

#include <time.h>
f(){time_t t=time(0);struct tm*tm=localtime(&t);tm->tm_mday+=100;t=mktime(tm);printf("%s",ctime(&t));}

Live Demo

#include <stdio.h>
#include <time.h>

void PrintDatePlus100days()
{
    // obtain current time
    time_t t = time( 0 );

    // convert to datetime struct
    struct tm *tm = localtime( &t );

    // add 100 days
    tm->tm_mday += 100;

    // convert to time_t
    t = mktime( tm );

    // print time in readable format
    puts( ctime( &t ) );
}

If I'm not mistaken, you don't need to account for #include ... boilerplate when submitting functions. (Java answers, for example, don't need import in that case)
Cássio Renan

@CássioRenan in Java you don't need to count the default imports like java.lang.*, just like how we don't count stdio.h and stdlib.h in C. But even in java, you need to either consider custom imports or put the path in the class name like java.util.Date, and that counts in your score.
Khaled.K

2
Why using printf() would puts() not also work?
12431234123412341234123

2

PowerShell, 23

(get-date).adddays(100)

This is my first ever try, so please give me constructive feedback. Thanks!



1

Python, 63 bytes

from datetime import*
print(datetime.now()+timedelta(days=100))

Very simple solution really. Because the datetime.now() result is the same type as the result of timedelta, it happily adds the two together.


It doesn't have to be a function. You could remove the lambda: and it would still be a full program.
NonlinearFruit

@NonlinearFruit Yes but print would have to be added and that makes it the same number of bytes.

If you use Python 2, you can remove brackets in print to save 1 byte
Dead Possum

the days= is optional, that would save 5+1 bytes (python2 print's brackets)
Felipe Nardi Batista

Golfed down to 57 bytes: from datetime import*;print datetime.now()+timedelta(100)
Mr. Xcoder


1

Golang, 58 bytes

import ."time"
func f(){Println(Now().AddDate(0, 0, 100))}

Full Program

package main

import . "time"
import . "fmt"

func main() {
    Println(Now().AddDate(0, 0, 100))
}

try it online!



1

Python 2 + Pandas 0.19.1, 56 51 bytes

from pandas import*
print Timestamp('now','D')+100
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.