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.