Compte à rebours de 100 jours


25

Il est courant de démarrer un compte à rebours 100 jours avant un événement, probablement à cause de notre système de base 10. Des exemples de cela peuvent être trouvés partout:

  • 100 jours avant votre anniversaire
  • 100 jours avant le mariage
  • 100 jours avant l'élection
  • 100 jours avant notre diplôme
  • 100 jours avant sa date d'échéance
  • 100 jours avant la saison de football
  • 100 jours avant d'obtenir le badge Fanatic

Vous obtenez l'image. Il semble que le 100e jour avant un événement ne soit la deuxième place que pour l'événement réel. Donc, pour ce défi, j'ai besoin de savoir quelle sera la date dans 100 jours, afin de pouvoir déterminer ce que je dois aussi commencer à décompter.

Contribution

Pas d'entrée

Sortie

La date à 100 jours de la date actuelle basée sur le calendrier grégorien standard (assurez-vous de tenir compte des années bissextiles). La sortie est souple tant que le format de la date est en mesure de lecture humaine (par exemple 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Gagnant

Code golf: code le plus court en octets


Exemples

100 jours à compter d'aujourd'hui (5 avril 2017) est le vendredi 14 juillet 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
Puis-je ajouter l'heure actuelle à la sortie?
Titus

1
@Titus no, just the future date
NonlinearFruit

1
La plupart des réponses incluent une date et une heure maintenant, je pense que cela devrait être autorisé.
GB

1
@GB Lorsque vous affichez la date future, le format est flexible (peut inclure un horodatage) tant qu'il est lisible par l'homme. Cependant, l'heure et la date actuelles ne sont pas acceptables.
NonlinearFruit

5
"A cause de notre système bas 10 "? Non, si nous comptions en binaire, nous décomposerions probablement à partir de 100 - sauf que cela ne prendrait que quatre jours, plutôt que cent ...
Toby Speight

Réponses:


42

Excel, 10

=NOW()+100

Manifestation

entrez la description de l'image ici


1
Fonctionne également dans Google Sheets.
2017

11
Excel est toujours bon pour le golf de code qui implique l'analyse des dates.
Ingénieur Toast

2
Existe-t-il un pack de langue pour Excel dans lequel la fonction NOW est énoncée avec seulement deux lettres? Dans ce cas, vous pouvez enregistrer 1 octet.
iFreilicht

13
Oui, le néerlandais a 'nu ()'
Tominator

2
Bien que, par partie de date uniquement , vous devez utiliser =TODAY()+100ou=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit

20

Bash, 17 16 15 14 13 octets

date -d100day

Il s'avère que la datecommande prend une entrée assez flexible pour les synchronisations relatives. Vous pouvez aussi faire des choses comme 1 year, 1 week ago, yesterday, etc. Il est assez cool.

-1 octet en réalisant que bash ne se soucie pas de la grammaire.
-1 octet car l'espace entre 100et dayn'est pas nécessaire.
-1 octet car je n'ai plus besoin de guillemets car je n'ai pas d'espace dans la chaîne.
-1 octet en supprimant l'espace après -d(merci ASCII uniquement!)


Nouvelle commande préférée +1
NonlinearFruit

@NonlinearFruit Hah, oui, c'est probablement l'une de mes commandes préférées. Merci!
HyperNeutrino

Vous n'avez pas besoin de l'espace après-d
ASCII uniquement

@ ASCII uniquement Oh, d'accord. Merci!
HyperNeutrino

10

PowerShell, 10 octets

(date)+1e2

Merci à ConnorLSW pour l'astuce + 1e2.

Il semble que les doubles ( 1e2soit un double) soient également ajoutés en tant que jours.

Version précédente, 12 octets:

(date)+"100"

Apparemment, vous pouvez ajouter des chaînes aux dates dans PowerShell. La chaîne "100"est convertie en 100 jours TimeSpan.


2
Ok ne me demandez pas pourquoi, mais même si (date)+100ne fonctionne pas, (date)+1e2ne ... je suppose 1e2est en fait un doublealors 100est un nombre jusqu'à ce qu'il soit compilé, soit vous ne pouvez pas appeler 100.GetType()mais vous pouvez 1e2.GetType()- que de -2 et nous amène à un tirage au sort avec Excel!
colsw

@ConnorLSW Si cela aide ou ajoute à la confusion, cela 100est considéré comme l'ajout de 100 ticks alors que la chaîne "100"est prise en jours. Les deux sont des PS valides mais un seul fait ce dont nous avons besoin.
Matt

@Matt 1e6est toujours un nombre et est ajouté en jours cependant?
colsw

C'est intéressant alors. Peut-être qu'il y a plus de choses sous le capot où ce nombre atteint plus d'un seuil ... Je ne sais pas
Matt

Je pense qu'il est en quelque sorte lié à l'ancien type DATE, qui est un nombre à virgule flottante de 8 octets, les jours étant représentés par incréments entiers. Je suppose que c'est ce qu'Excel utilise.
Danko Durbić


6

PHP, 28 octets

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

version lisible par l'homme, 35 octets:

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

presque lisible, 34 octets:

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

-4 octets si l'impression est également acceptée: remplacer Y_m_dpar rou c.

C'est la fête nationale en France en 100 jours.


Les soulignés m'ont fait faire "Pourquoi les soulignés, est-ce une constante? Non, une chaîne OH WAIT 'SPACES' !!" Intelligent.
Martijn

@Martijn Turn on E_NOTICEand You´ll know: Y_m_dest une constante indéfinie et PHP suppose une chaîne. Cela fonctionne avec un mot valide (y compris tous les noms de fonction) en dehors des mots - clés , des constantes prédéfinies et insensibles à la casse true, falseet null.
Titus

5

Ruby , 16 octets

p Time.now+864e4

Essayez-le en ligne!


J'allais répondre à cette question, bien. Mais je reçois des résultats différents pour 864e4et 8640000je ne sais pas pourquoi. Je blâme TIO. EDIT: lorsque vous utilisez p, les deux valeurs produisent un résultat différent. Mais quand vous utilisez puts, ce sont les mêmes.
snail_

Je ne comprends pas, j'obtiens le même résultat avec les deux. Pouvez-vous poster un exemple? Cela dépend peut-être des paramètres régionaux?
GB

p Time.now+864e4a environ 4 jours de retard p Time.now+8640000sur TIO. Je l'ai essayé plusieurs fois. Cependant, si vous utilisez puts, cette distinction n'existe pas. Je ne sais pas vraiment si mes paramètres régionaux importent, US East devrait être assez normal: je suppose que j'essaierai de l'exécuter sur mon propre PC lorsque je rentrerai.
snail_

5

Javascript, 29 26 25 octets

Sauvegardé 3 octets grâce à @ ASCII uniquement!

1 octet enregistré grâce à @JohanKarlsson

new Date(+new Date+864e7)

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


1
Vous pouvez utiliser à la 864e7place de864*10e6
ASCII uniquement

1
Vous pouvez enregistrer 1 octet en utilisant +new Dateau lieu deDate.now()
Johan Karlsson

1
Ceci est un extrait. Vous devez inclureconsole.log
mbomb007


4

Vim, 27 octets

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

essayez-le en ligne!

entrez la description de l'image ici

Edit: Suppression du caractère d'espace inutile.


2
Si vous utilisez Linux date, celui de cette page est date -d100day, je ne sais pas si cela vous aidera
ASCII uniquement

Je le teste avec :r!date +\%F -d100daycela fonctionne aussi (au moins sur mon pc (C)), mais c'est le même que HyperNeutrinodéjà utilisé en bash.
12431234123412341234123

Euh, vous pouvez économiser des octets en éliminant simplement vim et en le faisant dans bash.
David Conrad

4

MATL , 9 octets

Z'100+1XO

Le format de sortie est 15-Jul-2017(que je trouve le plus lisible). Changer 1XOpour 2XOobtenir le format utilisé dans les exemples, 07/15/17.

Essayez-le en ligne!

Explication

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 octets

SELECT DATEADD(D,100,GETDATE())

Vous pouvez utiliser à la dplace DAYet supprimer les espaces à l'intérieur DATEADD.
mbomb007

Même moi , je ne savais pas que vous pouviez utiliser d. J'utilise ddou dayen pratique. Je viens de l'essayer et cela a fonctionné.
mbomb007

3

Java 8, 77 , 61 octets

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

Essayez-le en ligne!


Y a-t-il une raison pour laquelle vous n'incluez pas le passe-partout? (c'est-à-dire 'classe A {public static...') Pour Java, je crois que at est nécessaire pour un programme complet. Vous pourriez faire un lambda ()->java.time.LocalDate.now().plusDays(100).
NonlinearFruit

Je l'avais avant de modifier ma réponse. Il était de 94 octets avec le passe-partout. Je suis nouveau au golf avec java. par conséquent, je ne sais pas si je devais inclure cela!
Keerthana Prabhakaran

2
Les soumissions (sauf indication contraire) peuvent être soit un programme complet (exécutable par un interprète sans modification) ou une fonction.
NonlinearFruit

3

C #, 103 97 octets

Merci à raznagul pour avoir économisé 6 octets!

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

Programme complet qui lit la date actuelle, ajoute 100 jours et affiche le résultat au M/d/YYYYformat.

Vous pouvez changer le format de date en ajoutant quelques octets supplémentaires:

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

Pour éliminer le code passe-partout - C # n'est pas exactement connu pour être très compact - une fonction anonyme peut être utilisée:

C # lambda, 49 43 octets

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

Programme complet:

using System;

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

        Console.WriteLine(f());
    }
}

Pour le programme complet, je pense que vous pouvez écrire System.DateTime.Now ... pour éviter "d'utiliser System;"
Taemyr

1
@Taemyr: Ce serait plus long, car il en a également besoin Console.Write.
raznagul

2
@adrianmp: vous pouvez économiser 6 octets en utilisant .ToString("d")au lieu de .ToShortDateString().
raznagul

3

Noodel , 8 octets

]5@LaƇ⁺ƈ

Essayez-le :)


Comment ça marche

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


Le caractère Ƈ est le caractère unicode U + 0187, qui est trop grand pour être affiché dans un seul octet. Il en va de même pour ƈ (U + 0188). Donc, bien que ce soit 8 caractères de long, la longueur d'octet minimum est 10.
iFreilicht

1
@iFreilicht, Noodel utilise son propre encodage. L'éditeur fait tout en UTF-16 pour mieux fonctionner visuellement, mais est encodé en fonction de la page de codes Noodel avant l'analyse.
tkellehe

3

Mathematica, 26 21 octets

-5 octets grâce à @KiranLinsuain!

Today+Quantity@"100d"

Si l'inclusion du temps est autorisée, nous pouvons économiser 2 octets:

Now+Quantity@"100d"

1
"Now + Quantity [" 100d "]" le réduit un peu, mais peut ne pas toujours fonctionner sur toutes les versions.
kl

3

C, 87 46 44 octets

enregistré 2 octets grâce à Albert Renshaw

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

J'ai réalisé que la sortie est suffisamment flexible pour permettre le jour de la semaine et l'heure, il n'y a donc pas besoin d'utiliser localtimeou de la tmstructure du tout.

Ancienne réponse

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

Basé sur la réponse de Khaled.K , mais au lieu de jouer avec la tmstructure, ajoute le nombre de secondes équivalent à 100 jours directement à la time_tvaleur. Il imprime également uniquement la date, sans heure ni jour de la semaine.

Comme cela devrait se produire sur un programme de golf, certains avertissements laids sont générés lors de la compilation.

Essayez-le en ligne!

Non golfé:

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
Rasez 2 octets en remplaçant 8640000par864e4
Albert Renshaw


2

Formule IBM / Lotus Notes, 29 octets

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

Nécessite malheureusement @Adjustla fuite 0'spour les disparus hh:mm:ss.

Si nous étions également autorisés à afficher l'heure, le fait de changer @Todaypour @Nowéconomiserait 2 octets pour 27.


2

JavaScript (ES6), 44 octets

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

25 octets si le retour d'une date avec l'heure est acceptable:

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


2

F # (53 octets)

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

Je ne vois pas beaucoup de réponses F # ici. Gloire!
David Conrad

2

Swift 3, 39 octets

print(Date(timeIntervalSinceNow:864E4))

Je dirais que vous n'en avez pas besoin import foundation;. Swift fonctionne uniquement sur iOS et y est importé automatiquement.
Albert Renshaw

Il n'y a pas encore trop de réponses Swift ici, donc je ne sais pas quel est le consensus. Mais je pense que vous avez un bon point, je vais supprimer l'importation :)
Matt

@Albert Swift fonctionne également sur Mac OS et Linux. Je ne sais pas ce que cela signifie pour savoir si l'importation est requise, cependant.
David Conrad

2

C, 120 113 octets

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

Démo en direct

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

Si je ne me trompe pas, vous n'avez pas besoin de tenir compte du passe- #include ...partout lors de la soumission des fonctions. (Les réponses Java, par exemple, n'ont pas besoin importdans ce cas)
Cássio Renan

@ CássioRenan en Java, vous n'avez pas besoin de compter les importations par défaut comme java.lang.*, tout comme la façon dont nous ne comptons pas stdio.het stdlib.hen C. Mais même en java, vous devez considérer les importations personnalisées ou mettre le chemin dans le nom de classe comme java.util.Date, et cela compte dans votre score.
Khaled.K

2
Pourquoi utiliser printf()ne fonctionnerait puts()pas aussi?
12431234123412341234123

2

PowerShell, 23

(get-date).adddays(100)

Ceci est mon premier essai, merci de me faire part de vos commentaires constructifs. Merci!


2

R (REPL), 14 octets

Sys.Date()+100

Essayez-le sur Ideone .


1
Ceci est un extrait. Votre code est requis pour sortir le résultat, soit comme le résultat d'une fonction, soit vers STDOUT en tant que programme complet.
mbomb007


@ mbomb007 Les réponses REPL sont autorisées , mais elles sont considérées comme une langue distincte.
Dennis

@Dennis Il n'était pas répertorié comme REPL auparavant.
mbomb007

1

Python, 63 octets

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

Solution très simple vraiment. Parce que le datetime.now()résultat est le même typeque le résultat de timedelta, il ajoute joyeusement les deux ensemble.


Ce ne doit pas être une fonction. Vous pouvez supprimer le lambda:et ce serait toujours un programme complet.
NonlinearFruit

@NonlinearFruit Oui mais printdevrait être ajouté et cela fait le même nombre d'octets.

Si vous utilisez Python 2, vous pouvez supprimer les crochets printpour économiser 1 octet
Dead Possum

le days=est facultatif, cela permettrait d'économiser 5 + 1 octets (les crochets printde python2 )
Felipe Nardi Batista

Golfé jusqu'à 57 octets:from datetime import*;print datetime.now()+timedelta(100)
M. Xcoder


1

Golang, 58 octets

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

Programme complet

package main

import . "time"
import . "fmt"

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

essayez-le en ligne!


1

Oracle, 34 octets

SELECT CURRENT_DATE+100 FROM DUAL;

1

Python 2 + Pandas 0.19.1, 56 51 octets

from pandas import*
print Timestamp('now','D')+100
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.