Aqui está uma solução para R usando GTK + através do pacote gWidgets. Este é um código bastante feio, pois não estou familiarizado com o pacote gWidgets / GTK +.
Código
Aqui está o código:
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)
Dyalog APL, 61
fonte
C # 128
Golfe
Ungolfed
fonte
Python 2, 115
Isso conta novas linhas como 2 caracteres.
fonte