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

もしあなたがそうするなら。(システムが別のタイプの改行を使用している場合、ハッシュは異なる可能性がありますが、それは問題ありません。)

バイト単位の最短コードが優先されます。Tiebreakerは以前の回答です。


回答:


13

Bash + coreutils、43 30

  • @Yossarianのおかげで7バイト節約
  • @AndersKaseorgのおかげで3バイト節約
seq 0 23|date -f- +%R\ %l:00%P
  • seq 行ごとに1つずつ、0〜23の整数を生成します。
  • date各行を日時として解釈します。裸の整数は、によって1日の時間として認識されるのに十分であるように見えdateます。 date次に、利用可能な時刻形式指定子を使用して、必要な形式で毎回出力します

このメタ回答LANG=Cに従って、ロケールを想定しています。

イデオン。


2
あなただけでseq 0 237バイトを保存することもできます
ヨッサリアン

1
そして%H:00%R他の3セーブ
アンダースKaseorg

@ AndersKaseorg、nopは%R、OPに不要な先行ゼロを挿入します。
-rexkogitans

@rexkogitans先行ゼロ必要です(最初の列で、これは私が話しているものです)。
アンデルスカセオルグ16年

@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
モジュロ-12は賢い!
エリックアウトゴルファー

誰かが疑問に思っている場合に備えてi=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24、3つの異なる方法でコードを変更しますが、各変更は同じ長さです。
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は、この答えを書き換える特にきちんとした方法を見つけました。ありがとう!


クール-知らなかった?:
デジタルトラウマ

知りませんでした!面白い。私はそれを修正しました:)
リン

ああ、?:実は、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より良い-ソースコードにこれ以上のバイトを追加しない
アナトリグ

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は0000年1月0日の00:00:00に対応し、1.0は0000年1月1日の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 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
11:00午前11:00
12:00午後12:00
13:00午後1時
午後14:00
午後15:00
午後16:00
午後17:00 5:00
午後18:00
午後19:00
午後20:00
21:00 pm
22:00午後10:00
23:00午後11:00


おもしろい事実::00代替品にすることは1バイト長くなります... TIO
steenbergh

@steenberghそれ:00は、3回出現する3バイトの文字列だからです。3×3 = 9の場合、1バイトのエイリアスを使用し、3回使用するので、ケースで置換を行うには3 + 1 + 3 = 7のコストがかかり、7 + 3 = 10になります。9 <10なので、交換しません。
エリックアウトゴルファー

5

MarioLANG、965 834バイト

オンラインで試す

まあこれはとんでもなく複雑だった。

技術的には出力は有効ですが、実際には、MarioLANGのTioは、「:」で数字を印刷するときに「n」ではなく「n」を出力します。

時間を見つけたら、Tioで正しく出力される(おそらくもっと長い)バージョンのプログラムを実行しようとするでしょう。

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

説明 :

ここでの主な問題は、6個のNaN文字(newLine、Space、:、a、p、m)があることです。

marioLANGでは、文字を出力するために、ASCII値が必要です。

  • newLineは10
  • スペースは32
  • は58
  • aは97
  • pは112
  • mは109です

したがって、最初に行うことはメモリを設定することです:

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

これにより、メモリは次のようになります。

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

プログラムの残りの部分でapに変換します

その後、実際の出力を行います:

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

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バイト、デニスのおかげで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をご覧ください
STLDev

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(2012 SQLServerの)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

オンラインでお試しください!



@RossPresserもう一度私を助けて、ここで多くを学びました
-t-clausen.dk

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

オンラインでお試しください!

これは入りにくいため、ここにリバーシブルのhexdumpがあります。

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

05AB1E51 50 48 44 42バイト

carusocomputingのおかげで2バイト節約

コード:

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のelseステートメントについては、これまで知らなかったのでとても愚かだと感じています。
魔法のタコUr

@carusocomputing:ありがとう!他にはしばらくの間存在していましたが、時々バグがありました。特にifをネストする場合。
エミグナ

1

PowerShell v2 +、76バイト

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

ループし0..23、各ループは-f演算子で文字列を設定します。最初{0:D2}はゼロを先頭に追加し、2番目{1,3}は中央の列にスペースを埋めます。{0}1つの対応$_-fオペレーター、しばらく{1}の間を選択したことを擬似三に相当する$_%12かが12いるかどうかに基づいて$_%12非ゼロかどうか(つまり、私たちがしている場合で$_=13、これが選択されます1午後1時のため)。次に、適切なam/ を選択する別の疑似三項とそれを連結しpmます。


1日のすべての時間を30分でリストするという私の答えとは対照的に、パディングが大幅に安くなるので、実際にはここで数字をブルートフォースするために短くなります。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バイト改善されたGeorge Reithに感謝します。

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と三例を交換する
ジョージReithの

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では動作しません。 出力
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();}

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ます。そこで関数を定義する必要はありません!
アナトリグ

ありがとう!編集済み!! 参考:関数バージョンでは、paramsなしで使用すると、自己初期化されて0になります!
ジャコモガラベッロ

i%12==0?12:i%12->i%12?i%12:12
chux-モニカの復活

「関数バージョンでは、パラメーターなしで使用すると、自己初期化されて0になります!」これは標準Cではないようです。これをサポートする参照はありますか?
chux-モニカの復活16年

Windowsシステムにインストールしたgccでのみ動作することに気づきました。Linuxを使用している友人から、PCでは動作しないと言われましたが、Linux用に修正する方法がわかりません…
ジャコモガラベッロ16年

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をそのまま使用します。次に、分の文字列を追加します。それから基本的に、軍隊を午前/午後の時間に変換するためのちょっとした策略を行い、午前/午後の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。物理的な改行を使用して、エンコードされていないバージョンに1バイトを保存します。
タイタス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.