क्रिसमस उलटी गिनती


10

छुट्टियों की भावना में, और जैसा कि किसी ने पहले ही शीतकालीन विषय शुरू किया था ( एक स्नोमैन बनाएँ! ) मैं एक नई चुनौती का प्रस्ताव करता हूं।

क्रिसमस, (मध्यरात्रि (00:00:00) दिसंबर 25) तक कई दिनों, घंटों, मिनटों और सेकंडों की संख्या को एक अकेले खड़े खिड़की पर (एक कंसोल नहीं) पर प्रिंट करें, जो कि किसी भी अस्पष्ट प्रारूप में आप फिट देखें, और लगातार इसे इन के रूप में अपडेट करें मान बदलते हैं।

इनपुट - कुछ नहीं, सिस्टम टाइम जरूर पढ़ें।

सबसे छोटा कोड जीतता है :) स्ट्रिंग्स "डेज", "ऑवर्स", "मिनट्स", "सेकंड्स" और "क्रिसमस तक" फ्री कोड हैं। आप चाहें तो उन्हें फ्लेवर भी दे सकते हैं। एक अच्छा आउटपुट तैयार करने के उद्देश्य से उनका स्वाद बढ़ाना सरासर घातक है। आप कोड को बचाने के लिए एक जादू की संख्या बनाने के उद्देश्य से तार का स्वाद नहीं ले सकते।


क्या वास्तव में आप "उन्हें ऊपर स्वाद" से मतलब है? क्या "दिन", "घंटे", "मिनट", "सेकंड" और "क्रिसमस तक" आउटपुट में आवश्यक हैं , या बस मुफ्त विकल्प हैं? उन स्ट्रिंग्स का कितना "फ्लेवरिंग" मुफ्त है?
इसिज़ी

2
कोई सांत्वना नहीं ?? कंसोल कोडर्स विद्रोह! मजाक कर रहा हूं। अछा सुझाव। छुट्टियां आनंददायक हों।
डेरेन स्टोन

@Iszi उनकी आवश्यकता नहीं है। मैंने उन्हें सिर्फ इसलिए मुक्त कर दिया कि अगर लोग एक वास्तविक अच्छा उत्पादन करना चाहते हैं तो वे इतने सारे पात्रों को नहीं खोएंगे।
क्रंचर

1
क्या क्रिसमस आधी रात क्रिसमस का अंत नहीं है?
डेविड डिक 6'13

2
नहीं, आम तौर पर आधी रात नए दिन का शून्यकाल होता है। "मिडनाइट क्रिसमस" क्रिसमस शुरू होने पर होता है।
ब्रेडबॉक्स

जवाबों:


5

जूते के साथ रूबी , 96 - 33 = 63

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

ठीक है, आपने कभी नहीं कहा कि हम नहीं कर सकते । ;)

स्क्रीनशॉट

हर फ्रेम में एक बार अपडेट।

जादू की संख्या 1387951200क्रिसमस है - दिसंबर 25, 2013 00:00।

जहां मुझे नंबर मिले, उसके लिए सैंपल IRB सेशन:

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:00आधी रात है।
क्रंचर

@ क्रंचर आह, ठीक है फिर। बाहर का संपादन बेकार पाठ के बहुत से तो
दरवाज़े

3

पॉवरशेल: 279

चरित्र की गिनती किसी भी मुफ्त में नहीं होती है। @ क्रंचर - तदनुसार समायोजित करें।

golfed

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

यह सबसे सुंदर चीज नहीं है, या तो कोड के रूप में या एक खिड़की के रूप में, लेकिन यह काम करता है।

एक अच्छा सा यह है कि यह सिर्फ 2013 के लिए अच्छा नहीं है - यह किसी भी वर्ष में काम करेगा, 1 जनवरी को 00:00 बजे से 25 दिसंबर को 00:00 बजे तक।

चेतावनी: विंडो अप्रतिसादी हो सकती है - यह अपडेट होती रहेगी, लेकिन आप इसे स्थानांतरित या बंद करने में सक्षम नहीं हो सकते हैं।

यहाँ छवि विवरण दर्ज करें

टिप्पणियों के साथ अन-गोल्फ

(
    # $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

गणितज्ञ 167 - 44 = 123

निम्नलिखित लगातार एक तालिका को दिन, घंटे, मिनट और सेकंड (हजारवें में) को दिखाते हुए क्रिसमस के दिन की शुरुआत तक अपडेट करता है। मैं अनिश्चित हूं कि फ्री स्ट्रिंग्स के लिए डिस्काउंट कैसे गिना जाए।

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

उलटी गिनती


एक त्वरित और गंदा समाधान : 104-19 = 85 चार्ट

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

{{17, "दिन"}, {10, "घंटा"}, {59, "मिनट"}, {51.4011, "दूसरा"}}


"Countdown to Christmas: Days"यह नि: शुल्क हो सकता है, "Day", "Hour", "Minute", "Second"साथ ही हो सकता है।
क्रंचर

स्पष्टीकरण के लिए धन्यवाद। Btw, स्ट्रिंग्स के बाहर रिक्त स्थान अनिवार्य नहीं हैं। वे केवल सुपाठ्यता के लिए डाले गए हैं।
19

संख्याओं के सामने "-" क्यों हैं? यह भ्रामक हो सकता है, और देखो जैसे हम पहले ही क्रिसमस पास कर चुके हैं। क्या उन्हें DateDifference में आदेश बदलकर ठीक किया जाएगा?
क्रंचर

मैंने उन्हें हटा दिया और स्वरूपण में सुधार किया, पात्रों में मूल्य का भुगतान किया।
19

2

पायथन 136

मुझे यकीन है कि कोई इसे बेहतर कर सकता है - मैंने पहले कभी टिंकर का उपयोग नहीं किया है। विशेष रूप से मैं शर्त लगा सकता हूं l.pack()और इससे l["text"]बचा जा सकता है।

TK

golfed

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

आर

यहां GWidgets पैकेज के माध्यम से GTK + का उपयोग करते हुए आर के लिए एक समाधान है। यह बहुत बदसूरत कोड है क्योंकि मैं gwidgets / GTK + पैकेज से बिल्कुल भी परिचित नहीं हूं।

कोड

यहाँ कोड है:

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)

उत्पादन

यहाँ वही है जो आउटपुट दिखता है:

यहाँ छवि विवरण दर्ज करें


कि साधन स्वचालित रूप से - यह लगातार अद्यतन करने के लिए है
दरवाज़े

1

डायलॉग एपीएल, 61

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

0

सी # 128

golfed

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

Ungolfed

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

1
यह लगातार नीचे गिनती नहीं करता है? इसके अलावा, codegolf में आपका स्वागत है!
क्रंचर

धन्यवाद, यहां आकर खुशी हुई! मुझे लगता है कि मैंने गलत समझा, यह तभी अपडेट होगा जब यह फिर से हो। मैं जल्द ही सम्पादन करूँगा और फिर से लिखूँगा
जेम्स सी।

0

अजगर 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)

यह 2 वर्णों के रूप में नई सूचियों को गिनता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.