Contagem regressiva de 100 dias


25

É comum iniciar a contagem regressiva 100 dias antes de um evento, provavelmente por causa do nosso sistema base 10. Exemplos disso podem ser encontrados em qualquer lugar:

  • 100 dias até o seu aniversário
  • 100 dias até o casamento
  • Faltam 100 dias para a eleição
  • 100 dias até a nossa graduação
  • 100 dias até a data de vencimento
  • 100 dias até a temporada de futebol
  • 100 dias para receber o crachá Fanatic

Você entendeu a foto. Parece que o 100º dia antes de um evento é o segundo lugar apenas para o evento real. Portanto, para esse desafio, preciso saber qual será a data em 100 dias, para que eu possa determinar o que devo começar a contagem regressiva também.

Entrada

Sem entrada

Saída

A data de 100 dias a partir da data atual, com base no calendário gregoriano padrão (certifique-se de considerar os anos bissextos). A saída é flexível, desde que o formato de data é humano leitura capaz (por exemplo 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Ganhando

Código golf: código mais curto em bytes


Exemplos

Daqui a 100 dias (5 de abril de 2017) é sexta-feira, 14 de julho de 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 adicionar a hora atual à saída?
Titus

1
@Titus não, apenas a data futura
NonlinearFruit

1
A maioria das respostas inclui uma data e hora agora, acho que isso deve ser permitido.
GB

1
Quando você imprime a data futura, o formato é flexível (pode incluir registro de data e hora), desde que seja legível por humanos. No entanto, a hora / data atual não é aceitável.
NonlinearFruit

5
" Por causa do nosso sistema bas 10 "? Não, se temos em binário, nós provavelmente contagem regressiva de 100 - exceto que levaria apenas quatro dias, em vez de uma centena de ...
Toby Speight

Respostas:


42

Excel, 10

=NOW()+100

Demonstração

insira a descrição da imagem aqui


1
Também funciona no Planilhas Google.
Okx, 06/04/19

11
O Excel é sempre bom para o código de golfe que envolve a análise de datas.
Engineer Toast

2
Existe um pacote de idiomas para o Excel no qual a função NOW é apresentada com apenas duas letras? Nesse caso, você pode salvar 1 byte.
IFreilicht

13
Sim, o holandês tem 'nu ()'
Tominator 7/17

2
Embora, por apenas parte data , você teria que usar =TODAY()+100ou=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit

20

Bash, 17 16 15 14 13 bytes

date -d100day

Acontece que o datecomando requer uma entrada bastante flexível para tempos relativos. Você também pode fazer coisas como 1 year, 1 week ago, yesterday, etc. É muito legal.

-1 byte ao perceber que o bash não se importa com a gramática.
-1 byte porque o espaço entre 100e dayé desnecessário.
-1 byte porque não preciso mais de aspas porque não tenho espaço na string.
-1 byte removendo o espaço após -d(obrigado somente ASCII!)


Novo comando favorito +1
NonlinearFruit

@NonlinearFruit Hah, sim, é provavelmente um dos meus comandos favoritos. Obrigado!
HyperNeutrino

Você não precisa o espaço depois-d
ASCII-only

@ Somente ASCII Oh, ok. Obrigado!
HyperNeutrino

10

PowerShell, 10 bytes

(date)+1e2

Obrigado a ConnorLSW pelo truque + 1e2.

Parece que duplos ( 1e2é um duplo) também são adicionados como dias.

Versão anterior, 12 bytes:

(date)+"100"

Aparentemente, você pode adicionar seqüências de caracteres às datas no PowerShell. A string "100"é convertida em 100 dias TimeSpan.


2
Ok, não me pergunte por que, mas mesmo que (date)+100não funciona, (date)+1e2não ... Eu acho que 1e2é realmente um doublepasso que 100é um número até que ele é compilado, ou seja, você não pode chamar 100.GetType(), mas você pode 1e2.GetType()- que é -2 e nos leva a um empate com o Excel!
colsw

@ConnorLSW Se ajudar ou 100aumentar a confusão, é visto como adicionando 100 ticks, onde a string "100"é tirada em dias. Ambos são PS válidos, mas apenas um faz o que precisamos.
6117 Matt

@ Matt 1e6ainda é um número e é adicionado como dias?
colsw

Isso é interessante então. Talvez haja mais acontecendo sob o capô, onde que atinge número superior a um limiar .... eu não sei
Matt

Eu acho que está de alguma forma relacionado ao tipo antigo DATE, que é um número de ponto flutuante de 8 bytes, com os dias sendo representados como incrementos de número inteiro. Eu acho que é isso que o Excel está usando.
Danko Durbić


6

PHP, 28 bytes

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

versão legível por humanos, 35 bytes:

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

quase legível, 34 bytes:

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

-4 bytes, se a hora da impressão também for aceita: substitua Y_m_dpor rou c.

É feriado nacional na França em 100 dias.


Os sublinhados me fizeram fazer "Por que sublinhados, é uma constante? Não, uma string OH WAIT 'SPACES' !!" Inteligente.
287 Martijn

@ Martijn Ligue E_NOTICEe Você saberá: Y_m_dé uma constante indefinida e o PHP assume uma string. Isso funciona com qualquer palavra válida (incluindo todos os nomes de função) para além de palavras-chave , constantes predefinidas e maiúsculas e minúsculas true, falsee null.
Titus

5

Ruby , 16 bytes

p Time.now+864e4

Experimente online!


Ia responder isso, legal. Mas eu recebo resultados diferentes para 864e4e 8640000não sei bem o porquê. Eu culpo o TIO. EDIT: quando você usa p, os dois valores produzem um resultado diferente. Mas quando você usa puts, eles são iguais.
snail_

Não entendo, obtenho o mesmo resultado com ambos. Você pode postar um exemplo? Talvez isso depende da localidade?
GB

p Time.now+864e4está em torno de 4 dias atrás p Time.now+8640000no TIO. Eu tentei várias vezes. No entanto, se você usar puts, essa distinção não existe. Realmente não sei se meu local é importante, o leste dos EUA deve ser bem normal: PI acho que vou tentar executá-lo no meu próprio PC quando chegar em casa.
snail_

5

Javascript, 29 26 25 bytes

Economizou 3 bytes graças a @ ASCII-only!

Guardado 1 byte graças a @JohanKarlsson

new Date(+new Date+864e7)

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


1
Você pode usar 864e7em vez de864*10e6
ASCII-only

1
Você pode salvar 1 byte usando +new Dateem vez deDate.now()
Johan Karlsson

1
Este é um trecho. Você precisa incluirconsole.log
mbomb007


4

Vim, 27 bytes

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

experimente online!

insira a descrição da imagem aqui

Edit: Removido espaço desnecessário char.


2
Se você estiver usando Linux date, um de uma página é date -d100day, não tenho certeza se ele vai ajudar embora
ASCII-only

Eu testei com :r!date +\%F -d100dayisso também funciona (pelo menos no meu pc (C)), mas é o mesmo que HyperNeutrinojá uso no bash.
12431234123412341234123

Você pode salvar bytes apenas eliminando o vim e fazendo isso no bash.
David Conrad

4

MATL , 9 bytes

Z'100+1XO

O formato de saída é 15-Jul-2017(que eu acho mais legível). Mude 1XOpara 2XOpara obter o formato usado nos exemplos 07/15/17,.

Experimente online!

Explicação

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 bytes

SELECT DATEADD(D,100,GETDATE())

Você pode usar em dvez de DAYe remover os espaços internos DATEADD.
mbomb007

Mesmo eu não sabia que você poderia usar d. Eu uso ddou dayna prática. Eu apenas tentei e funcionou.
mbomb007

3

Java 8, 77 , 61 bytes

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

Experimente online!


Existe uma razão para você não incluir o padrão? (ou seja, 'classe A {public static...') Para Java, acredito que é necessário para um programa completo. Você poderia fazer uma lambda ()->java.time.LocalDate.now().plusDays(100).
NonlinearFruit

Eu tinha isso antes de editar minha resposta. Eram 94 bytes junto com o clichê. Eu novo no golfe com java. portanto, não tenho certeza se devo incluir isso!
Keerthana Prabhakaran

2
Os envios (a menos que especificado de outra forma) podem ser um programa completo (executável por algum intérprete sem modificação) ou uma função.
NonlinearFruit

3

C #, 103 97 bytes

Obrigado ao raznagul por salvar 6 bytes!

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

Programa completo que lê a data atual, adiciona 100 dias e exibe o resultado em M/d/YYYYformato.

Você pode alterar o formato da data adicionando mais alguns bytes:

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

Para eliminar o código padrão - o C # não é exatamente conhecido por ser muito compacto - uma função anônima pode ser usada:

C # lambda, 49 43 bytes

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

Programa completo:

using System;

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

        Console.WriteLine(f());
    }
}

Para o programa completo, acho que você pode escrever System.DateTime.Now ... para evitar "using System;"
Taemyr

1
@ Taemyr: Isso seria mais longo, pois ele também precisa Console.Write.
raznagul

2
@adrianmp: Você pode salvar 6 bytes usando em .ToString("d")vez de .ToShortDateString().
raznagul

3

Noodel , 8 bytes

]5@LaƇ⁺ƈ

Tente:)


Como funciona

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


O caractere Ƈ é o caractere unicode U + 0187, que é muito grande para ser exibido em um único byte. O mesmo vale para ƈ (U + 0188). Assim, enquanto este é 8 caracteres, o byte de comprimento mínimo é de 10.
iFreilicht

1
@iFreilicht, Noodel usa sua própria codificação. O editor faz tudo em UTF-16 para funcionar melhor visualmente, mas é codificado com base na página de código da Noodel antes de analisar.
tkellehe

3

Mathematica, 26 21 bytes

-5 bytes graças a @KiranLinsuain!

Today+Quantity@"100d"

Se a inclusão da hora for permitida, podemos salvar 2 bytes:

Now+Quantity@"100d"

1
"Now + Quantity [" 100d "]" reduz bastante, mas nem sempre funciona em todas as versões.
kl

3

C, 87 46 44 bytes

economizou 2 bytes graças a Albert Renshaw

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

Percebi que a saída é flexível o suficiente para permitir o dia da semana e o horário, por isso não há necessidade de usar localtimeou a tmestrutura.

Resposta antiga

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

Com base na resposta de Khaled.K , mas em vez de mexer com a tmestrutura, adiciona o número de segundos equivalente a 100 dias diretamente ao time_tvalor. Também imprime apenas a data, sem hora ou dia da semana.

Como deve acontecer em um programa de golfe, alguns avisos feios são gerados na compilação.

Experimente 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
Shave 2 bytes, substituindo 8640000com864e4
Albert Renshaw


2

Fórmula IBM / Lotus Notes, 29 bytes

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

Infelizmente, @Adjustexige o rastreio 0'sdos desaparecidos hh:mm:ss.

Se tivéssemos permissão para exibir a hora também, a alteração @Todaypara @Nowpouparia 2 bytes para 27.


2

JavaScript (ES6), 44 bytes

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

25 bytes se o retorno de uma data com a hora for aceitável:

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


2

F # (53 bytes)

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

Não vejo muitas respostas em F # aqui. Parabéns!
David Conrad

2

Swift 3, 39 bytes

print(Date(timeIntervalSinceNow:864E4))

Eu diria que você não precisa do import foundation;. O Swift é executado apenas no iOS e é importado automaticamente para lá.
Albert Renshaw

Ainda não há muitas respostas Swift aqui, por isso não tenho certeza de qual é o consenso. Mas eu acho que você tem um bom ponto, eu vou remover a importação :)
Matt

O @Albert Swift também roda em Mac OS e Linux. Não sei o que isso significa para saber se a importação é necessária.
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));}

Demonstração ao 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 não me engano, você não precisa considerar o #include ...clichê ao enviar funções. (Respostas Java, por exemplo, não precisa importnesse caso)
Cássio Renan

@ CássioRenan Em Java, você não precisa contar as importações padrão java.lang.*, assim como não contamos stdio.he stdlib.hem C. Mas mesmo em java, você precisa considerar importações personalizadas ou colocar o caminho no nome da classe como java.util.Date, e isso conta na sua pontuação.
precisa saber é o seguinte

2
Por usando printf()seria puts()também não funciona?
12431234123412341234123

2

PowerShell, 23

(get-date).adddays(100)

Esta é a minha primeira tentativa, por favor, me dê um feedback construtivo. Obrigado!



1

Python, 63 bytes

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

Solução muito simples realmente. Como o datetime.now()resultado é o mesmo typeque o resultado de timedelta, ele adiciona os dois juntos.


Não precisa ser uma função. Você pode remover o lambda:e ainda seria um programa completo.
NonlinearFruit

@NonlinearFruit Sim, mas printteria que ser adicionado e isso torna o mesmo número de bytes.

Se você usar Python 2, você pode remover os suportes printna salvar 1 byte
Morto Possum

a days=é opcional, que iria guardar 5 + 1 bytes (python2 printsuportes 's)
Felipe Nardi Batista

Golfed até 57 bytes:from datetime import*;print datetime.now()+timedelta(100)
Sr. Xcoder 6/17


1

Golang, 58 bytes

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

Programa completo

package main

import . "time"
import . "fmt"

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

experimente 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.