100 Gün Geri Sayım


25

Muhtemelen 10 taban sistemimizden dolayı, bir olaydan 100 gün önce geri sayıma başlamak yaygındır. Bunun örnekleri her yerde bulunabilir:

  • Doğum gününe 100 gün
  • Düğüne kadar 100 gün
  • Seçime kadar 100 gün
  • Mezuniyetimize 100 gün kaldı
  • Son ödeme tarihine 100 gün kaldı
  • Futbol sezonuna 100 gün kaldı
  • Fanatik rozeti alana kadar 100 gün

Resmi aldın. Bir etkinliğin 100. günü, yalnızca gerçek etkinliğe ikinci sırada. Bu nedenle, bu meydan okuma için 100 gün içinde tarihin ne olacağını bilmem gerekiyor, böylece neyi de saymaya başlayacağımı belirleyebiliyorum.

Giriş

Giriş yok

Çıktı

Standart Gregoryen Takvimi'ne göre geçerli tarihten itibaren 100 gün (Artık yılları hesaba kattığınızdan emin olun). Çıktı sürece tarih biçimi olduğu gibi esnektir insan salt mümkün (örneğin 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Kazanan

Code golf: bayt cinsinden en kısa kod


Örnekler

Bugünden 100 gün (5 Nisan 2017), 14 Temmuz 2017, Cuma.

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
Geçerli saati çıktıya ekleyebilir miyim?
Titus,

1
@Titus no, sadece gelecek tarih
NonlinearFruit

1
Cevapların çoğu şimdi bir tarih ve saat içeriyor, buna izin verilmesi gerektiğini düşünüyorum.
GB

1
@TR Gelecekteki tarihi bastığınızda, format insan tarafından okunabildiği sürece esnektir (zaman damgası içerebilir). Ancak, geçerli saat / tarih kabul edilemez.
NonlinearFruit

5
" Bas 10 sistemimizden dolayı "? Hayır, eğer ikili olarak saysaydık, muhtemelen 100'den
geriye sayırdık

Yanıtlar:


42

Excel, 10

=NOW()+100

gösteri

görüntü tanımını buraya girin


1
Ayrıca Google Sayfada da çalışır.
Okx

11
Excel, ayrıştırma tarihlerini içeren kod golfü için her zaman iyidir.
Mühendis Toast

2
ŞİMDİ işlevinin yalnızca iki harfle yazıldığı excel için bir dil paketi var mı? Bu durumda, 1 byte tasarruf edebilirsiniz.
iFreilicht

13
Evet, Hollandalı 'nu ()' var
Tominator

2
Her ne kadar, sadece tarih başına , kullanmak zorunda kalacaktınız =TODAY()+100ya da=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit 19.07'de

20

Bash, 17 16 15 14 13 bayt

date -d100day

Bu çıkıyor datekomut göreli zamanlamalar için bazı oldukça esnek girdi alır. Ayrıca şeyler gibi işlemler yapabilir 1 year, 1 week ago, yesterdayvb Oldukça serin.

-1 byte bash dilbilgisi umursamadığını fark ederek.
-1 bayt arasındaki mesafe 100ve daygereksizdir.
-1 bayt, çünkü artık tırnaklara ihtiyacım yok çünkü dizgede boş bir yerim yok.
Sonra boşluğu kaldırarak -1 bayt -d(yalnızca ASCII teşekkürler!)


Yeni favori komutu +1
NonlinearFruit

@NonlinearFruit Hah, evet, muhtemelen benim en sevdiğim komutlardan biri. Teşekkürler!
HyperNeutrino,

Sonra boşluğa ihtiyacınız yok-d
ASCII sadece

@ ASCII-sadece Oh, tamam. Teşekkürler!
HyperNeutrino,

10

PowerShell, 10 bayt

(date)+1e2

+1e2 numarası için ConnorLSW'a teşekkürler.

Çiftlerin de ( 1e2çift) olduğu gün olarak eklendiği anlaşılıyor .

Önceki sürüm, 12 bayt:

(date)+"100"

Görünüşe göre PowerShell'deki tarihlere karakter dizileri ekleyebilirsiniz. Dize "100"100 güne dönüştürülür TimeSpan.


2
Tamam, neden diye sorma, ama (date)+100işe yaramasa da , öyle değil (date)+1e2... sanırım 1e2aslında bir doubleoyundur 100, derlenene kadar bir sayıdır, yani arayamazsın 100.GetType()ama arayabilirsin 1e2.GetType()- bu -2'dir ve bizi bize getirir. Excel ile bir beraberlik!
colsw

@ConnorLSW Yardım ederse veya karışıklığa eklenirse 100, dizenin "100"günler olarak alındığı 100 kene eklendiği görülür . Her ikisi de geçerli PS ama yalnızca biri ihtiyacımız olanı yapıyor.
Matt

@Matt 1e6hala bir sayıdır ve günler olsa eklenir mi?
colsw

O zaman ilginç. Belki de bu sayının eşiğin üstüne ulaştığı kaputun altında daha fazlası oluyor .... Bilmiyorum
Matt

Bir şekilde , 8 baytlık kayan nokta sayısı olan eski DATE türüyle , günlerin tam sayı artışları olarak gösterildiğini düşünüyorum. Sanırım bu Excel kullanıyor.
Danko Durbić


6

PHP, 28 bayt

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

okunabilir insan versiyonu, 35 bayt:

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

neredeyse okunabilir, 34 bayt:

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

Baskı süresi de kabul edilirse -4 bayt kabul edilir: veya Y_m_dile değiştirin .rc

Fransa'da 100 günde Ulusal Bayram.


Alt çizgi bana "Neden alt çizgi, sabit mi? Hayır, dizgiyi OH BEKLEYEN"! Zeki.
Martijn

@Martijn açın E_NOTICEve bileceksiniz: Y_m_dtanımsız bir sabit ve PHP bir dize varsayar. Bu ayrı (tüm işlev adları dahil) herhangi bir geçerli kelimesi ile çalışır anahtar kelimeler , önceden tanımlanmış sabitler ve büyük harf duyarsız true, falseve null.
Titus

5

Yakut , 16 bayt

p Time.now+864e4

Çevrimiçi deneyin!


Buna cevap verecek miydi, hoş. Ama farklı sonuçlar elde 864e4ve 8640000ben oldukça nedenini bilmiyorum. TIO'yu suçluyorum. EDIT: kullandığınızda p, iki değer farklı bir sonuç üretir. Ama kullandığın zaman puts, onlar aynı.
salyangoz_

Anlamıyorum, ikisiyle de aynı sonucu alıyorum. Bir örnek gönderebilir misiniz? Belki bu yerel ayarlara bağlıdır?
GB

p Time.now+864e4p Time.now+8640000TIO'da yaklaşık 4 gün geride . Birkaç defa denedim. Ancak, kullanırsanız puts, bu ayrım yoktur. Yerel ayarlarımın sorunlu olup olmadığını gerçekten bilmiyorum, ABD Doğu oldukça normal olmalı: Sanırım eve geldiğimde kendi bilgisayarımda çalıştırmayı deneyeceğim.
salyangoz_

5

Javascript, 29 26 25 bayt

@ ASCII-only sayesinde 3 bayt kaydedildi!

@JohanKarlsson sayesinde 1 bayt kaydedildi

new Date(+new Date+864e7)

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


1
Sen kullanabilirsiniz 864e7yerine864*10e6
ASCII sadece

1
Bunun +new Dateyerine 1 byte tasarruf edebilirsinizDate.now()
Johan Karlsson

1
Bu bir pasaj. console.log
Eklemeniz


4

Vim, 27 bayt

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

çevrimiçi deneyin!

görüntü tanımını buraya girin

Düzenleme: Gereksiz boşluk kaldırıldı char.


2
Eğer Linux kullanıyorsanız date, bu sayfadaki biridir date -d100dayolsa yardımcı olacaktır eğer emin,
ASCII sadece

Ben :r!date +\%F -d100dayde bununla çalışır (en azından benim bilgisayarımda (C)) çalışır, ancak HyperNeutrinozaten bash kullanımda olduğu gibi .
12431234123412341234123 11

Uh, baytları sadece vim'i ortadan kaldırarak ve bash yaparak yapabilirsiniz.
David Conrad

4

MATL , 9 bayt

Z'100+1XO

Çıktı formatı 15-Jul-2017(en çok okunabilir buluyorum). Değişim 1XOiçin 2XO, örneklerde kullanılan biçimi olsun 07/15/17.

Çevrimiçi deneyin!

açıklama

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), 3531 bayt

SELECT DATEADD(D,100,GETDATE())

İçindeki boşlukları dyerine kullanabilir DAYve kaldırabilirsiniz DATEADD.
mbomb007

Ben bile kullanabileceğini bilmiyordum d. Kullanıyorum ddya dayda pratikte. Sadece denedim ve işe yaradı.
mbomb007

3

Java 8, 77 , 61 bayt

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

Çevrimiçi deneyin!


Kazan plakasını eklememeniz için bir neden var mı? (örneğin, 'A sınıfı {genel statik..') Java için tam bir program için gerekli olduğuna inanıyorum. Bir lambda yapabilirsin ()->java.time.LocalDate.now().plusDays(100).
NonlinearFruit

Cevabımı düzenlemeden önce bunu yaptım. Bu kazan plakası ile birlikte 94 bayt oldu. Java ile golf oynamaya yeni başladım. Bu yüzden bunu eklemek zorunda olup olmadığımdan emin değilim!
Keerthana Prabhakaran

2
Gönderimler (aksi belirtilmediği sürece), tam bir program (bazı tercümanlar tarafından değiştirilmeden çalıştırılabilir) veya bir işlev olabilir.
NonlinearFruit

3

C #, 103 97 bayt

6 byte tasarruf için raznagul'a teşekkürler !

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

Geçerli tarihi okuyan, 100 gün ekleyen ve sonucu M/d/YYYYbiçiminde gösteren tam program .

Tarih biçimini birkaç bayt daha ekleyerek değiştirebilirsiniz:

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

Kazan plakasını ortadan kaldırmak için - C # tam olarak küçük olduğu bilinmemektedir - anonim bir işlev kullanılabilir:

C # lambda, 49 43 bayt

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

Tam program:

using System;

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

        Console.WriteLine(f());
    }
}

Tam program için, System.DateTime.Now ... "System kullanarak" önlemek için yazabilirsiniz düşünüyorum.
Taemyr

1
@ Taemyr: O da ihtiyacı olduğu gibi, daha uzun olurdu Console.Write.
raznagul

2
@adrianmp: Bunun .ToString("d")yerine 6 bayttan tasarruf edebilirsiniz .ToShortDateString().
raznagul

3

Erişte , 8 bayt

]5@LaƇ⁺ƈ

Dene:)


Nasıl çalışır

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


Ƈ karakteri, tek bir baytta görüntülenemeyecek kadar büyük olan U + 0187 unicode karakteridir. Aynısı ƈ (U + 0188) için de geçerlidir. Bu 8 karakter uzunluğunda olsa da, minimum bayt uzunluğu 10'dur.
iFreilicht

1
@iFreilicht, Noodel kendi kodlamasını kullanır. Editör UTF-16’daki her şeyi görsel olarak daha iyi çalışmak için yapar, ancak ayrıştırmadan önce Noodel kod sayfasını temel alarak kodlanır .
tkellehe

3

Mathematica, 26 21 bayt

-KiranLinsuain sayesinde -5 bayt!

Today+Quantity@"100d"

Süreye izin verilirse 2 bayt kaydedebiliriz:

Now+Quantity@"100d"

1
"Now + Quantity [" 100d "]" biraz kesiyor, ancak her zaman tüm sürümlerde çalışmayabilir.
kl

3

C, 87 46 44 bayt

Albert Renshaw sayesinde 2 bayt kurtardı

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

Çıktının haftanın gününe ve saatine izin verecek kadar esnek olduğunu anladım, bu yüzden kullanmaya localtimeya da tmyapıya hiç gerek yok .

Eski cevap

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

Khaled.K'nın cevabına dayanarak , ancak yapıyla uğraşmak yerine, tm100 güne eşdeğer saniye sayısını doğrudan time_tdeğerine ekler . Ayrıca, yalnızca tarihi veya saati haftanın günü olmadan da yazdırır.

Golf programında olması gerektiği gibi, derleme sırasında çirkin uyarılar verilir.

Çevrimiçi deneyin!

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
2 bayt ile değiştirerek tıraş 8640000edin864e4
Albert Renshaw


2

IBM / Lotus Notes Formülü, 29 bayt

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

Ne yazık ki , eksikler @Adjustiçin izler gerekiyor .0'shh:mm:ss

Biz de zamanı göstermek için izin verildi, sonra değişen @Todayüzere @Now27 için 2 bayt tasarruf sağlayacaktır.


2

JavaScript (ES6), 44 bayt

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

Saat ile bir tarih döndürmek kabul edilirse 25 bayt:

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


2

F # (53 bayt)

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

Burada çok fazla F # cevabı görmüyorum. Kudos!
David Conrad

2

Swift 3, 39 bayt

print(Date(timeIntervalSinceNow:864E4))

İhtiyacın olmadığını iddia ediyorum import foundation;. Swift sadece iOS üzerinde çalışıyor ve oraya otomatik olarak aktarılıyor.
Albert Renshaw

Henüz burada çok fazla Swift yanıtı yok, oybirliği ne olduğundan emin değiliz. Ama bence iyi bir
Matt

@Albert Swift, Mac OS ve Linux'ta da çalışır. Yine de, ithalin gerekli olup olmadığı konusunda ne anlama geldiğini bilmiyorum.
David Conrad

2

C, 120 113 bayt

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

Canlı Demo

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

Yanılmıyorsam, #include ...işlevleri sunarken kazan plakasını hesaba katmanıza gerek yoktur . (Java cevapları, örneğin, importbu durumda gerek yok )
Cássio Renan

@ CássioRenan, Java'da olduğu gibi java.lang.*, varsayılan sayımları saymamıza gerek yok , tıpkı nasıl saymadığımız stdio.hve stdlib.hC'de olduğu gibi . Ama java'da bile, ya özel ithalatları göz önüne almanız ya da yolu java.util.Date, ve bu puanınızı sayar.
Khaled.K

2
Kullanarak Neden printf()olur puts()da çalışmıyor?
12431234123412341234123

2

PowerShell, 23

(get-date).adddays(100)

Bu benim ilk denemem, lütfen bana yapıcı geribildirim verin. Teşekkürler!



1

Python, 63 bayt

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

Gerçekten çok basit bir çözüm. Çünkü datetime.now()sonuç aynıdır typesonucunda timedelta, bu mutlu iki buluşmanızı ekler.


Bir fonksiyon olmak zorunda değildir. Kaldırabilirsiniz lambda:ve hala tam bir program olurdu.
NonlinearFruit

@NonlinearFruit Evet, ancak printeklenecek ve bu aynı bayt sayısını yapar.

Python 2 kullanıyorsanız, print1 byte tasarruf etmek için parantezleri çıkarabilirsiniz
Dead Possum

days=5 + 1 bayt (python2 tasarruf olur, isteğe bağlı printsitesindeki parantez)
Felipe Nardi Batista

57 byte'a düşürüldü:from datetime import*;print datetime.now()+timedelta(100)
Bay Xcoder


1

Golang, 58 bayt

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

Tam Program

package main

import . "time"
import . "fmt"

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

çevrimiçi deneyin!


1

Oracle, 34 bayt

SELECT CURRENT_DATE+100 FROM DUAL;

1

Python 2 + Pandalar 0.19.1, 56 51 bayt

from pandas import*
print Timestamp('now','D')+100
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.