Escreva um programa ou função sem entrada que imprima ou retorne essa sequência de 24 e 12 horas :
00:00 12:00am
01:00 1:00am
02:00 2:00am
03:00 3:00am
04:00 4:00am
05:00 5:00am
06:00 6:00am
07:00 7:00am
08:00 8:00am
09:00 9:00am
10:00 10:00am
11:00 11:00am
12:00 12:00pm
13:00 1:00pm
14:00 2:00pm
15:00 3:00pm
16:00 4:00pm
17:00 5:00pm
18:00 6:00pm
19:00 7:00pm
20:00 8:00pm
21:00 9:00pm
22:00 10:00pm
23:00 11:00pm
A string deve ser impressa exatamente como aparece aqui. A única exceção é que ele pode opcionalmente ter uma única nova linha à direita.
Portanto, o hash MD5 da sua saída deve ser
827ae6e2dbb1df494930baedb3ee2653
se você não tiver uma nova linha à direita e
cd4c3d18abee9bafb495f390a919a13f
se você fizer. (Seu hash pode ser diferente se o sistema usar outro tipo de nova linha, mas tudo bem.)
O código mais curto em bytes vence. O desempatador é a resposta anterior.
code-golf
string
kolmogorov-complexity
arithmetic
date
Passatempos de Calvin
fonte
fonte
Respostas:
Bash + coreutils,
4330seq
gera números inteiros 0-23, um por linha.date
interpreta cada linha como uma data e hora. Inteiros vazios parecem ser suficientes para serem reconhecidos como horas do diadate
.date
em seguida, sai sempre com a formatação necessária, usando os especificadores de formato de hora disponíveis .Assume a
LANG=C
localidade, de acordo com esta meta resposta .Ideone.
fonte
seq 0 23
e salvar 7 bytes%H:00
→%R
salva outro 3.%R
insere um zero à esquerda, não desejado pelo OP.Python 2, 66 bytes
fonte
i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24
altera o código de três maneiras diferentes, mas cada alteração tem o mesmo comprimento.C, 73 bytes
O mIllIbyte encontrou uma maneira particularmente interessante de reescrever esta resposta. Obrigado!
fonte
?:
?:
na verdade é o equivalente mais próximo do Perl||
, acredito. C's||
é mais parecido(a || b) ? 1 : 0
.i++,i%12?:12,"ap"[i/12])
falta um ponto de sequência. Não pode ter certeza de quandoi++
ocorre. Talvezfor(i=0;i<24;i++) ...i,i%12?:12,"ap"[i/12]...
i++<24
é melhor - não adiciona mais bytes ao código-fonteMATL,
464234 bytesAnteriormente, 42 bytes
12tEt:q2M/736330+t15XObZ"!b16XOhhkw14:X~Z)
e 46 bytes736330 24t:qw/+t15XO' '24TX"b16XOhhk14: 12X~Z)
,. Claro que o 736330 não era necessário, isso era loucura!Nota: Não funciona com o TryItOnline, acho que há um problema de compatibilidade entre a implementação do Matlab e do Octaves
datestr
.datestr
pega a representação numérica de uma data e a converte na representação em seqüência dessa data. A hora do dia é a parte fracionária do número; portanto, 0,0 corresponde a 0 de janeiro de 0000, no horário 00:00:00, e 1,0 corresponde a 1 de janeiro de 0000, às 00:00:00. 1/24 é 01:00, 2/24 02:00 etc.Explicação
Para mostrar que funciona no Matlab, aqui está uma captura de tela
fonte
/// , 160 bytes
Experimente online!
Ungolfed
fonte
:00
em uma substituição é um byte mais ... TIO:00
é uma string de 3 bytes que aparece 3 vezes. 3 × 3 = 9, fazer uma substituição no seu caso custa 3 + 1 + 3 = 7, pois ele usa um alias de 1 byte e você o usa 3 vezes, então 7 + 3 = 10. 9 <10, então não vou substituí-lo.MarioLANG,
965834 bytesExperimente online
bem, isso foi ridiculamente complicado.
Tecnicamente, a saída é válida, mas, na prática, a saída do Tio for MarioLANG "n" em vez de "n" quando imprimimos um número com ':'
se eu encontrar o tempo, acho que tentarei fazer uma versão (provavelmente muito mais longa) do programa que seja exibida corretamente no Tio
Explicação:
nosso principal problema aqui é o fato de termos 6 NaN char (newLine, Space,:, a, p, m)
em marioLANG, para imprimir caracteres, precisamos do valor ASCII:
Portanto, a primeira coisa a fazer é definir a memória:
com isso, a memória se parece com:
transformaremos a em p durante o resto do programa
então fazemos a saída real:
fonte
Julia,
88716664 bytesEste é um programa completo que imprime a string com uma única nova linha à direita.
Experimente online!
Economizou 5 bytes graças ao Sp3000 e 2 graças ao Dennis!
fonte
Função C #, 100 bytes
Versão não destruída:
Console.Write()
leva muitos caracteres!fonte
$
fazendo com a string?JavaScript (ES2015),
147138137134133 bytesNesta versão, aproveitei o método String.repeat () para livrar-se dos longos .slice () e .join () e movi a incrementação dentro do loop.
Versão anterior:
Dá saída com nova linha à direita. Testado no Firefox Scratchpad. Não tenho certeza se a passagem de argumentos para o IIFE está correta com a regra "sem entrada".
É a minha primeira submissão, então olá a todos! :)
fonte
TSQL (SQLServer 2012)
146124121Experimente online!
Primeira tentativa, um pouco mais, mas uma linha:
Experimente online!
fonte
Perl 5, 58
fonte
Javascript,
122 bytes, 120 bytesEdit: Pequeno bug corrigido + saída:
fonte
V ,
5653 bytesExperimente online!
Como isso pode ser difícil de inserir, aqui está um hexdump reversível:
Uma versão não-competitiva é trivialmente 2 bytes mais curta se você substituir as duas ocorrências de
G$
withL
, que deveria ser a mesma, mas tinha um bug.Explicação:
fonte
05AB1E ,
5150484442 bytesEconomizou dois bytes graças à carusocomputação
Código:
Experimente online!
Explicação
fonte
23Ý
em vez de24L<
1 byte. E há quanto tempoë
? Eu me sinto tão idiota por não saber mais sobre as declarações de 05AB1E até agora.PowerShell v2 +, 76 bytes
Os loops de
0..23
e cada loop definem uma sequência com o-f
operador. O primeiro{0:D2}
garante que temos zeros anexados, o segundo{1,3}
garante que temos espaços preenchidos para a coluna do meio. Os{0}
uma corresponde ao$_
do-f
operador, enquanto os{1}
corresponde à pseudo-ternários que escolhe entre$_%12
ou12
com base em se$_%12
é diferente de zero ou não (ou seja, se estamos em$_=13
, isso vai escolher1
para 13:00). Em seguida, concatenamos isso com outro pseudo-ternário que escolhe oam
/ apropriadopm
.Ao contrário da minha resposta na lista de todos os horários do dia a uma taxa de meia hora , na verdade é mais curto aqui para forçar os números de forma bruta, pois obtemos um preenchimento significativamente mais barato. Aqui está a resposta usando as funções de data, em 78 bytes
fonte
C ++,
8179 bytesEste código requer um
using namespace std
lugar que o preceda.Faz um loop nos valores 0 ... 23. Multiplica cada valor por 3600, converte em uma
tm
estrutura e imprime. O formato de impressão%R
gera 24 horas e minutos; a impressão formata%l
e%P
produz as peças adequadas de 12 horas; eles exigem GNU .Uma versão online funcional está aqui .
fonte
Ruby,
6662 bytesNova versão
fonte
24.times
é mais curto. Não há necessidade de espaços ao redorputs
.(i-1)
com~-i
por 2 bytes.JavaScript (ES6),
119116 bytesfonte
Sclipting, 76 bytes
O programa assume que a entrada está vazia (
'0'
ou qualquer coisa que se converta no número inteiro0
).A contagem de bytes assume a codificação UTF-16.
Ungolfed:
Cada iteração do loop deixa muitas pequenas seqüências na pilha; no final, todos são automaticamente concatenados.
fonte
JavaScript,
9795 bytesIsso se baseia na resposta da Starcorder . Agradecemos a George Reith por uma melhoria de 2 bytes.
Ungolfed:
fonte
n < 10
como9 < n
e trocando os casos ternáriosLote, 167 bytes
fonte
Kotlin , 95 bytes
Pode ser melhorado com certeza.
fonte
PHP,
vista expandida110107 bytesUm tanto surpreso, tentou transformar o
($i < 10 ? $s : "") . "$i:00"
bit em uma função, mas acabou adicionando ~ 25 caracteres. Não vá lá.fonte
Rápido, 85 bytes
fonte
String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
Função C, 82 bytes
Uso, 94 Byte
Ungolfed, 337 Bytes
funciona no Windows:
Programa C, 85 bytes
fonte
i=0
para a versão da função. E para a versão do programa, você pode inserir o código diretamentemain
- não há necessidade de definir uma função lá!i%12==0?12:i%12
->i%12?i%12:12
Foo, 163 bytes
Abordagem de força bruta; nada inteligente aqui (tentei em alguns lugares, mas acabou sendo mais curto para não), só queria dar uma chance a Foo. O Foo imprime automaticamente qualquer coisa entre aspas.
$c10
imprime uma quebra de linha.(## ... )
loops até que a célula atual seja igual##
.Ungolfed um pouco:
Experimente online
fonte
Javascript (usando biblioteca externa - Enumerável) (107 bytes)
Link para a biblioteca: https://github.com/mvegh1/Enumerable/
Explicação do código: Crie uma matriz de números inteiros de 0 a 23, para cada gravação de uma linha de acordo com o predicado. Esse predicado verifica se o valor atual é menor que 10 e o preenche com 0; caso contrário, ele usa o valor atual. Em seguida, adiciona a sequência de minutos a ele. Então, basicamente, é feito um pequeno truque para converter militares em horário am / pm, e lida com o preenchimento por horário am / pm menor que 10.
fonte
SmileBASIC, 73 bytes
Alguém encontrou uma fórmula melhor de 24-> 12 horas que a antiga, que economiza 3 bytes e 5 bytes em outro programa
fonte
PHP,
676564 bytesIsso usa a codificação IBM-850.
Com a sequência não codificada (66 bytes):
Execute assim:
Tweaks
fonte
-n
vez de-d error_reporting=30709
. Não deve haver espaço antesam
/pm
. Salve um byte na versão não codificada com uma quebra de linha física.tcl, 93
demonstração
fonte