100 dni odliczanie


25

Odliczanie zwykle rozpoczyna się 100 dni przed wydarzeniem, prawdopodobnie z powodu naszego podstawowego systemu 10. Przykłady tego można znaleźć wszędzie:

  • 100 dni do twoich urodzin
  • 100 dni do ślubu
  • 100 dni do wyborów
  • 100 dni do ukończenia szkoły
  • 100 dni do jej terminu
  • 100 dni do sezonu piłkarskiego
  • 100 dni, aż otrzymasz odznakę Fanatyk

Dostajesz obraz. Wygląda na to, że 100. dzień przed wydarzeniem zajmuje drugie miejsce tylko w stosunku do faktycznego wydarzenia. Dlatego w przypadku tego wyzwania muszę wiedzieć, jaka będzie data za 100 dni, abym mógł ustalić, co powinienem zacząć odliczać.

Wkład

Brak wejścia

Wydajność

Data 100 dni od bieżącej daty na podstawie standardowego kalendarza gregoriańskiego (pamiętaj, aby uwzględnić lata przestępne). Wyjście jest elastyczny jak długo format daty jest człowiek zdolny do odczytu (np 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Zwycięski

Code golf: najkrótszy kod w bajtach


Przykłady

100 dni od dzisiaj (5 kwietnia 2017 r.) To piątek, 14 lipca 2017 r.

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
Czy mogę dodać aktualny czas do wyjścia?
Tytus

1
@Tytus nie, tylko przyszła data
NonlinearFruit

1
Większość odpowiedzi zawiera teraz datę i godzinę. Myślę, że powinno to być dozwolone.
GB

1
@GB Gdy wypisujesz datę w przyszłości, format jest elastyczny (może obejmować znacznik czasu), o ile jest czytelny dla człowieka. Jednak bieżąca godzina / data jest niedopuszczalna.
NielinioweOwoce

5
Z powodu naszego systemu bas 10 ”? Nie, gdybyśmy policzyli w systemie binarnym, prawdopodobnie odliczalibyśmy od 100 - z wyjątkiem tego, że zajęłoby to tylko cztery dni, a nie sto ...
Toby Speight

Odpowiedzi:


42

Excel, 10

=NOW()+100

Demonstracja

enter image description here


1
Działa również w Arkuszach Google.
Okx

11
Excel jest zawsze dobry dla kodu golfowego, który wymaga analizowania dat.
Inżynier Toast

2
Czy istnieje pakiet językowy dla programu Excel, w którym funkcja NOW jest napisana tylko dwoma literami? W takim przypadku możesz zapisać 1 bajt.
iFreilicht,

13
Tak, holenderski ma „nu ()”
Tominator

2
Chociaż, tylko dla części daty , będziesz musiał użyć =TODAY()+100lub=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit

20

Bash, 17 16 15 14 13 bajtów

date -d100day

Okazuje się, że datepolecenie pobiera dość elastyczne dane wejściowe dla względnych czasów. Można również robić takie rzeczy jak 1 year, 1 week ago, yesterday, itd. To całkiem fajne.

-1 bajt, wiedząc, że bash nie dba o gramatykę.
-1 bajt, ponieważ odstęp między 100i dayjest niepotrzebny.
-1 bajt, ponieważ nie potrzebuję już cudzysłowów, ponieważ nie mam spacji w ciągu.
-1 bajt przez usunięcie spacji po -d(dzięki tylko ASCII!)


Nowe ulubione polecenie +1
Nieliniowe

@NonlinearFruit Hah, tak, to prawdopodobnie jedno z moich ulubionych poleceń. Dzięki!
HyperNeutrino,

Nie potrzebujesz miejsca po-d
tylko ASCII

@ Tylko ASCII Och, dobrze. Dzięki!
HyperNeutrino,

10

PowerShell, 10 bajtów

(date)+1e2

Dzięki ConnorLSW za lewę + 1e2.

Wygląda na to, że podwójne ( 1e2to podwójne) są również dodawane jako dni.

Poprzednia wersja, 12 bajtów:

(date)+"100"

Najwyraźniej możesz dodawać ciągi do dat w PowerShell. Ciąg "100"jest konwertowany na 100 dni TimeSpan.


2
Ok nie pytaj mnie dlaczego, ale mimo, że (date)+100nie działa, (date)+1e2działa ... chyba 1e2faktycznie jest doublenatomiast 100to numer, dopóki nie jest skompilowany, czyli nie można nazwać 100.GetType(), ale to tylko możliwe 1e2.GetType()- to -2 i prowadzi nas do remis z Excelem!
colsw

@ConnorLSW Jeśli to pomaga lub dodaje zamieszanie, 100jest postrzegane jako dodanie 100 tyknięć, gdzie jako ciąg "100"jest brany za dni. Oba są prawidłowe PS, ale tylko jeden robi to, czego potrzebujemy.
Matt

@Matt 1e6jest wciąż liczbą i jest dodawany w ciągu kilku dni?
colsw

To jest interesujące. Być może pod maską dzieje się więcej, gdzie liczba ta przekracza próg .... Nie wiem
Matt.

Myślę, że jest to w jakiś sposób powiązane ze starym typem DATE, który jest 8-bajtową liczbą zmiennoprzecinkową z dniami reprezentowanymi jako przyrosty liczby całkowitej. Chyba właśnie tego używa Excel.
Danko Durbić


6

PHP, 28 bajtów

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

wersja czytelna dla człowieka, 35 bajtów:

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

prawie czytelne, 34 bajty:

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

-4 bajty czy też czas drukowania jest akceptowana zamienić Y_m_dz rlub c.

To święto narodowe we Francji za 100 dni.


Podkreślenia kazały mi zrobić „Dlaczego podkreślenia, czy to jest stała? Nie, ciąg znaków OH CZEKAJ„ PRZESTRZEŃ !! ” Sprytny.
Martijn,

@Martijn Włącz, E_NOTICEa dowiesz się: Y_m_djest niezdefiniowaną stałą, a PHP zakłada ciąg znaków. To działa z każdym ważnego słowa (w tym wszystkie nazwy funkcji) oprócz słów kluczowych , predefiniowane stałe i nie uwzględnia wielkości liter true, falseoraz null.
Tytus

5

Rubinowy , 16 bajtów

p Time.now+864e4

Wypróbuj online!


Miałem zamiar na to odpowiedzieć, miło. Ale mam różne wyniki dla 864e4a 8640000, a ja nie bardzo wiem dlaczego. Obwiniam TIO. EDYCJA: gdy używasz p, dwie wartości dają inny wynik. Ale kiedy używasz puts, są takie same.
snail_

Nie rozumiem, otrzymuję taki sam wynik z obu. Czy możesz opublikować przykład? Może to zależy od regionu?
GB

p Time.now+864e4jest około 4 dni za p Time.now+8640000TIO. Próbowałem wiele razy. Jeśli jednak użyjesz puts, to rozróżnienie nie istnieje. Naprawdę nie wiem, czy moje ustawienia regionalne mają znaczenie, US East powinno być całkiem normalne: PI pewnie spróbuję uruchomić je na własnym komputerze, kiedy wrócę do domu.
snail_

5

JavaScript, 29 26 25 bajtów

Zaoszczędzono 3 bajty dzięki tylko @ ASCII!

Zapisano 1 bajt dzięki @JohanKarlsson

new Date(+new Date+864e7)

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


1
Możesz użyć 864e7zamiast864*10e6
tylko ASCII,

1
Możesz zapisać 1 bajt, używając +new DatezamiastDate.now()
Johan Karlsson

1
To jest fragment kodu. Musisz dołączyćconsole.log
mbomb007 7.04.17


4

Vim, 27 bajtów

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

spróbuj online!

enter image description here

Edycja: Usunięto niepotrzebne znaki miejsca.


2
Jeśli używasz Linuksa date, ta na tej stronie date -d100daynie jest pewna, czy to pomoże
tylko ASCII

Testuję to z :r!date +\%F -d100daytym, że działa również (przynajmniej na moim komputerze (C)), ale jest taki sam, jak HyperNeutrinojuż używany w bash.
12431234123412341234123

Możesz zaoszczędzić bajty, po prostu eliminując vima i robiąc to w bashu.
David Conrad,

4

MATL , 9 bajtów

Z'100+1XO

Format wyjściowy to 15-Jul-2017(który uważam za najbardziej czytelny). Zmienić 1XO, aby 2XOuzyskać format używany w przykładach 07/15/17.

Wypróbuj online!

Wyjaśnienie

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

SELECT DATEADD(D,100,GETDATE())

Możesz użyć dzamiast DAYi usunąć spacje wewnątrz DATEADD.
mbomb007

Nawet ja nie wiedziałem, że można użyć d. Używam ddlub dayw praktyce. Właśnie spróbowałem i zadziałało.
mbomb007

3

Java 8, 77 , 61 bajtów

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

Wypróbuj online!


Czy istnieje powód, dla którego nie uwzględniono płyty kotła? (tj. „klasa A {public static..”). W przypadku Java uważam, że at jest niezbędny do pełnego programu. Możesz zrobić lambda ()->java.time.LocalDate.now().plusDays(100).
NielinioweOwoce

Miałem to przed edycją mojej odpowiedzi. Miał 94 bajty wraz z płytą grzewczą. Jestem nowym golfistą z Javą. stąd nie jestem pewien, czy musiałem to uwzględnić!
Keerthana Prabhakaran

2
Zgłoszenia (o ile nie zaznaczono inaczej) mogą być pełnym programem (uruchamianym przez jakiegoś tłumacza bez modyfikacji) lub funkcją.
NielinioweOwoce

3

C #, 103 97 bajtów

Dzięki raznagul za oszczędność 6 bajtów!

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

Pełny program, który odczytuje bieżącą datę, dodaje 100 dni i wyświetla wynik w M/d/YYYYformacie.

Możesz zmienić format daty, dodając kilka dodatkowych bajtów:

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

Aby wyeliminować kod typu Boiler - C # nie jest dokładnie znany z tego, że jest bardzo zwarty - można użyć anonimowej funkcji:

C # lambda, 49 43 bajtów

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

Pełny program:

using System;

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

        Console.WriteLine(f());
    }
}

Myślę, że w przypadku pełnego programu można napisać System.DateTime.Now ..., aby uniknąć „używania Systemu”;
Taemyr

1
@Taemyr: Byłoby to dłużej, ponieważ on również tego potrzebuje Console.Write.
raznagul

2
@adrianmp: Możesz zapisać zapisz 6 bajtów, używając .ToString("d")zamiast .ToShortDateString().
raznagul

3

Noodel , 8 bajtów

]5@LaƇ⁺ƈ

Spróbuj:)


Jak to działa

]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>


Znak Ƈ jest znakiem Unicode U + 0187, który jest zbyt duży, aby można go było wyświetlić w jednym bajcie. To samo dotyczy ƈ (U + 0188). Tak więc, chociaż ma on 8 znaków, minimalna długość bajtu wynosi 10.
iFreilicht

1
@iFreilicht, Noodel używa własnego kodowania. Edytor robi wszystko w UTF-16, aby działać lepiej wizualnie, ale przed analizą zostaje zakodowany na podstawie strony kodowej Noodel .
tkellehe

3

Mathematica, 26 21 bajtów

-5 bajtów dzięki @KiranLinsuain!

Today+Quantity@"100d"

Jeśli uwzględnienie czasu jest dozwolone, możemy zapisać 2 bajty:

Now+Quantity@"100d"

1
„Now + Quantity [„ 100d ”]” znacznie go ogranicza, ale nie zawsze może działać we wszystkich wersjach.
kl.

3

C, 87 46 44 bajtów

zaoszczędził 2 bajty dzięki Albertowi Renshawowi

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

Zdałem sobie sprawę, że wyjście jest wystarczająco elastyczne, aby pozwolić na dzień tygodnia i godzinę, więc nie ma potrzeby używania localtimeanitm struktury.

Stara odpowiedź

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

Na podstawie odpowiedzi Khaled.K , ale zamiast zadzierać ze tmstrukturą, dodaje liczbę sekund odpowiadającą 100 dniom bezpośrednio dotime_t . Drukuje także tylko datę, bez godziny i dnia tygodnia.

Jak powinno się zdarzyć w programie golfowym, podczas kompilacji generowane są brzydkie ostrzeżenia.

Wypróbuj online!

Nie golfowany:

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
Golić 2 bajty zastępując 8640000z864e4
Albert Renshaw


2

Formuła IBM / Lotus Notes, 29 bajtów

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

Niestety @Adjustwymaga ciągnięcia 0'sza zaginionymihh:mm:ss .

Gdybyśmy mogli również wyświetlić czas, zmiana @Todayna @Nowoszczędziłaby 2 bajty na 27.


2

JavaScript (ES6), 44 bajty

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

25 bajtów, jeśli zwracanie daty z czasem jest dopuszczalne:

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


2

F # (53 bajty)

printf"%s"(DateTime.Now.AddDays(100.0).ToString("d"))

Nie widzę tutaj wielu odpowiedzi F #. Sława!
David Conrad,

2

Szybkie 3, 39 bajtów

print(Date(timeIntervalSinceNow:864E4))

Twierdziłbym, że nie potrzebujesz import foundation;. Swift działa tylko na iOS i jest tam automatycznie importowany.
Albert Renshaw,

Nie ma tu jeszcze zbyt wielu szybkich odpowiedzi, więc nie jestem pewien, jaki jest konsensus. Ale myślę, że masz
Matt

@Albert Swift działa również w systemach Mac OS i Linux. Nie wiem jednak, co to znaczy, czy import jest wymagany.
David Conrad,

2

C, 120 113 bajtów

#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));}

Demo na żywo

#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

JavaScript, 38 Bytes

d=new Date;d.setDate(d.getDate()+100);d

A little bit shorter than ASCII-only answer.

document.write(eval("d=new Date;d.setDate(d.getDate()+100);d"))


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

Oracle, 34 bytes

SELECT CURRENT_DATE+100 FROM DUAL;

1

Python 2 + Pandas 0.19.1, 56 51 bytes

from pandas import*
print Timestamp('now','D')+100
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.