Đếm ngược Giáng sinh


10

Trong tinh thần của ngày lễ, và khi ai đó đã bắt đầu chủ đề mùa đông ( Xây dựng người tuyết! ) Tôi đề xuất một thử thách mới.

In số ngày, giờ, phút và giây cho đến Giáng sinh (nửa đêm (00:00:00) ngày 25 tháng 12) trên cửa sổ độc lập (không phải bảng điều khiển) ở bất kỳ định dạng rõ ràng nào bạn thấy phù hợp và liên tục cập nhật nó như những giá trị thay đổi.

Đầu vào - không có gì, phải đọc thời gian hệ thống.

Mã ngắn nhất thắng :) Các chuỗi "Ngày", "Giờ", "Phút", "Giây" và "Cho đến Giáng sinh" là mã miễn phí. Bạn cũng có thể hương vị chúng lên nếu bạn thích. Hương vị của chúng là trước đây cho mục đích tạo ra một đầu ra tốt đẹp. Bạn không thể tạo chuỗi hương vị cho mục đích tạo số ma thuật để lưu mã.


Chính xác những gì bạn có nghĩa là "hương vị chúng lên"? Là "ngày", "giờ", "phút", "giây" và "cho đến Giáng sinh" được yêu cầu trong đầu ra, hoặc chỉ là các tùy chọn miễn phí? Bao nhiêu "hương vị" của các chuỗi đó là miễn phí?
Iszi

2
Không có bàn điều khiển ?? Bảng điều khiển lập trình viên nổi dậy! Đùa thôi. Ý kiến ​​hay. Chúc mừng ngày lễ
Darren Stone

@Iszi Họ không bắt buộc. Tôi chỉ cho họ miễn phí để nếu mọi người muốn tạo ra một sản phẩm đẹp thực sự, họ sẽ không mất quá nhiều nhân vật.
Cruncher

1
Không phải nửa đêm Giáng sinh là kết thúc Giáng sinh sao?
DavidC

2
Không, điển hình là nửa đêm là tức thì của ngày mới. "Midnight Christmas" là khi Giáng sinh bắt đầu.
hộp bánh mì

Câu trả lời:


5

Ruby với Giày , 96 - 33 = 63

Shoes.app{p=para
animate{p.text="0 days 0 hours 0 minutes #{1387951200-Time.new.to_f} seconds"}}

Vâng, bạn không bao giờ nói chúng tôi không thể . ;)

ảnh chụp màn hình

Cập nhật một lần mỗi khung hình.

Số ma thuật 1387951200là Giáng sinh - ngày 25 tháng 12 năm 2013 00:00.

Phiên IRB mẫu cho nơi tôi nhận được các số:

irb(main):211:0> "0 days 0 hours 0 minutes  seconds".size
=> 33
irb(main):212:0> Time.new(2013,12,25,00,00,00).to_i
=> 1387951200
irb(main):213:0>

Dec 25, 2013 00:00là nửa đêm
Cruncher

@Cruncher À, được rồi. Chỉnh sửa rất nhiều văn bản vô dụng sau đó
Doorknob

3

PowerShell: 279

Số lượng nhân vật không tính đến bất kỳ sự miễn phí. @Cruncher - vui lòng điều chỉnh cho phù hợp.

Chơi gôn

($t=($a='New-Object Windows.Forms')+".Label"|iex).Text=($i={((New-TimeSpan -en 12/25|Out-String)-split"`n")[2..6]});$t.Height=99;($x=iex $a".Form").Controls.Add($t);$x.Text='Time Until Christmas';($s=iex $a".Timer").add_tick({$t.Text=&$i;$x.Refresh()});$s.Start();$x.ShowDialog()

Đây không phải là điều đẹp nhất, như là mã hoặc là một cửa sổ, nhưng nó hoạt động.

Một điều tuyệt vời là điều này không tốt cho năm 2013 - nó sẽ hoạt động vào bất kỳ năm nào, từ 00:00 ngày 1 tháng 1 đến 00:00 ngày 25 tháng 12.

Cảnh báo: Cửa sổ có thể không phản hồi - cửa sổ sẽ tiếp tục cập nhật, nhưng bạn có thể không di chuyển hoặc đóng cửa.

nhập mô tả hình ảnh ở đây

Un-golfed với ý kiến

(
    # $t will be the label that displays our countdown clock on the form.
    $t=(
        # $a is used as a shortcut to address the Forms class later.
        $a='New-Object Windows.Forms'
    # Tack ".Label" onto the end with iex to finish making $t.
    )+".Label"|iex

# Set the text for our label.
).Text=(
    # $i will be a script block shortcut for later.
    $i={
        (
            (
                # Get the current "Time until Christmas", and output it as a string.
                New-TimeSpan -en 12/25|Out-String
            # Break the string into newline-delimeted array.
            )-split"`n"
        # Only output elements 2..6 - Days, Hours, Minutes, Seconds, Milliseconds.
        )[2..6]
    }
);

# Make sure the label is tall enough to show all the info.
$t.Height=99;

(
    # Use iex and $a as shortcut to make $x a "New-Object Windows.Forms.Form".
    $x=iex $a".Form"

# Add the label to the form.
).Controls.Add($t);

# Put 'Time Until Christmas' in the title bar for flavor.
$x.Text='Time Until Christmas';

(
    # Use iex and $a as shortcut to make $s a "New-Object Windows.Forms.Timer".
    $s=iex $a".Timer"

# Tell the timer what to do when it ticks.
).add_tick(
    {
        # Use the $i script block to update $t.Text.
        $t.Text=&$i;
        # Reload the form so the updated text displays.
        $x.Refresh()
    }
);

# Start the timer.
$s.Start();

# Show the form.
$x.ShowDialog();

# Variable cleanup - omit from golfed code.
rv t,a,x,i,s

3

Toán học 167 - 44 = 123

Sau đây liên tục cập nhật một bảng hiển thị ngày, giờ, phút và giây (tính bằng phần nghìn) cho đến khi bắt đầu ngày Giáng sinh. Tôi không chắc làm thế nào để tính giảm giá cho các chuỗi miễn phí.

Dynamic[Grid[Join[{{"Countdown", "until Christmas"}}, 
{DateDifference[Date[], {2013, 12, 25, 0, 0, 0}, {"Day", "Hour", "Minute", "Second"}], 
Clock[{1, 1}, 1]}[[1]] /. d_String :> d <> "s"]] ]

đếm ngược


Một giải pháp nhanh và bẩn : 104-19 = 85 ký tự

Dynamic@{DateDifference[Date[], {2013, 12, 25, 0, 0, 0}, {"Day", "Hour", "Minute", 
 "Second"}], Clock[{1, 1}, 1]}[[1]]

{{17, "Ngày"}, {10, "Giờ"}, {59, "Phút"}, {51.4011, "Thứ hai"}}


"Countdown to Christmas: Days"Đây có thể là miễn phí, "Day", "Hour", "Minute", "Second"có thể là tốt.
Cruncher

Cảm ơn bạn đã làm rõ. Btw, không gian bên ngoài chuỗi không bắt buộc. Chúng được chèn chỉ cho mức độ dễ đọc.
DavidC

Tại sao có chữ "-" trước các số? Nó có thể gây nhầm lẫn, và có vẻ như chúng ta đã qua Giáng sinh rồi. Họ sẽ được sửa bằng cách thay đổi thứ tự trong DateDifference?
Cruncher

Tôi đã loại bỏ chúng và cải thiện định dạng, trả giá bằng các ký tự được thêm vào.
DavidC

2

Con trăn 136

Tôi chắc rằng ai đó có thể làm điều này tốt hơn - tôi chưa bao giờ sử dụng Tkinter trước đây. Đặc biệt tôi đặt cược l.pack()l["text"]có thể tránh được.

tk

Chơi gôn

from Tkinter import*
from datetime import datetime as d
r=Tk()
l=Label(r)
l.pack()
while 1:
    l["text"]=d(2013,12,25)-d.now()
    r.update()

1

R

Đây là giải pháp cho R sử dụng GTK + thông qua gói gWidgets. Đây là mã khá xấu vì tôi không quen với gói gWidgets / GTK +.

Đây là mã:

library(gWidgets)
options(guiToolkit="RGtk2")

# FUNCTION compute the hours minutes and seconds from time in seconds
fnHMS = function(timeInSec) {
  hours = timeInSec %/% 3600
  minutes = (timeInSec %% 3600) %/% 60
  seconds = (timeInSec %% 3600) %% 60
  return(list(hours = hours, minutes = minutes, seconds = seconds))
}

# test the function
fnHMS(1478843)

# container for the label and the button widget
christmasCountdownContainer = gwindow('Christmas Countdown!!', visible = TRUE)
christmasCountdownGroup = ggroup(horizontal = FALSE,
                                 container = christmasCountdownContainer)
ccWidget1 = glabel(sprintf('%4.0f hours, %4.0f minutes, %4.0f seconds till Christmas!!', 
                           (liHMS <- fnHMS(as.double(difftime(as.POSIXct(strptime('25-12-2013 00:00:01', 
                                      format = '%d-%m-%Y %H:%M:%S')),
                  Sys.time(), units = 'secs'))))[[1]], liHMS[[2]], liHMS[[3]]), 
                            container = christmasCountdownGroup)

ccWidget2 = gbutton("Update!", handler = function(h, ...) {
  # retrieve the old value of the ccWidget1
  oldValue = svalue(ccWidget1)
  liHMS = fnHMS(as.double(difftime(as.POSIXct(strptime('25-12-2013 00:00:01', 
                                                       format = '%d-%m-%Y %H:%M:%S')),
                                   Sys.time(), units = 'secs')))
  svalue(ccWidget1) = sprintf('%4.0f hours, %4.0f minutes, %4.0f seconds till Christmas!!',
                              liHMS[[1]], liHMS[[2]], liHMS[[3]])
  }, container = christmasCountdownGroup)

Đầu ra

Đây là những gì đầu ra trông như:

nhập mô tả hình ảnh ở đây


Nó phải liên tục cập nhật - điều đó có nghĩa là tự động
Doorknob

1

Thuốc nhuộm APL, 61

{⎕SM[1;]←1 1,⍨⊂⍕(1 4⍴2↓2013 12 24 23 59 59 1000-⎕TS)⍪'Days' 'Hours' 'Minutes' 'Seconds'⋄∇1}1

0

C # 128

Chơi gôn

using D=System.DateTime;using System.Windows.Forms;class C{static void Main(){MessageBox.Show(""+(new D(2013, 12, 25)-D.Now));}}

Ung dung

using D=System.DateTime;
using System.Windows.Forms;
class C
{
    static void Main()
    {
        MessageBox.Show(""+(new D(2013,12,25)-D.Now));
    }
}

1
Điều này không liên tục đếm ngược phải không? Ngoài ra, Chào mừng bạn đến với codegolf!
Cruncher

Cảm ơn, rất vui khi được ở đây! Tôi đoán tôi đã hiểu lầm, điều này sẽ chỉ cập nhật khi nó được chạy lại. Tôi sẽ chỉnh sửa và đăng lại sớm
James C.

0

Con trăn 2, 115

from datetime import datetime as d
n=d.now()
print str(24-n.day),str(23-n.hour),str(59-n.minute),str(60-n.second)

Điều này tính các dòng mới là 2 ký tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.