Conto alla rovescia per 100 giorni


25

È comune iniziare il conto alla rovescia 100 giorni prima di un evento, probabilmente a causa del nostro sistema di base 10. Esempi di questo possono essere trovati ovunque:

  • 100 giorni fino al tuo compleanno
  • 100 giorni fino al matrimonio
  • 100 giorni fino alle elezioni
  • 100 giorni fino alla nostra laurea
  • 100 giorni fino alla data di scadenza
  • 100 giorni fino alla stagione calcistica
  • 100 giorni prima di ottenere il badge Fanatic

Ottieni l'immagine. Sembra che il centesimo giorno prima di un evento sia il secondo posto solo rispetto all'evento reale. Quindi, per questa sfida, ho bisogno di sapere quale sarà la data tra 100 giorni, in modo da poter determinare anche quello che dovrei iniziare a contare.

Ingresso

Nessun input

Produzione

La data a 100 giorni dalla data corrente in base al calendario gregoriano standard (assicurarsi di tenere conto degli anni bisestili). Uscita è flessibile finché il formato della data è umano lettura grado (ad esempio 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

vincente

Codice golf: il codice più breve in byte


Esempi

100 giorni da oggi (5 aprile 2017) è venerdì 14 luglio 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
Posso aggiungere l'ora corrente all'output?
Tito,

1
@Titus no, solo la data futura
NonlinearFruit

1
La maggior parte delle risposte include ora una data e ora, penso che questo dovrebbe essere consentito.
GB

1
@IT Quando si stampa la data futura, il formato è flessibile (potrebbe includere il timestamp) purché sia ​​leggibile dall'uomo. Tuttavia, l'ora / la data attuali non sono accettabili.
NonlinearFruit,

5
" A causa del nostro sistema bas 10 "? No, se contassimo in binario, probabilmente faremmo un conto alla rovescia da 100 - tranne che richiederebbe solo quattro giorni, anziché un centinaio ...
Toby Speight,

Risposte:


42

Excel, 10

=NOW()+100

Dimostrazione

inserisci qui la descrizione dell'immagine


1
Funziona anche in Fogli Google.
Okx,

11
Excel è sempre utile per il golf del codice che prevede l'analisi delle date.
Ingegnere Toast,

2
Esiste un pacchetto linguistico per Excel in cui la funzione NOW è spiegata con solo due lettere? In tal caso, è possibile salvare 1 byte.
iFreilicht,

13
Sì, l'olandese ha 'nu ()'
Tominator

2
Anche se, solo per data , dovresti usare =TODAY()+100o=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit

20

Bash, 17 16 15 14 13 byte

date -d100day

Si scopre che il datecomando accetta alcuni input piuttosto flessibili per i tempi relativi. Si può anche fare cose come 1 year, 1 week ago, yesterday, ecc E 'piuttosto fresco.

-1 byte comprendendo che a bash non importa della grammatica.
-1 byte perché lo spazio tra 100e daynon è necessario.
-1 byte perché non ho più bisogno delle virgolette perché non ho uno spazio nella stringa.
-1 byte rimuovendo lo spazio dopo -d(grazie solo ASCII!)


Nuovo comando preferito +1
NonlinearFruit

@NonlinearFruit Hah, sì, è probabilmente uno dei miei comandi preferiti. Grazie!
HyperNeutrino,

Non è necessario lo spazio dopo-d
ASCII-solo

@ Solo ASCII Oh, ok. Grazie!
HyperNeutrino,

10

PowerShell, 10 byte

(date)+1e2

Grazie a ConnorLSW per il trucco + 1e2.

Sembra che i doppi ( 1e2è un doppio) vengano aggiunti anche come giorni.

Versione precedente, 12 byte:

(date)+"100"

Apparentemente puoi aggiungere stringhe alle date in PowerShell. La stringa "100"viene convertita in 100 giorni- TimeSpan.


2
Ok, non chiedermi perché, ma anche se (date)+100non funziona, (date)+1e2credo ... in 1e2realtà è un numero doubleche 100è un numero fino a quando non viene compilato, cioè non puoi chiamare 100.GetType()ma puoi 1e2.GetType()- è -2 e ci porta a un pareggio con Excel!
Colsw,

@ConnorLSW Se aiuta o si aggiunge alla confusione 100si vede come l'aggiunta di 100 tick in cui la stringa "100"viene considerata come giorni. Entrambi sono validi PS ma solo uno fa ciò di cui abbiamo bisogno.
Matt,

@Matt 1e6è ancora un numero e viene aggiunto come giorni però?
Colsw,

È interessante quindi. Forse c'è di più in corso sotto il cofano in cui quel numero supera una soglia .... Non lo so
Matt

Penso che sia in qualche modo correlato al vecchio tipo DATE che è un numero in virgola mobile a 8 byte con giorni rappresentati come incrementi di numero intero. Immagino sia quello che sta usando Excel.
Danko Durbić,


6

PHP, 28 byte

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

versione leggibile dall'uomo, 35 byte:

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

quasi leggibile, 34 byte:

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

-4 byte se viene accettata anche la stampa dell'ora: sostituire Y_m_dcon ro c.

È festa nazionale in Francia tra 100 giorni.


I trattini bassi mi hanno fatto fare "Perché i trattini bassi, è una costante? No, una stringa OH ASPETTA" SPAZI "!!" Intelligente.
Martijn

@Martijn Attiva E_NOTICEe lo saprai: Y_m_dè una costante indefinita e PHP assume una stringa. Funziona con qualsiasi parola valida (inclusi tutti i nomi delle funzioni) oltre a parole chiave , costanti predefinite e maiuscole / minuscole true, falsee null.
Tito

5

Rubino , 16 byte

p Time.now+864e4

Provalo online!


Stavo per rispondere a questa domanda, carino. Ma ottengo risultati diversi per 864e4e 8640000e non so bene perché. Incolpo TIO. EDIT: quando si usano p, i due valori producono un risultato diverso. Ma quando usi puts, sono gli stessi.
snail_

Non capisco, ottengo lo stesso risultato con entrambi. Puoi pubblicare un esempio? Forse dipende dalle impostazioni locali?
GB

p Time.now+864e4è di circa 4 giorni indietro p Time.now+8640000su TIO. L'ho provato più volte. Tuttavia, se si utilizza puts, questa distinzione non esiste. Non so davvero se le mie impostazioni locali siano importanti, US East dovrebbe essere abbastanza normale: PI suppongo che proverò a eseguirlo sul mio PC quando torno a casa.
lumaca_

5

Javascript, 29 26 25 byte

Salvato 3 byte grazie solo a @ ASCII!

Salvato 1 byte grazie a @JohanKarlsson

new Date(+new Date+864e7)

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


1
È possibile utilizzare 864e7invece di864*10e6
ASCII solo il

1
È possibile salvare 1 byte utilizzando +new Dateinvece diDate.now()
Johan Karlsson il

1
Questo è un frammento. Devi includereconsole.log
mbomb007


4

Vim, 27 byte

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

provalo online!

enter image description here

Modifica: rimosso il carattere spaziale non necessario.


2
Se stai usando Linux date, quello in questa pagina è date -d100day, non sono sicuro che possa aiutare però
solo ASCII il

Lo collaudo con :r!date +\%F -d100dayquesto funziona anche (almeno sul mio pc (C)), ma è lo stesso che HyperNeutrinogià uso in bash.
12431234123412341234123

Puoi salvare byte semplicemente eliminando vim e facendolo in bash.
David Conrad,

4

MATL , 9 byte

Z'100+1XO

Il formato di output è 15-Jul-2017(che trovo più leggibile). Cambiare 1XOper 2XOottenere il formato utilizzato negli esempi, 07/15/17.

Provalo online!

Spiegazione

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 byte

SELECT DATEADD(D,100,GETDATE())

È possibile utilizzare danziché DAYe rimuovere gli spazi all'interno DATEADD.
mbomb007,

Anche io non sapevo che potessi usare d. Io uso ddo dayin pratica. L'ho appena provato e ha funzionato.
mbomb007,

3

Java 8, 77 , 61 byte

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

Provalo online!


C'è un motivo per non includere la piastra della caldaia? (es. "classe A {statico pubblico ...") Per Java, credo sia necessario per un programma completo. Potresti fare una lambda ()->java.time.LocalDate.now().plusDays(100).
NonlinearFruit

L'ho avuto prima di modificare la mia risposta. Era di 94 byte insieme alla piastra della caldaia. Ho iniziato a giocare a golf con Java. quindi non sono sicuro di doverlo includere!
Keerthana Prabhakaran,

2
Gli invii (se non diversamente specificato) possono essere un programma completo (eseguibile da alcuni interpreti senza modifiche) o una funzione.
NonlinearFruit

3

C #, 103 97 byte

Grazie a raznagul per aver salvato 6 byte!

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

Programma completo che legge la data corrente, aggiunge 100 giorni e visualizza il risultato in M/d/YYYYformato.

È possibile modificare il formato della data aggiungendo qualche altro byte:

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

Per eliminare il codice boilerplate - C # non è esattamente noto per essere molto compatto - è possibile utilizzare una funzione anonima:

C # lambda, 49 43 byte

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

Programma completo:

using System;

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

        Console.WriteLine(f());
    }
}

Per il programma completo penso che tu possa scrivere System.DateTime.Now ... per evitare di "usare System;"
Taemyr,

1
@Taemyr: sarebbe più lungo, anche perché ne ha bisogno Console.Write.
raznagul,

2
@adrianmp: è possibile salvare salvare 6 byte utilizzando .ToString("d")invece di .ToShortDateString().
raznagul,

3

Noodel , 8 byte

]5@LaƇ⁺ƈ

Provalo:)


Come funziona

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


Il carattere Ƈ è il carattere unicode U + 0187, che è troppo grande per essere visualizzato in un singolo byte. Lo stesso vale per ƈ (U + 0188). Quindi, mentre questo è lungo 8 caratteri, la lunghezza minima in byte è 10.
iFreilicht

1
@iFreilicht, Noodel utilizza la propria codifica. L'editor fa tutto in UTF-16 per funzionare visivamente meglio, ma viene codificato in base alla tabella codici Noodel prima dell'analisi.
tkellehe,

3

Mathematica, 26 21 byte

-5 byte grazie a @KiranLinsuain!

Today+Quantity@"100d"

Se è consentito includere l'ora, è possibile salvare 2 byte:

Now+Quantity@"100d"

1
"Now + Quantity [" 100d "]" lo abbassa un po ', ma potrebbe non funzionare sempre su tutte le versioni.
kl

3

C, 87 46 44 byte

salvato 2 byte grazie ad Albert Renshaw

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

Ho realizzato che l'output è abbastanza flessibile da consentire il giorno della settimana e l'ora, quindi non è necessario utilizzare localtimeo la tmstruttura.

Vecchia risposta

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

Basato sulla risposta di Khaled.K , ma invece di fare casini con la tmstruttura, aggiunge il numero di secondi equivalenti a 100 giorni direttamente al time_tvalore. Stampa anche solo la data, senza ora o giorno della settimana.

Come dovrebbe accadere in un programma golf, durante la compilazione vengono generati alcuni brutti avvisi.

Provalo online!

Ungolfed:

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
Radere 2 byte sostituendo 8640000con864e4
Albert Renshaw il


2

Formula IBM / Lotus Notes, 29 byte

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

Purtroppo @Adjustrichiede il trailing 0'sper i dispersi hh:mm:ss.

Se ci fosse permesso di visualizzare anche l'ora, cambiando @Todayin @Nowsi risparmierebbero 2 byte per 27.


2

JavaScript (ES6), 44 byte

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

25 byte se è accettabile la restituzione di una data con l'ora:

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


2

F # (53 byte)

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

Non vedo molte risposte F # qui. Complimenti!
David Conrad,

2

Swift 3, 39 byte

print(Date(timeIntervalSinceNow:864E4))

Direi che non ti serve import foundation;. Swift funziona solo su iOS e viene importato automaticamente lì.
Albert Renshaw,

Non ci sono ancora troppe risposte Swift qui, quindi non sono sicuro di quale sia il consenso. Ma penso che tu abbia un buon punto, rimuoverò l'importazione :)
Matt

@Albert Swift funziona anche su Mac OS e Linux. Non so cosa significhi se è richiesta l'importazione.
David Conrad,

2

C, 120 113 byte

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

Dimostrazione dal vivo

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

Se non sbaglio, non è necessario tenere conto della #include ...caldaia quando si inviano le funzioni. (Java risponde, ad esempio, non è necessario importin quel caso)
Cássio Renan,

@ CássioRenan in Java non è necessario contare le importazioni predefinite come java.lang.*, proprio come non contiamo stdio.he stdlib.hin C. Ma anche in Java, è necessario considerare le importazioni personalizzate o inserire il percorso nel nome della classe come java.util.Date, e questo conta nel tuo punteggio.
Khaled.K,

2
Perché usare printf()sarebbe puts()anche non funzionare?
12431234123412341234123

2

PowerShell, 23

(get-date).adddays(100)

Questo è il mio primo tentativo in assoluto, quindi per favore mi dia un feedback costruttivo. Grazie!



1

Python, 63 byte

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

Soluzione molto semplice davvero. Poiché il datetime.now()risultato è lo stesso typedel risultato timedelta, aggiunge felicemente i due insieme.


Non deve essere una funzione. È possibile rimuovere il lambda:e sarebbe comunque un programma completo.
NonlinearFruit

@NonlinearFruit Sì, ma printdovrebbe essere aggiunto e questo rende lo stesso numero di byte.

Se usi Python 2, puoi rimuovere le parentesi quadre printper salvare 1 byte
Dead Possum

il days=è opzionale, che farebbe risparmiare 5 + 1 byte (python2 printparentesi s')
Felipe Nardi Batista

Golfato fino a 57 byte:from datetime import*;print datetime.now()+timedelta(100)
Mr. Xcoder

1

JavaScript, 38 byte

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

Un po 'più corto di risposta solo ASCII .

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


1

Golang, 58 byte

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

Programma completo

package main

import . "time"
import . "fmt"

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

provalo online!


1

Oracle, 34 byte

SELECT CURRENT_DATE+100 FROM DUAL;

1

Python 2 + Panda 0.19.1, 56 51 byte

from pandas import*
print Timestamp('now','D')+100
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.