24 та 12 годин


24

Напишіть програму або функцію без вводу, який друкує або повертає цей рядок 24-годинний і 12-годинний час:

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

Рядок повинен виводитись точно так, як це показано тут. Єдиним винятком є ​​те, що він необов'язково може мати один зворотний новий рядок.

Тож має бути хеш MD5 вашого виводу

827ae6e2dbb1df494930baedb3ee2653

якщо у вас немає останнього рядка та

cd4c3d18abee9bafb495f390a919a13f

Якщо ти зробиш. (Ваш хеш може бути іншим, якщо ваша система використовує інший тип нового рядка, але це нормально.)

Виграє найкоротший код у байтах. Тирбейкер - це відповідь раніше.


Відповіді:


13

Bash + coreutils, 43 30

  • Збережено 7 байт завдяки @Yossarian
  • Збережено 3 байти завдяки @AndersKaseorg
seq 0 23|date -f- +%R\ %l:00%P
  • seq генерує цілі числа 0-23, по одному на рядок.
  • dateінтерпретує кожен рядок як дату. Голі цілі числа, здається, є достатніми, щоб їх можна було визнати годинами дня date. dateпотім виводить кожен раз із необхідним форматуванням, використовуючи доступні специфікатори формату часу .

Передбачає LANG=Cлокаль, відповідно до цього метавідповіді .

Ідеон.


2
Можна навіть просто зробити seq 0 23і зберегти 7 байт
Yossarian

1
І %H:00%Rекономить ще 3.
Андерс Касеорг

@AndersKaseorg, nop, %Rвставляє провідний нуль, не потрібний ОП.
rexkogitans

@rexkogitans ведучого нуля є хотів (в першій колонці, яка є один я говорю).
Андерс Касеорг

@AndersKaseorg, о, ти говорив про перший ... тоді ти, звичайно, маєш рацію. Виправлено мій коментар вище.
rexkogitans

12

Python 2, 66 байт

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

1
modulo -12 розумний!
Ерік Аутгольфер

На всякий випадок, коли хтось задається питанням: i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24змінює код трьома різними способами, але кожна зміна має однакову довжину.
Sp3000

8

C, 73 байти

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

mIllIbyte знайшов особливо акуратний спосіб переписати цю відповідь. Спасибі!


Класно - я ніколи про це не знав?:
Digital Trauma

Я не знав! Цікаво. Я це виправив :)
Лінн

Ага, ну , я вважаю , що ?:насправді найближчий еквівалент Перлу ||, я вважаю. C ||більше схожий (a || b) ? 1 : 0.
Лінн

1
i++,i%12?:12,"ap"[i/12])не вистачає точки послідовності. Неможливо бути впевненим, коли це i++відбувається. Можливоfor(i=0;i<24;i++) ...i,i%12?:12,"ap"[i/12]...
chux

i++<24краще - не додає більше байтів у вихідний код
anatolyg

6

MATL, 46 42 34 байт

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

Раніше, 42 байт, 12tEt:q2M/736330+t15XObZ"!b16XOhhkw14:X~Z)і 46 байт, 736330 24t:qw/+t15XO' '24TX"b16XOhhk14: 12X~Z). Звичайно, 736330 не знадобився, це було божевільно!

Примітка. Не працює з TryItOnline, я думаю, що між реалізацією Matlab та Octaves існує сумісність datestr.

datestrприймає числове представлення дати та перетворює її в рядкове представлення цієї дати. Час дня є дробовою частиною числа, тому 0,0 корпоративів до 0 січня 0000, час 00:00:00, а 1,0 відповідає 1 січня 0000, 00:00:00. 1/24 - це 1 ранок, 2/24 2 ранки тощо.

Пояснення

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

Щоб показати, що це працює в Matlab, ось скріншот

введіть тут опис зображення


5

/// , 160 байт

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

Спробуйте в Інтернеті!

Безумовно

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 5:00 вечора
18:00 6:00 вечора
19:00 7:00 вечора
20:00 8:00 вечора
21:00 9:00 вечора
22:00 10:00 вечора
23:00 11:00 вечора


Веселий факт: перетворення :00на заміну на один байт довше ... TIO
steenbergh

@steenbergh Це тому :00, що це 3- байтова рядок, яка з’являється 3 рази. 3 × 3 = 9, заміна у вашому випадку коштує 3 + 1 + 3 = 7, оскільки вона використовує 1-байтовий псевдонім, а ви використовуєте його 3 рази, тому 7 + 3 = 10. 9 <10, тому я його не заміню.
Erik the Outgolfer

5

MarioLANG, 965 834 байт

Спробуйте в Інтернеті

ну це було смішно складним.

Технічно результат є дійсним, але на практиці вихід Tio для MarioLANG "n" ​​замість "n", коли ми друкуємо число з ":"

якщо я знайду час, я здогадаюся, я спробую зробити (можливо, набагато довше) версію програми, яка правильно виводить на Tio

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

Пояснення:

наша основна проблема тут полягає в тому, що ми маємо 6 NaN char (newLine, Space,:, a, p, m)

в marioLANG, для того, щоб надрукувати символи, нам потрібно їх значення ascii:

  • newLine - 10
  • Місце - 32
  • : є 58
  • a - 97
  • p - 112
  • м - 109

Тому перше, що потрібно зробити, це встановити пам'ять:

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

з цим пам'ять виглядає так:

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

ми перетворимо a в p під час решти програми

тоді ми робимо фактичний вихід:

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

4

Джулія, 88 71 66 64 байт

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

Це повна програма, яка друкує рядок за допомогою одного останнього рядка.

Спробуйте в Інтернеті!

Збережено 5 байт завдяки Sp3000 та 2 завдяки Деннісу!


4

Функція C #, 100 байт

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");}}

Негольована версія:

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() займає занадто багато символів!


Привіт, і ласкаво просимо до PPCG! Я трохи використовую C #, але що є головним $для рядка?
NoOneIsHere

3
@NoOneIsHere - Це називається "рядкова інтерполяція", і це нова функція в C # 6.0. Більше про це можна прочитати тут https://msdn.microsoft.com/en-us/library/dn961160.aspx .
СТЛДєв

3

JavaScript (ES2015), 147 138 137 134 133 байт

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

У цій версії я скористався методом String.repeat (), щоб позбутися тривалих .slice () і .join () і перемістив інкрементацію всередині циклу.

Попередня версія:

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

Дає вихід із заднім рядком. Тестується в Firefox Scratchpad. Не впевнений, чи правильно передавати аргументи IIFE з правилом "без введення".

Це моє перше подання, тож привіт усім! :)


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

Спробуйте в Інтернеті!

Перша спроба, трохи довше, але однолінійний:

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

Спробуйте в Інтернеті!


1
Зменшено до 121 символу: спробуйте в Інтернеті
Росс Пресер

@RossPresser ще раз ти мені допоміг, навчаючись тут багато
t-clausen.dk


2

Javascript, 122 байти , 120 байт

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')

Редагувати: виправлено невелику помилку + вихід:

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 байти

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

Спробуйте в Інтернеті!

Оскільки це може бути важко ввести, ось зворотний шестигранник:

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.

Версія неконкуруючій тривіальна 2 байта коротше , якщо замінити обидва входження G$з L, який повинен був бути таким же , але був помилка.

Пояснення:

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 байт

Збережено два байти завдяки carusocomputing

Код:

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

Спробуйте в Інтернеті!

Пояснення

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/… ;). Тепер питання про те, чи можна це оптимізувати чи не нижче 50, - це питання ха-ха.
Чарівний восьминога Урна

23Ýзамість 24L<1 байта. А як довго ëіснує? Я так глухо відчуваю, що досі не знаю про інші заяви в 05AB1E.
Чарівний восьминога Урна

@carusocomputing: Дякую! інше існує деякий час, але часом буває баггі. Особливо під час гніздування ifs.
Емінья

1

PowerShell v2 +, 76 байт

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

Петлі з 0..23кожної петлі встановлюють рядок з -fоператором. Перший {0:D2}забезпечує передбачувані нулі, другий {1,3}забезпечує наявність прокладених пробілів для середньої колони. В {0}один відповідає $_від -fоператора, в той час як {1}відповідає псевдо-потрійного , що вибирає між $_%12або на 12основі того , $_%12відмінний від нуля чи ні (тобто, якщо ми на $_=13це буде вибрати 1для 1:00 вечора). Потім ми пов'язуємо це з іншим псевдотерміналом, який обирає відповідний am/ pm.


На відміну від моєї відповіді на усі раз в день в половині погодинного , це насправді коротше тут , щоб груба сила числа , так як ми отримуємо значно дешевше відступи. Ось відповідь, використовуючи функції дати, в 78 байт

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

1

C ++, 81 79 байт

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

Цей код вимагає using namespace stdдесь перед ним.

Це робить цикл за значеннями 0 ... 23. Він множує кожне значення на 3600, перетворює на tmструктуру та друкує її. Формат друку %Rвиводить 24 години та хвилини; формати друку %lта %Pвиведення належних 12-годинних деталей; вони вимагають GNU .

Працюючий онлайн версія тут .


1

Рубі, 66 62 байт

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

Нова версія

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

1
24.timesкоротше. Немає потреби в просторах навколо puts.
манатура

Ви можете замінити (i-1)з ~-i2 байта.
Йорданія

1

JavaScript (ES6), 119 116 байт

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

1

Сліптінг, 76 байт

Програма передбачає, що вхід порожній (або '0'або що-небудь, що перетворюється на ціле число 0).

Кількість байтів передбачає кодування UTF-16.

군 上 ❶ 겠 小 꼀 虛 嗎 ❷ 꾣 갰글 ❷ 결 加 곀 增 ❶ 겠 小 글 虛 嗎 댆밁 꾣갰 ⓷⓼ 곀 小 掘 닐밊 終

Безголівки:

군 // 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

Кожна ітерація петлі залишає безліч маленьких рядків на стеку; наприкінці всі вони автоматично з’єднуються.


1

JavaScript, 97 95 байт

Це ґрунтується на відповіді зірки . Завдяки Джорджу Рейту за покращення в 2 байти.

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')

Безголівки:

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')

Ви можете зберегти 2 байти, переписавши n < 10як 9 < nі замінивши потрійні справи
Джордж Рейт

1

Пакетна, 167 байт

@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

Котлін , 95 байт

Це можна точно покращити.

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 байт

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";}
вибухнув вигляд
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";
}

Дещо здивований, намагався перетворити ($i < 10 ? $s : "") . "$i:00"біт на функцію, але він завершив додавання ~ 25 символів. Ні туди не йти.


0

Швидкий, 85 байт

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

Це не працює, принаймні не для мене на Swift 2.2. Вихід
JAL

Мені довелося змінити рядок вашого формату:String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
JAL

0

C Функція, 82 байти

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

Використання, 94 байт

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();}

Безлічі, 337 байт

#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();
}

він працює в Windows:

у попередженні ви можете знайти всю програму

Програма C, 85 байт

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

Можливо, вам знадобиться ініціалізація i=0для версії функції. А для версії програми ви можете mainввести код безпосередньо в нього - немає необхідності визначати функцію там!
anatolyg

Спасибі! відредаговано !! FYI: У версії funcion, якщо ви використовуєте її без парам, вона самостійно ініціалізується на 0!
Джакомо Гарабелло

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

"У версії funcion, якщо ви використовуєте її без парамів, вона самоініціалізується на 0!" Здається, це не є стандартом C. Будь-яка посилання на підтримку цього?
chux

я помітив, що він працює тільки на gcc, який я встановив у моїй системі Windows .. мій друг з Linux сказав мені, що він не працює на його ПК, але я не знаю, як це виправити для Linux ...
Джакомо Гарабелло

0

Foo, 163 байти

Досить жорстокий підхід; нічого розумного тут (я спробував у кількох місцях, але в кінцевому підсумку було коротше, щоб не), просто хотів дати постріл Фоо. Foo автоматично друкує що-небудь в межах лапок. $c10друкує розрив рядка. (## ... )циклів, поки поточна комірка не дорівнює ##.

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

Трохи невольфів:

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

Спробуйте в Інтернеті


0

Javascript (за допомогою зовнішньої бібліотеки - безліч) (107 байт)

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

Посилання на бібліотеку: https://github.com/mvegh1/Enumerable/

Пояснення коду: Створіть масив цілих чисел від 0 до 23 для кожного запису рядка відповідно до присудка. Цей предикат перевіряє, чи поточний val менше 10, і додає його до 0, інакше використовує поточний val таким, який є. Потім додає до нього рядок хвилин. Тоді, в основному, робиться невелика хитрість для перетворення військових на час am / pm, і обробляє набивання для am / pm разів менше 10.

введіть тут опис зображення


0

SmileBASIC, 73 байти

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

Хтось знайшов кращу 24-> 12-годинну формулу, ніж моя стара, яка зберігає 3 байти та 5 байт в іншій програмі


0

PHP, 67 65 64 байт

Для цього використовується кодування IBM-850.

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

З незашифрованим рядком (66 байт):

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

Бігайте так:

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

Налаштування

  • Збережено 2 байти, покращивши формат sprintf
  • Збережено байт, позбувшись зайвого місця (thx @Titus)

Ви можете використовувати -nзамість -d error_reporting=30709. Перед am/ не повинно бути місця pm. Збережіть один байт у незашифрованій версії за допомогою фізичного рядка.
Тит

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.