Exibir um relógio digital
(Vejo que há muitos desafios no relógio, tentei ler todos, tenho certeza de que isso é único)
Escrever algum código que atualiza continuamente um relógio digital exibida no formato de h:m:s
onde h
, m
e s
pode ocupar 1 ou 2 caracteres cada. As restrições em termos simples, como @BlueEyedBeast, colocam, basicamente, que substitua o tempo mostrado.
- Novas linhas não são permitidas
- Espaços à direita são permitidos
- Outros caracteres finais não são permitidos
- Não se deve perder segundos (57 -> 59 não é permitido)
- Números começando com "0" são permitidos, desde que não ocupem mais de 2 caracteres
- O código não deve aceitar nenhuma entrada
- Se o seu idioma não puder obter o horário atual sem entrada, você poderá usá-lo para inserir até 8 bytes de uma maneira permitida de maneira padrão.
- A saída deve ser para stdout
- Este é um codegolf, então a resposta mais curta vence!
Exemplo
Estou trabalhando em um idioma chamado *> <> (estrela do mar) porque programas como esse não são possíveis em> <> (apenas aguarde o arquivo de E / S). Aqui está um programa de relógio digital em funcionamento (não destruído). Este programa está escrito em *> <> :
s":"m":"hnonon" "ooo88888888888ooooooooooo1S
Nota: Tudo é idêntico a> <>, exceto, s = segundo, m = minuto, h = hora, S = suspensão (100ms * x)
Isso gera:
14:44:31
Atualizando a cada 100ms até terminar.
Exemplos não permitidos
O seguinte não é permitido:
1:
14:44:3114:44:32
2:
14:44:31 14:44:32
3:
14:44:31
14:44:32
O tempo deve permanecer na primeira linha em que foi produzido, sem caracteres à direita visíveis. A limpeza do terminal, porém, seria permitida, pois isso ainda não teria caracteres à direita.
Respostas:
Pyke, 6 bytes
Experimente aqui!
Eu acho que isso é válido. Substitua o caractere de espaço por retorno de carro para saída válida (não funciona online)
fonte
HTML + JS (ES6), 8 + 60 = 68 bytes
Testado no Chrome.
-1 byte (@ETHProductions): use o formato de hora em francês em vez de
.toTimeString().slice(0,8)
HTML + JS (ES6), 8 + 62 = 70 bytes
Isso funcionará no FireFox.
-3 bytes (@ETHProductions): use o formato de hora em francês em vez de
.toTimeString().slice(0,8)
fonte
new Date().toLocaleTimeString`fr`
(1 byte no único Chrome com...TimeString('fr')
)Python 2, 50 bytes
(Python 2.1+ para
ctime
sem argumento)time.ctime()
produz uma string formatada, a partir da qual o hh: mm: ss pode ser fatiado usando[11:19]
(ele permanece no mesmo local, independentemente da data e hora).print
inserir o retorno de carro'\r'
antes do texto e tornar o texto o primeiro item de uma tupla,
suprime efetivamente o final implícito'\n'
e substitui a saída gravada anteriormente.while 1
laços para sempre.fonte
,
no final para suprimir a nova linha, caso contrário, no Python 2.7.12 eu recebo novas linhas.Mathematica,
48413728 bytesA saída será a
TimeObject
, atualizando continuamente.Se parece com isso:
Versões alternativas
48 bytes:
53 bytes:
fonte
Dynamic@{DateString@TimeObject[], Clock[]}[[1]]
Pause
.Dynamic@{Now,Clock[]}[[1]]
tem 26 bytes e mostra um objeto datetime.Dynamic@{DateString@"Time",Clock[]}[[1]]
é de 40 bytes e produz apenas hh: mm: ssVejo que o requisito de uma entrada de interface do usuário sem sinal para interromper o programa foi removido. Então agora podemos fazer:
Bash + coreutils, 28
yes
gera continuamente a string "now", uma vez por linha, em um pipe.date -f-
lê interpreta cada "agora" como a hora atual e depois sai no formato necessário. A seqüência de formato inclui a sequência de escape ANSI para limpar a tela.date
faz saída de uma nova linha após a data - Eu não tenho certeza se isso desqualifica, uma vez que o ecrã é limpo a cada vez de qualquer maneira.Se desqualificar, podemos usar
tr
:Bash + coreutils, 31
Respostas anteriores:
Festança + X, 32
Infelizmente, isso só pode ser atualizado a cada segundo. Se isso desqualificar, podemos fazer isso:
Bash + coreutils, 43
fonte
date +$'\e[2J'%T;$0
date +$'\e[2J'%T;exec $0
por 24 bytes ...QBIC , 6 bytes
Limpa constantemente a tela e imprime a hora do sistema no formato
22:03:41
.fonte
Clojure,
150136141 bytesV3: 141 bytes :(
+5 bytes para corrigir um erro. Como os horários não são preenchidos com zero, o relógio pode "encolher" e expandir quando o tempo muda. Estava "manchando" quando encolheu porque o último dígito não estava mais sendo limpo. Corrigido adicionando alguns espaços no final para garantir que tudo esteja sendo substituído.
V2: 136 bytes
-14 bytes mudando para usando
SimpleDateFormat
para formatar a data. Ainda enorme.V1: 150 bytes
Percebi que provavelmente estou usando a pior maneira possível para conseguir a data. Definitivamente espaço para melhorias aqui.
Ungolfed:
fonte
Bash + watch, 19 bytes
O watch não faz parte do coreutils , mas está disponível imediatamente em praticamente todas as distribuições Linux.
Golfe
Experimente online!
fonte
WinDbg, 73 bytes
Atualiza continuamente uma linha com a hora atual até o usuário pressionar Ctrl + Break.
Como funciona:
Saída de amostra (bem, você entendeu):
fonte
PHP, 28 bytes
o
date
função imprime tudo literalmente que não reconhece.\r
é o retorno de carro, define o cursor para a primeira coluna.Corra com
-r
.fonte
MATL , 11 bytes
Loop infinito que limpa a tela e imprime a hora no formato especificado.
Você pode experimentá-lo no MATL Online! . Este compilador é experimental; se não funcionar, atualize a página e pressione "Executar" novamente.
fonte
C #, 82 bytes
Método anônimo que constantemente sobrescreve 8 caracteres com nova saída. Pode ser reduzido em 1 byte se for modificado para aceitar um parâmetro fictício (
z=>...
).Programa completo:
fonte
System
? Algumas pessoas fazem isso e outras não: /C #, 65 bytes
Funciona substituindo a mesma linha em um loop infinito
fonte
SmileBASIC 3.3.2, 38 bytes
UTF-16 é uma merda :(
De qualquer forma, isso imprime repetidamente a hora local em HH: MM: SS com um espaço depois, sem nova linha depois. Porém, ele não atualiza a cada segundo, apenas imprime repetidamente para sempre.
fonte
@L?TIME$
e anexá-la após (para um total de 3 linhas) que lêLOCATE 0, 0
o truque (o SmileBASIC suporta retorno de carro?).len(""" YOUR CODE HERE """)
, em seguida, basta fazer * 2 para UTF-16.C,
1341168980767573 bytesfonte
time.h
também. Isso remove o tipo time_t, então você precisa fazer n um int. Isso pode ser feito declarando-o fora de main (liken;main...
), o que elimina a necessidade deint
. Você também pode se livrar dochar
com o mesmo truque:b[9];main...
. Ambos são do tipo int agora, mas é flexível o suficiente.strftime...
eob[9]
e feito apenas de impressão para este:printf("\r%d:%d:%d",(n/3600)%60-29,(n/60)%60,n%60);
Eu não tenho certeza se os parênteses são necessários ou não. Além disso, você pode tomar um conjunto de{}
colocando vírgulas entre as suas declarações por isso éfor(;;)a,b,c;
(n/60)%60
, a sério?n
como parâmetro demain
, digamos, emmain(n)
vez den;main()
PowerShell, 39 bytes
Porque eu não gosto de usar cls no Powershell. Na publicação do briantist @ /codegolf//a/102450/63383
fonte
Pascal, 61 bytes
O pascal livre possui rotinas de tempo agradável na unidade SysUtils. Ungolfed:
fonte
Bytes C 65 (anteriores 64)
Garantido para trabalhar na máquina Linux. :)
@Marco Thanks!
fonte
Vim, 26 bytes
Isso cria uma macro recursiva (por exemplo, um loop eterno) que exclui todo o texto da linha atual e o substitui pela hora atual.
fonte
Pitão - 28 bytes
Meio demorado, porque pyth não tem tempo de atividade.
fonte
Groovy, 45 caracteres
fonte
Gelatina , 8 bytes
Experimente online!
O retorno de carro não funciona on-line e eu não consigo fazer o intérprete funcionar, portanto é meio que não testado, mas funciona conforme o esperado quando eu uso caracteres imprimíveis no lugar do CR.
fonte
ForceLang, 123 bytes
datetime.toTimeString
é suportado na implementação de referência pelo JavaDateFormat.getTimeInstance()
, que depende da localidade, para que você possa configurar a localidade padrão do sistema para uma que use 24 horas.fonte
PowerShell,
30282420 bytesA região do meu computador foi alterada para a Alemanha com base em Alterei comentário do raznagul para economizar 4 bytes. :)
Versão anterior que funciona em todas as localidades.
fonte
tcl, 69 bytes
Experimente aqui!
fonte
Lote, 36 bytes
Onde
␈
representa o caractere ASCII BS (código 8).fonte
Raquete, 71 bytes
Onde o
↵
é realmente um CR (hex0d
). Dump hexadecimal do programa para mais esclarecimentos (byte de aviso na posição hex4d
):Usa SRFI / 19 incluído na distribuição de raquete.
(current-date)
obtém a data e hora local atual. Odate->string
formato~3
é o formato ISO-8601 hora-minuto-segundo.(let l () ... (l))
em um loop infinito idiomático.(require srfi/19)
carrega osrfi/19
módulo.fonte
C, 156 bytes
fonte
TI-Basic, 40 bytes
(No TI-BASIC, muitos caracteres são tokens de 2 bytes e dois pontos no início de uma linha são 0 bytes extras)
fonte
R, 41 bytes
Tem um espaço à direita (devido ao
cat
separador padrão ser um espaço).Devido à taxa de atualização da GUI do R, sua execução na GUI ocasionalmente pulará alguns segundos, mas se você o salvar em um arquivo e executá-lo na linha de comando, ele será exibido corretamente a cada segundo.
Funcionará para sempre até o usuário interromper.
fonte