Horários de 24 e 12 horas


24

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.


Respostas:


13

Bash + coreutils, 43 30

  • Guardado 7 bytes graças a @Yossarian
  • Guardado 3 bytes graças a @AndersKaseorg
seq 0 23|date -f- +%R\ %l:00%P
  • seq gera números inteiros 0-23, um por linha.
  • dateinterpreta cada linha como uma data e hora. Inteiros vazios parecem ser suficientes para serem reconhecidos como horas do dia date. dateem seguida, sai sempre com a formatação necessária, usando os especificadores de formato de hora disponíveis .

Assume a LANG=Clocalidade, de acordo com esta meta resposta .

Ideone.


2
Você pode até fazer seq 0 23e salvar 7 bytes
Yossarian

11
E %H:00%Rsalva outro 3.
Anders Kaseorg

@AndersKaseorg, nop, %Rinsere um zero à esquerda, não desejado pelo OP.
Rexkogitans

@rexkogitans Um zero à esquerda é desejado (na primeira coluna, que é a de que estou falando).
Anders Kaseorg 01/01

@ AndersKaseorg, oh, você estava falando sobre o primeiro ... então você está certo, é claro. Corrigido meu comentário acima.
Rexkogitans

12

Python 2, 66 bytes

for i in range(24):print'%02d:00%3d:00%sm'%(i,12+i%-12,'ap'[i>11])

11
módulo -12 é inteligente!
Erik the Outgolfer

Caso alguém esteja se perguntando: i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24altera o código de três maneiras diferentes, mas cada alteração tem o mesmo comprimento.
Sp3000 31/05

8

C, 73 bytes

m(i){for(i=25;--i;)printf("%02d:00%3d:00%cm\n",24-i,12-i%12,"pa"[i/13]);}

O mIllIbyte encontrou uma maneira particularmente interessante de reescrever esta resposta. Obrigado!


Legal - eu nunca soube?:
Digital Trauma

Eu não sabia! Interessante. Eu fixo-lo :)
Lynn

Ahh, bem, ?:na verdade é o equivalente mais próximo do Perl ||, acredito. C's ||é mais parecido (a || b) ? 1 : 0.
Lynn

11
i++,i%12?:12,"ap"[i/12])falta um ponto de sequência. Não pode ter certeza de quando i++ocorre. Talvezfor(i=0;i<24;i++) ...i,i%12?:12,"ap"[i/12]...
chux

i++<24é melhor - não adiciona mais bytes ao código-fonte
anatolyg

6

MATL, 46 42 34 bytes

12tEt:qy/t15XObZ"!b16XOhhkw14:X~Z)

Anteriormente, 42 bytes 12tEt:q2M/736330+t15XObZ"!b16XOhhkw14:X~Z)e 46 bytes 736330 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.

datestrpega 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

12t         % push a 12 onto the stack and duplicate
Et          % double the 12 and duplicate the 24 (stack now has 12, 24, 24, bottom to top)
:q          % make vector 1:24 and decrement by 1, stack has 12, 24, 0:23
y           % duplicate second element on stack (24)
/           % divide, for (0:23)/24
t           % duplicate elements
15XO        % string representation of date, 15 specifies format
b           % bubble up element in stack (gets a 24 on top of the stack)
Z"!         % makes a column of 24 spaces, to put between columns of times
b           % bubble up another (0:23)/24 
16XO        % string representation of date, 16 for a different format
hh          % concatenate two time vectors and the column of spaces
k           % convert string to lowercase, because CO gives AM/PM not am/pm
w           % swap elements in stack, that first 12 is now on top
14:         % vector of equally spaced values 1:14
X~          % set exclusive-or, returns [1 2 3 4 5 6 7 8 9 10 11 13 14]
Z)          % get the right columns of the string array to remove extra column of blanks
            % implicit display

Para mostrar que funciona no Matlab, aqui está uma captura de tela

insira a descrição da imagem aqui


5

/// , 160 bytes

/Z/:00 //S/Z //A/:00am
//P/:00pm
/00Z12A01S1A02S2A03S3A04S4A05S5A06S6A07S7A08S8A09S9A10Z10A11Z11A12Z12P13S1P14S2P15S3P16S4P17S5P18S6P19S7P20S8P21S9P22Z10P23Z11P

Experimente online!

Ungolfed

00:00 12:00
01:00 1:00
02:00 2:00
03:00 3:00
04:00 4:00
05:00 5:00
06:00 6:00
07:00 7:00
08:00 8:00
09:00 9:00
10:00 10:00
11:00 11:00
12:00 12:00
13:00 13:00
14:00 14:00
15:00 15:00
16:00 16:00
17:00 17:00
18:00 18:00
19:00 19:00
20:00 20:00
21:00 21:00
22:00 22:00
23:00 23:00


Curiosidade: fazendo o :00em uma substituição é um byte mais ... TIO
steenbergh

@steenbergh Isso ocorre porque :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.
Erik the Outgolfer

5

MarioLANG, 965 834 bytes

Experimente 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:

  • newLine é 10
  • O espaço é 32
  • : é 58
  • a é 97
  • p é 112
  • m é 109

Portanto, a primeira coisa a fazer é definir a memória:

++<>) +++@++++>   [!) >)> !
++""+ +"=====""====#) "+"==
+++)+ +>>+++++- <+<)->+++ 
+>+++ ++"====<( ")")-"!+++
+(+++>++!++)<+( ++++-+++++
 -))+)=(#==="+( ++++)+++++
 [!!+-[!(+++!!! !+!<+!++!>
==##===#====###=#=#"=##=#"

com isso, a memória se parece com:

                   v   
  32 58 0 0 97 109 10 0
  _  :      a   m  \n

transformaremos a em p durante o resto do programa

então fazemos a saída real:

++<>) +++@++++>   [!) >)>((((::(.)::((.))+:+:--(.)::)).).).)+++++++++
++""+ +"=====""====#) "+"============================================
+++)+ +>>+++++- <+<)->+++ ![-).).).))(::)).(:(:)))..(((::)).(:+(:((((<
+>+++ ++"====<( ")")-"!+++#=========================================="
+(+++>++!++)<+( ++++-+++++>
 -))+)=(#==="+( ++++)+++++"==========================================!
 [!!+-[!(+++!!! !+!<+!++!>(((((+:(.))::(((.
==##===#====###=#=#"=##=#"=================<
++++)))+++++++++++++++(((![-).).).)::)).(:))   >
>========================#==================   "
+>+ >
+"+ "=======================================[   =====================#===============[
+!> ! -).).).))(::)).)):+(..(((::)).(:+(((((<++!-).).).))(::)).)):+(.(((::)).(:+(((((<
=#==#======================================="==#======================================

4

Julia, 88 71 66 64 bytes

[@printf "%02d:00%3d:00%cm
" i-11 i%12+1 i>22?112:97for i=11:34]

Este é 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!


4

Função C #, 100 bytes

void F(){for(int i=0;i<24;i++){Console.Write($"{i:00}:00 {(i+11)%12+1,2}:00 {(i>11?"p":"a")}m\n");}}

Versão não destruída:

void F()
{
    for (int i = 0; i < 24; i++)
    {
        Console.Write($"{i:00}:00 {(i + 11)%12 + 1,2}:00 {(i > 11 ? "p" : "a")}m\n");
    }
}

Console.Write() leva muitos caracteres!


Olá, e bem-vindo ao PPCG! Uso um pouco de c #, mas o que o líder está $fazendo com a string?
NoOneIsHere

3
@NoOneIsHere - Isso é chamado de "interpolação de string" e é um novo recurso do C # 6.0. Você pode ler mais sobre isso aqui https://msdn.microsoft.com/en-us/library/dn961160.aspx .
STLDev

3

JavaScript (ES2015), 147 138 137 134 133 bytes

((o,x,r)=>{for(i=0;i<24;)b=i%12,c=b||12,o+='0'[r](i<10)+i+++x+' '[r]((c<10)+1)+c+x+(i<13?'a':'p')+"m\n";return o})('',':00','repeat')

Nesta 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:

((o,x,i)=>{for(;i<24;i++){b=i%12;o+=[`0${i+x}`.slice(-5),(b||12)+x+(i<12?'a':'p')+'m'].join(' '.repeat((b>0&&b<10)+1))+"\n"}return o})('',':00',0)

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! :)


3

TSQL (SQLServer 2012) 146 124 121

DECLARE @ DATETIME=0WHILE @<1BEGIN PRINT
CONVERT(char(5),@,108)+' '+LOWER(RIGHT(FORMAT(@,'g'),8))SET @=dateadd(hh,1,@)END

Experimente online!

Primeira tentativa, um pouco mais, mas uma linha:

SELECT CONVERT(char(5),n,108)+' '+LOWER(RIGHT(FORMAT(n,'g'),8))FROM(SELECT
top 24 dateadd(hh,Number,0)n FROM master..spt_values WHERE'P'=type)x

Experimente online!


11
Reduzido a 121 caracteres: experimentá-lo on-line
Ross Presser

@RossPresser mais uma vez você me ajudou, aprendendo um monte aqui
t-clausen.dk

2

Perl 5, 58

map{printf"%02u:00%3u:00%sm
",$_,$_%12||12,$_>11?p:a}0..23

2

Javascript, 122 bytes , 120 bytes

f=j=>j>12?j-12:j;for(i=0;i<24;i++)console.log('%s:00 %s:00%s',i<10?'0'+i:i,i==0?12:f(i)<10?' '+f(i):f(i),i>11?'pm':'am')

Edit: Pequeno bug corrigido + saída:

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


2

V , 56 53 bytes

i00:00 23ñYpñH12G$yP13G$pgvó $/am
í/pm
í 0/  
í/12

Experimente online!

Como isso pode ser difícil de inserir, aqui está um hexdump reversível:

00000000: 6930 303a 3030 201b 3233 f159 7001 f148  i00:00 .23.Yp..H
00000010: 1631 3247 2479 5031 3347 2470 6776 f320  .12G$yP13G$pgv. 
00000020: 242f 616d 0aed 2f70 6d0a ed20 302f 2020  $/am../pm.. 0/  
00000030: 0aed 2f31 320a                           ../12.

Uma versão não-competitiva é trivialmente 2 bytes mais curta se você substituir as duas ocorrências de G$with L, que deveria ser a mesma, mas tinha um bug.

Explicação:

i00:00<esc>                                     #Enter the starting text.
           23ñYp<C-a>ñ                          #Duplicate and increment 23 times
                      H                         #Move back to the beginning
                       <C-v>12G$y               #Select 12 lines horizontally
                                 P              #Horizontally paste
                                  13G$p         #Move to line 13 and Horizontally paste again
                                       gv       #Reselect the top 12 lines
                                         ó $/am #Replace a space at the end of the line with 'am'

í/pm      #Replace the previous search with 'pm'
í 0/      #Replace "Space+0" with 2 spaces
í/12      #Replace the previous search with "12"

2

05AB1E , 51 50 48 44 42 bytes

Economizou dois bytes graças à carusocomputação

Código:

24FNgi0}N…:00©ðN12(%12+Dgiðs}®„paN12‹è'mJ,

Experimente online!

Explicação

24F                                         # for N in [0...23]
   Ngi0}                                    # if len(N)=1, push 0
        N                                   # push N
         …:00©                              # push ":00" and store a copy in register
             ð                              # push " "
              N12(%12+D                     # push 2 copies of N%(-12)+12
                       giðs}                # if the length of that number is 1, 
                                            # push " " and swap with the number
                            ®               # push ":00" again
                             „pa            # push "pa"
                                N12‹è       # index into that with N<12
                                     'm     # push "m"
                                       J,   # join everything and print with newline

codegolf.stackexchange.com/questions/103242/… ;). Agora, se isso pode ou não ser otimizado abaixo de 50, está em questão haha.
Magic Octopus Urn

23Ýem vez de 24L<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.
Magic Octopus Urn

@carusocomputing: Obrigado! já existe há algum tempo, mas às vezes tem bugs. Especialmente ao aninhar ifs.
Emigna

1

PowerShell v2 +, 76 bytes

0..23|%{"{0:D2}:00{1,3}:00"-f$_,(($_%12),12)[!($_%12)]+('am','pm')[$_-ge12]}

Os loops de 0..23e cada loop definem uma sequência com o -foperador. 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 -foperador, enquanto os {1}corresponde à pseudo-ternários que escolhe entre $_%12ou 12com base em se $_%12é diferente de zero ou não (ou seja, se estamos em $_=13, isso vai escolher 1para 13:00). Em seguida, concatenamos isso com outro pseudo-ternário que escolhe o am/ apropriado pm.


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

0..23|%{(Date -h $_ -f 'HH:00')+(Date -h $_ -f "h:00tt").ToLower().PadLeft(8)}

1

C ++, 81 79 bytes

[]{for(time_t t=0,y;t<24;cout<<put_time(gmtime(&y),"%R %l:00%P\n"))y=t++*3600;}

Este código requer um using namespace stdlugar que o preceda.

Faz um loop nos valores 0 ... 23. Multiplica cada valor por 3600, converte em uma tmestrutura e imprime. O formato de impressão %Rgera 24 horas e minutos; a impressão formata %le %Pproduz as peças adequadas de 12 horas; eles exigem GNU .

Uma versão online funcional está aqui .


1

Ruby, 66 62 bytes

0.upto(23){|i| puts "%02d:00%3d:00#{'ap'[i/12]}m"%[i,(i-1)%12+1]}

Nova versão

24.times{|i|puts"%02d:00%3d:00#{'ap'[i/12]}m"%[i,(i-1)%12+1]}

11
24.timesé mais curto. Não há necessidade de espaços ao redor puts.
manatwork

Você pode substituir (i-1)com ~-ipor 2 bytes.
Jordânia

1

JavaScript (ES6), 119 116 bytes

_=>Array(24).fill().map((_,i)=>`${`0${i}`.slice(-2)}:00 ${` ${(i+11)%12+1}`.slice(-2)}:00${'ap'[+(i>11)]}m`).join`
`

1

Sclipting, 76 bytes

O programa assume que a entrada está vazia ( '0'ou qualquer coisa que se converta no número inteiro 0).

A contagem de bytes assume a codificação UTF-16.

군 上 ❶ 겠 小 虛 嗎 ❷ 갰글 ❷ 결 加 剩 增 ❶ 겠 小 글 虛 嗎 댆밁 ⓷ 꾣갰 嗎 댆밁 ⓷ 꾣갰 嗎 嗎 댆밁 꾣갰 虛 嗎

Ungolfed:

군 // 23
上 // for loop (goes from 0 to 23 if input is 0)
    ❶겠小꼀虛嗎 // n < 10 ? "0" : ""
    ❷          // n
    꾣갰글      // ":00 "
    ❷결加곀剩增 // k = (n+11) % 12 + 1
    ❶겠小글虛嗎 // k < 10 ? " " : ""
    댆밁       // "pa"
    ⓷         // Pull n to top of stack
    꾣갰       // ":00"
    ⓷         // Pull "pa" to top of stack
    ⓼         // Pull k to top of stack
    곀小掘     // "pa"[k < 10 ? 1 : 0]
    닐밊       // "m\n"
終 // end of for loop

Cada iteração do loop deixa muitas pequenas seqüências na pilha; no final, todos são automaticamente concatenados.


1

JavaScript, 97 95 bytes

Isso se baseia na resposta da Starcorder . Agradecemos a George Reith por uma melhoria de 2 bytes.

for(i=0,k=12;i<24;k=i++%12+1)console.log('%s:00 %s:00%sm',i>9?i:'0'+i,k>9?k:' '+k,i>11?'p':'a')

Ungolfed:

for (i=0, k=12; i < 24; k = (i++) % 12 + 1)
    console.log('%s:00 %s:00%sm',
        i > 9 ? i : '0' + i,
        k > 9 ? k : ' ' + k,
        i > 11 ? 'p' : 'a')

Você pode salvar 2 bytes por reescrever n < 10como 9 < ne trocando os casos ternários
George Reith

1

Lote, 167 bytes

@echo off
set h=11
set p=a
for /l %%a in (0,1,23)do call:e %%a
exit/b
:e
set a=0%1
set/ah=h%%12+1
set h= %h%
if %1==12 set p=p
echo %a:~-2:00 %h:~-2%:00%p%m

1

Kotlin , 95 bytes

Pode ser melhorado com certeza.

fun p(){for(i in 0..23)println("%02d:00 ${(i+11)%12+1}:00${if(i>12)"p" else "a"}m".format(i))}

0

PHP, 110 107 bytes

for($h=0;$h<24;){$m=($h+11)%12+1;echo($h<10?0:"")."$h:00 ".($m<10?" ":"")."$m:00".($h++<12?"a":"p")."m\n";}
vista expandida
for ($h=0; $h<24; ) {
  $m = ($h+11) % 12 + 1;
  echo ($h < 10 ?  0  : "") . "$h:00 " .
       ($m < 10 ? " " : "") . "$m:00"  . ($h++ < 12 ? "a" : "p") . "m\n";
}

Um tanto surpreso, tentou transformar o ($i < 10 ? $s : "") . "$i:00"bit em uma função, mas acabou adicionando ~ 25 caracteres. Não vá lá.


0

Rápido, 85 bytes

for x in 0...23{print(String(format:"%02d:00 %2d:00\(x<12 ?"a":"p")m",x,12+x % -12))}

Isso não funciona, pelo menos não para mim no Swift 2.2. Saída
JAL

Eu tive que mudar sua string de formato:String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
JAL

0

Função C, 82 bytes

m(i){for(;i<24;printf("%02d:00 %2d:00%cm\n",i,i%12==0?12:i%12,i>11?'p':'a'),i++);}

Uso, 94 Byte

m(i){for(;i<24;printf("%02d:00 %2d:00%cm\n",i,i%12==0?12:i%12,i>11?'p':'a'),i++);}main(){m();}

Ungolfed, 337 Bytes

#include <stdio.h>
void m(){
    int i,a;
    char c;
    for(i=0;i<24;i++){
        if (i%12==0){
            a = 12;
        }
        else{
            a = i%12;
        }
        if (i>11){
            c = 'p';
        } else{
            c = 'a';
        }
        printf("%02d:00 %2d:00%cm\n",i,a,c);
    }
}
int main(){
    m();
}

funciona no Windows:

no aviso você pode encontrar o programa inteiro

Programa C, 85 bytes

main(i){for(;i<24;printf("%02d:00 %2d:00%cm\n",i,i%12==0?12:i%12,i>11?'p':'a'),i++);}

Você pode precisar de inicialização i=0para a versão da função. E para a versão do programa, você pode inserir o código diretamente main- não há necessidade de definir uma função lá!
Anatolyg 31/05

Obrigado! editado!! FYI: Na versão funcional, se você a usar sem parâmetros, ela será auto-inicializada em 0!
Giacomo Garabello

i%12==0?12:i%12->i%12?i%12:12
chux - Restabelece Monica

"Na versão funcional, se você a usar sem parâmetros, ela será auto-inicializada em 0!" Isso não parece ser o padrão C. Alguma referência para apoiar isso?
chux - Restabelece Monica

notei que funciona apenas no gcc que instalei no meu sistema windows .. um amigo meu com linux me disse que não funciona no seu pc, mas não sei como corrigi-lo no linux ...
Giacomo Garabello

0

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. $c10imprime uma quebra de linha. (## ... )loops até que a célula atual seja igual ##.

"00:00 12:00am"$c10+1(10"0"$i":00  "$i":00am"$c10+1)(12$i":00 "$i":00am"$c10+1)"12:00 12:00pm"$c10+1(22$i":00  ">+1$i<":00pm"$c10+1)(24$i":00 ">+1$i<":00pm"$c10+1)

Ungolfed um pouco:

"00:00 12:00am"$c10+1
(10"0"$i":00  "$i":00am"$c10+1)
(12$i":00 "$i":00am"$c10+1)
"12:00 12:00pm"$c10+1
(22$i":00  ">+1$i<":00pm"$c10+1)
(24$i":00 ">+1$i<":00pm"$c10+1)

Experimente online


0

Javascript (usando biblioteca externa - Enumerável) (107 bytes)

_.Range(0,24).WriteLine(x=>((x<10?"0"+x:x)+":00 "+(((h=((x+11)%12)+1))<10?" "+h:h)+":00"+(x<12?"am":"pm")))

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.

insira a descrição da imagem aqui


0

SmileBASIC, 73 bytes

FOR H=0TO 23?FORMAT$(%02D:00 %2D:00%Sm",H,(H+11)MOD 12+1,"ap"[H>11])NEXT

Alguém encontrou uma fórmula melhor de 24-> 12 horas que a antiga, que economiza 3 bytes e 5 bytes em outro programa


0

PHP, 67 65 64 bytes

Isso usa a codificação IBM-850.

for(;$i<24;)printf(~┌¤═ø┼¤¤┌╠ø┼¤¤┌îƧ,$i,$i%12?:12,$i++>11?p:a);

Com a sequência não codificada (66 bytes):

for(;$i<24;)printf("%02d:00%3d:00%sm\n",$i,$i%12?:12,$i++>11?p:a);

Execute assim:

php -n -r 'for(;$i<24;)printf(~┌¤═ø┼¤¤┌╠ø┼¤¤┌îƧ,$i,$i%12?:12,$i++>11?p:a);'

Tweaks

  • Economizou 2 bytes melhorando o formato sprintf
  • Economizou um byte ao se livrar de espaço desnecessário (thx @Titus)

Você pode usar em -nvez de -d error_reporting=30709. Não deve haver espaço antes am/ pm. Salve um byte na versão não codificada com uma quebra de linha física.
Titus

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.