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

如果你这样做。(如果您的系统使用其他类型的换行符,则您的哈希值可能会有所不同,但这没关系。)

以字节为单位的最短代码获胜。抢七是较早的答案。


Answers:


13

Bash + coreutils,43 30

  • @Yossarian节省了7个字节
  • @AndersKaseorg节省了3个字节
seq 0 23|date -f- +%R\ %l:00%P
  • seq 生成整数0-23,每行一个。
  • date将每行解释为日期时间。裸整数似乎足以将识别为一天中的小时datedate然后使用可用的时间格式说明符每次输出所需的格式。

LANG=C根据此meta答案,假定语言环境。

伊迪恩


2
您甚至可以seq 0 23保存7个字节
-Yossarian

1
%H:00%R保存另一个3
安德斯Kaseorg

@ AndersKaseorg,nop,%R插入OP不需要的前导零。
rexkogitans '16

@rexkogitans前导零希望(在第一列,这是我在谈论的一个)。
Anders Kaseorg '16

@AndersKaseorg,哦,你在谈论第一个……那你当然是对的。更正了我上面的评论。
rexkogitans '16

12

Python 2,66字节

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


以防万一有人想知道:i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24以三种不同的方式更改代码,但是每次更改的长度都是相同的。
Sp3000 '16

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

我不知道!有趣。我已修复它:)
林恩(Lynn)

我相信,嗯,?:实际上与Perl最接近||。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对应于时间00:00:00的一月0,0000,而1.0对应于00:00:00的0000年1月1日。1/24是1 am、2/24 2am等。

说明

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 am
01:00 1:00 am
02:00 2:00 am
03:00 3:00 am
04:00 4:00 am
05:00 5:00 am
06:00 6:00 am
07:00 7:00 am
08:00 8:00 am
09:00 9:00 am
10:00 10:00 am
11:00 11:00 am
12:00 12:00 pm
13:00 1:00 pm
14:00 2:00 pm
15:00 3:00 pm
16:00 4:00 pm
17:00 5:00 pm
18:00 6:00 pm
19:00 7:00 pm
20:00 8:00 pm
21:00 9:00 pm
22:00下午10:00
23:00 11:00 pm


有趣的事实:将其:00替换要多一个字节... TIO
steenbergh

@steenbergh这是因为:00一个3字节的字符串出现了3次。3×3 = 9,在您的情况下进行替换需要3 + 1 + 3 = 7,因为它使用1字节的别名,并且使用了3次,因此7 + 3 = 10。9 <10,所以我不会取代它。
Egg the Outgolfer '17

5

MarioLANG,965个 834字节

在线尝试

嗯,这太荒谬了。

从技术上讲,输出是有效的,但实际上,当我们使用':'打印数字时,Tio for MarioLANG输出为“ n”而不是“ n”

如果我发现时间,我想我会尝试做一个(可能更长的时间)在Tio上正确输出的程序版本

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

说明:

我们这里的主要问题是我们有6个NaN字符(newLine,Space,:,a,p,m)

在marioLANG中,为了打印字符,我们需要它们的ascii值:

  • newLine是10
  • 空间是32
  • 是58
  • 一个是97
  • p是112
  • m是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]

这是一个完整的程序,它使用单行尾换行符来打印字符串。

在线尝试!

Sp3000节省了5个字节,Dennis节省了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/zh-cn/library/dn961160.aspx了解更多信息。
STLDev '16

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个字符:在线试用
Ross Presser 2016年

@RossPresser再次您帮助了我,在这里学习了很多
t-clausen.dk 2016年

2

Perl 5,58

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

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

V56 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,这应该是相同的,但有一个bug。

说明:

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

05AB1E51 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以下是个问题哈哈。
魔术八达通Ur

23Ý而不是24L<1个字节。而且已经ë存在多久了?直到现在我都不知道05AB1E中的else语句,这让我感到非常愚蠢。
魔术章鱼缸

@carusocomputing:谢谢!别的东西已经存在了一段时间,但有时是越野车。特别是在嵌套ifs时。
Emigna '17

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}对应于伪三元那之间进行选择$_%1212根据是否$_%12是非零或不(即,如果我们在$_=13,这将选择1为下午1:00)。然后,我们将其与另一个选择适当的am/的伪三进制连接起来pm


与我一天半小时都List上的答案相反,实际上,这里的数字要短一些,因为我们得到的填充要便宜得多。这是使用日期函数的答案,为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

Ruby,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
manatwork'6

您可以替换(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'或任何转换为​​integer的东西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字节

这是基于starcorder的回答。感谢George Reith改进了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')

您可以通过重写n < 10as 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

Kotlin,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

Swift,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上不行。 输出
2016年

我不得不更改您的格式字符串: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();}

Ungolfed,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

谢谢!编辑!仅供参考:在funcion版本中,如果您不带参数使用它,则它会自我初始化为0!
贾科莫·加拉贝洛

i%12==0?12:i%12->i%12?i%12:12
chux-恢复莫妮卡

“在funcion版本中,如果不带参数使用它,则它会自我初始化为0!” 这似乎不是标准C。是否有任何引用支持此标准?
chux-恢复莫妮卡

我已经注意到它仅适用于我已经安装了Windows系统上gcc的..我的linux的一个朋友告诉我,这是行不通的在他的电脑,但我不知道如何解决它为Linux ...
Giacomo Garabello

0

Foo,163个字节

蛮力的方法;这里没有什么聪明的(我在几个地方尝试过,但最终却变得更短了),只是想给Foo一枪。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。然后向其中添加分钟字符串。然后基本上做了一些技巧,将军事单位转换为上午/下午时间,并处理小于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);'

调整

  • 通过改进sprintf格式节省了2个字节
  • 通过消除不必要的空间来节省一个字节(thx @Titus)

您可以使用-n代替-d error_reporting=30709am/ 之前不能有空格pm。使用物理换行符将一个字节保存在未编码版本上。
泰特斯

0

tcl,93

set i 0;time {puts [format %02d:00%3d:00[expr $i<12?"a":"p"]m $i [expr $i%-12+12]];incr i} 24

演示

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.