Countdown 100 Hari


25

Adalah umum untuk memulai hitung mundur 100 hari sebelum acara, mungkin karena sistem basis 10 kami. Contoh-contoh ini dapat ditemukan di mana-mana:

  • 100 hari hingga ulang tahun Anda
  • 100 hari sampai pernikahan
  • 100 hari hingga pemilihan
  • 100 hari sampai kelulusan kita
  • 100 hari sampai batas waktunya
  • 100 hari hingga musim sepak bola
  • 100 hari sampai Anda mendapatkan lencana Fanatic

Anda mendapatkan fotonya. Tampaknya hari ke-100 sebelum sebuah acara adalah tempat kedua hanya untuk acara yang sebenarnya. Jadi untuk tantangan ini, saya perlu tahu tanggal berapa dalam 100 hari, sehingga saya dapat menentukan apa yang harus saya mulai menghitung mundur juga.

Memasukkan

Tidak ada input

Keluaran

Tanggal 100 hari dari tanggal saat ini berdasarkan pada Kalender Gregorian standar (Pastikan untuk menghitung tahun kabisat). Output fleksibel selama format tanggal adalah manusia read-mampu (misalnya 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Kemenangan

Golf kode: kode terpendek dalam byte


Contohnya

100 hari dari hari ini (5 Apr 2017) adalah Jumat, 14 Juli 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
Bisakah saya menambahkan waktu saat ini ke output?
Titus

1
@Titus tidak, hanya tanggal yang akan datang
NonlinearFruit

1
Sebagian besar jawaban termasuk tanggal dan waktu sekarang, saya pikir ini harus diizinkan.
GB

1
@ GB Ketika Anda menampilkan tanggal yang akan datang, formatnya fleksibel (bisa termasuk stempel waktu) selama itu dapat dibaca manusia. Namun, waktu / tanggal saat ini tidak dapat diterima.
NonlinearFruit

5
" Karena sistem bas 10 kita "? Tidak, jika kita menghitung dalam biner, kemungkinan kita akan menghitung mundur dari 100 - kecuali itu hanya akan memakan waktu empat hari, daripada seratus ...
Toby Speight

Jawaban:


42

Excel, 10

=NOW()+100

Demonstrasi

masukkan deskripsi gambar di sini


1
Juga berfungsi di Google Sheets.
Okx

11
Excel selalu baik untuk kode golf yang melibatkan tanggal parsing.
Engineer Toast

2
Apakah ada paket bahasa untuk excel di mana fungsi SEKARANG dijabarkan dengan hanya dua huruf? Dalam hal ini, Anda bisa menghemat 1 byte.
iFreilicht

13
Yap, Dutch punya 'nu ()'
Tominator

2
Meskipun, per bagian tanggal saja , Anda harus menggunakan =TODAY()+100atau=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit

20

Bash, 17 16 15 14 13 byte

date -d100day

Ternyata dateperintah tersebut mengambil beberapa input yang cukup fleksibel untuk pengaturan waktu relatif. Anda juga dapat melakukan hal-hal seperti1 year , 1 week ago, yesterday, dll Ini cukup keren.

-1 byte dengan menyadari bahwa bash tidak peduli dengan tata bahasa.
-1 byte karena jarak antar 100dan daytidak perlu.
-1 byte karena saya tidak perlu tanda kutip lagi karena saya tidak punya spasi di string.
-1 byte dengan menghapus spasi sesudahnya -d(hanya untuk ASCII!)


Perintah favorit baru +1
NonlinearFruit

@NonlinearFruit Hah, ya, itu mungkin salah satu perintah favorit saya. Terima kasih!
HyperNeutrino

Anda tidak perlu ruang setelah-d
ASCII

@ Hanya ASCII Oh, oke. Terima kasih!
HyperNeutrino

10

PowerShell, 10 byte

(date)+1e2

Terima kasih kepada ConnorLSW untuk trik +1e2.

Tampaknya dobel ( 1e2adalah dobel) juga ditambahkan sebagai hari.

Versi sebelumnya, 12 byte:

(date)+"100"

Tampaknya Anda dapat menambahkan string ke tanggal di PowerShell. String "100"diubah menjadi 100 hari- TimeSpan.


2
Ok jangan tanya kenapa, tapi meskipun (date)+100tidak berhasil, (date)+1e2apakah ... Saya kira 1e2sebenarnya adalah doublesementara 100sampai nomor itu dikompilasi, yaitu Anda tidak bisa menelepon 100.GetType()tetapi Anda bisa 1e2.GetType()- itu -2 dan membawa kita ke hasil imbang dengan Excel!
colsw

@ConnorLSW Jika itu membantu atau menambah kebingungan 100dilihat sebagai menambahkan 100 ticks di mana string "100"diambil sebagai hari. Keduanya PS yang valid tetapi hanya satu yang melakukan apa yang kita butuhkan.
Matt

@ Matt 1e6masih berupa angka dan ditambahkan sebagai hari?
colsw

Itu menarik kalau begitu. Mungkin ada lebih banyak yang terjadi di bawah tenda di mana angka itu mencapai lebih dari ambang batas .... Saya tidak tahu
Matt

Saya pikir itu entah bagaimana terkait dengan tipe DATE lama yang merupakan angka floating point 8-byte dengan hari-hari yang direpresentasikan sebagai kenaikan bilangan bulat. Saya kira itulah yang digunakan Excel.
Danko Durbić


6

PHP, 28 byte

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

versi yang dapat dibaca manusia, 35 byte:

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

hampir terbaca, 34 byte:

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

-4 byte jika pencetakan waktu diterima: ganti Y_m_ddengan ratau c.

Ini Libur Nasional di Prancis dalam 100 hari.


Garis bawah membuat saya melakukan, "Mengapa menggarisbawahi, apakah ini konstan? Tidak, string OH TUNGGU 'RUANG' !!" Pintar.
Martijn

@ Martijn Aktifkan E_NOTICEdan Anda akan tahu: Y_m_dadalah konstanta yang tidak terdefinisi dan PHP mengasumsikan sebuah string. Ini berfungsi dengan kata apa pun yang valid (termasuk semua nama fungsi) selain dari kata kunci , konstanta yang telah ditentukan dan case-sensitive true, falsedan null.
Titus

5

Ruby , 16 byte

p Time.now+864e4

Cobalah online!


Akan menjawab ini, bagus. Tetapi saya mendapatkan hasil yang berbeda untuk 864e4dan 8640000dan saya tidak tahu mengapa. Saya menyalahkan TIO. Sunting: ketika Anda menggunakan p, kedua nilai menghasilkan hasil yang berbeda. Tetapi ketika Anda menggunakan puts, mereka sama.
snail_

Saya tidak mengerti, saya mendapatkan hasil yang sama dengan keduanya. Bisakah Anda memposting contoh? Mungkin itu tergantung pada lokasinya?
GB

p Time.now+864e4sekitar 4 hari di belakang p Time.now+8640000di TIO. Saya mencobanya beberapa kali. Namun, jika Anda menggunakan puts, perbedaan ini tidak ada. Saya tidak benar-benar tahu apakah masalah lokal saya, US East seharusnya cukup normal: PI kira saya akan mencoba menjalankannya di PC saya sendiri ketika saya pulang.
snail_

5

Javascript, 29 26 25 byte

Disimpan 3 byte berkat hanya @ ASCII!

Disimpan 1 byte berkat @JohanKarlsson

new Date(+new Date+864e7)

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


1
Anda dapat menggunakan 864e7sebagai gantinya864*10e6
ASCII-only

1
Anda dapat menghemat 1 byte dengan menggunakan +new DatebukanDate.now()
Johan Karlsson

1
Ini cuplikan. Anda harus memasukkanconsole.log
mbomb007


4

Vim, 27 byte

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

coba online!

enter image description here

Sunting: Dihapus char space yang tidak perlu.


2
Jika Anda menggunakan Linux date, yang ada di halaman ini adalah date -d100day, tidak yakin apakah itu akan membantu
ASCII-only

Saya mengujinya dengan :r!date +\%F -d100dayini juga berfungsi (setidaknya pada pc saya (C)), tetapi sama seperti HyperNeutrinosudah digunakan dalam bash.
12431234123412341234123

Eh, Anda bisa menyimpan byte dengan hanya menghilangkan vim dan melakukannya di bash.
David Conrad

4

MATL , 9 byte

Z'100+1XO

Format output adalah 15-Jul-2017(yang menurut saya paling mudah dibaca). Ubah 1XOuntuk 2XOmendapatkan format yang digunakan dalam contoh 07/15/17,.

Cobalah online!

Penjelasan

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())

Anda bisa menggunakan dan dbukannya DAYmenghapus spasi di dalamnya DATEADD.
mbomb007

Bahkan saya tidak tahu Anda bisa menggunakannya d. Saya menggunakan ddatau daydalam praktek. Saya hanya mencobanya dan berhasil.
mbomb007

3

Java 8, 77 , 61 byte

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

Cobalah online!


Apakah ada alasan Anda tidak memasukkan boilerplate? (yaitu 'kelas A {public static ...') Untuk Java, saya percaya pada diperlukan untuk program penuh. Anda bisa membuat lambda ()->java.time.LocalDate.now().plusDays(100).
NonlinearFruit

Saya memilikinya sebelum mengedit jawaban saya. Itu 94 byte bersama dengan boilerplate. Saya baru bermain golf dengan java. karenanya saya tidak yakin apakah saya harus memasukkan itu!
Keerthana Prabhakaran

2
Kiriman (kecuali ditentukan lain) dapat berupa program lengkap (dapat dijalankan oleh beberapa penerjemah tanpa modifikasi) atau fungsi.
NonlinearFruit

3

C #, 103 97 byte

Thanks to raznagul for saving 6 bytes!

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

Full program which reads the current date, adds 100 days and displays the result in M/d/YYYY format.

You can change the date format by adding a few more bytes:

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

To eliminate boilerplate code - C# isn't exactly known to be very compact - an anonymous function can be used:

C# lambda, 49 43 bytes

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

Full program:

using System;

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

        Console.WriteLine(f());
    }
}

For the full program I think you can write System.DateTime.Now... to avoid "using System;"
Taemyr

1
@Taemyr: That would be longer, as he also needs it for Console.Write.
raznagul

2
@adrianmp: You can save save 6 bytes by using .ToString("d") instead of .ToShortDateString().
raznagul

3

Noodel, 8 bytes

]5@LaƇ⁺ƈ

Try it:)


How it works

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


The character Ƈ is the unicode character U+0187, which is too large to be displayed in a single byte. Same goes for ƈ (U+0188). So while this is 8 characters long, the minimum byte-length is 10.
iFreilicht

1
@iFreilicht, Noodel uses its own encoding. The editor does everything in UTF-16 to work better visually, but gets encoded based off of the Noodel code page before parsing.
tkellehe

3

Mathematica, 26 21 bytes

-5 bytes thanks to @KiranLinsuain!

Today+Quantity@"100d"

If including the time is permitted, then we can save 2 bytes:

Now+Quantity@"100d"

1
"Now + Quantity["100d"]" cuts it down quite a bit, but may not always work on all versions.
k-l

3

C, 87 46 44 bytes

saved 2 bytes thanks to Albert Renshaw

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

I realized the output is flexible enough to allow for day of week and time, so there's no need to use localtime or the tm structure at all.

Old answer

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

Based on Khaled.K's answer, but instead of messing with the tm structure, adds the number of seconds equivalent to 100 days directly to the time_t value. It also prints only the date, without time or day of week.

As it should happen on a golfed program, some ugly warnings are generated on compilation.

Try it 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 by replacing 8640000 with 864e4
Albert Renshaw


2

IBM/Lotus Notes Formula, 29 bytes

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

Unfortunately @Adjust requires the trailing 0's for the missing hh:mm:ss.

If we were allowed to display the time as well then changing @Today to @Now would save 2 bytes for 27.


2

JavaScript (ES6), 44 bytes

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

25 bytes if returning a date with the time is acceptable:

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


2

F# (53 bytes)

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

Don't see a lot of F# answers on here. Kudos!
David Conrad

2

Swift 3, 39 bytes

print(Date(timeIntervalSinceNow:864E4))

I'd argue you don't need the import foundation;. Swift runs just on iOS and that is auto imported there.
Albert Renshaw

There aren't too many Swift answers here yet, so not sure what the consensus is. But I think you have a good point, I'll remove the import :)
Matt

@Albert Swift also runs on Mac OS and Linux. I don't know what that means for whether the import is required, though.
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));}

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

If I'm not mistaken, you don't need to account for #include ... boilerplate when submitting functions. (Java answers, for example, don't need import in that case)
Cássio Renan

@CássioRenan in Java you don't need to count the default imports like java.lang.*, just like how we don't count stdio.h and stdlib.h in C. But even in java, you need to either consider custom imports or put the path in the class name like java.util.Date, and that counts in your score.
Khaled.K

2
Why using printf() would puts() not also work?
12431234123412341234123

2

PowerShell, 23

(get-date).adddays(100)

This is my first ever try, so please give me constructive feedback. Thanks!



1

Python, 63 bytes

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

Very simple solution really. Because the datetime.now() result is the same type as the result of timedelta, it happily adds the two together.


It doesn't have to be a function. You could remove the lambda: and it would still be a full program.
NonlinearFruit

@NonlinearFruit Yes but print would have to be added and that makes it the same number of bytes.

If you use Python 2, you can remove brackets in print to save 1 byte
Dead Possum

the days= is optional, that would save 5+1 bytes (python2 print's brackets)
Felipe Nardi Batista

Golfed down to 57 bytes: from datetime import*;print datetime.now()+timedelta(100)
Mr. Xcoder

1

JavaScript, 38 Bytes

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

A little bit shorter than ASCII-only answer.

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


1

Golang, 58 bytes

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

Full Program

package main

import . "time"
import . "fmt"

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

try it 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.