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

배쉬 + 코어 유틸리티, 43 30

  • @Yossarian 덕분에 7 바이트 절약
  • @AndersKaseorg 덕분에 3 바이트 절약
seq 0 23|date -f- +%R\ %l:00%P
  • seq 한 줄에 하나씩 0-23의 정수를 생성합니다.
  • date각 줄을 날짜 / 시간으로 해석합니다. 베어 정수는에 의해 하루 중 시간으로 인식하기에 충분한 것으로 보입니다 date. date그런 다음 사용 가능한 시간 형식 지정자를 사용하여 필요한 형식으로 매번 출력 합니다 .

이 메타 답변에LANG=C 따라 로케일을 가정합니다 .

이데온


2
seq 0 237 바이트를 저장하고 저장할 수도 있습니다
Yossarian

1
그리고 %H:00%R다른 3을 구하십시오.
Anders Kaseorg 2016 년

noP 인 @AndersKaseorg %R는 OP가 원하지 않는 선행 0을 삽입합니다.
rexkogitans 2016 년

@rexkogitans 앞에 오는 0 원합니다 (첫 번째 열, 내가 말하고있는 열).
Anders Kaseorg 2016 년

@AndersKaseorg, 오, 당신은 첫 번째에 대해 이야기하고있었습니다 ... 물론 당신은 옳습니다. 위의 내 의견을 수정했습니다.
rexkogitans 2016 년

12

파이썬 2, 66 바이트

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

1
모듈로 -12는 영리합니다!
Outgolfer Erik

누군가 궁금해하는 경우를 대비 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

몰랐어요! 흥미 롭군 나는 그것을 고쳤다 :)
Lynn

Ahh ?:는 실제로 Perl과 가장 가까운 것 ||입니다. C ||는 더 비슷 (a || b) ? 1 : 0합니다.
Lynn

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에서는 작동하지 않습니다 datestr. Matlab과 Octaves 구현 사이에 호환성 문제가 있다고 생각 합니다.

datestr날짜의 숫자 표현을 가져와 해당 날짜의 문자열 표현으로 변환합니다. 하루 중 시간은 숫자의 소수 부분이므로 0.0은 00:00:00에 0000 년 1 월 0 일에 해당하고 1.0은 00:00:00에 0000 년 1 월 1 일에 해당합니다. 1/24는 1am, 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
11:00 11:00 am
오후 12:00
13:00 1:00 pm
14:00 2:00 pm
오후 15:00 3:00
16:00 4:00 pm
오후 17:00 5:00
18:00 6:00 pm
오후 19:00 7:00
오후 20:00 8:00
21:00 9:00 pm
오후 2시 10:00
오후 23:00 11:00


재미있는 사실 :을 :00교체로하는 것은 한 바이트 이상 ... TIO
steenbergh

@steenbergh :003 번 나타나는 3 바이트 문자열 이기 때문 입니다. 3 × 3 = 9, 1 바이트 별칭을 사용하므로 3 + 1 + 3 = 7의 비용이 발생하며 3 번 사용하므로 7 + 3 = 10입니다. 9 <10이므로 교체하지 않습니다.
Outgolfer Erik

5

MarioLANG, 965 834 바이트

온라인으로 사용해보십시오

글쎄 이것은 엄청나게 복잡했다.

기술적으로 출력은 유효하지만 실제로 ':'로 숫자를 인쇄 할 때 "n"대신 "L"for MarioLANG 출력 "n"

내가 시간을 찾으면 Tio에서 올바르게 출력하는 프로그램의 아마도 더 긴 버전을 시도 할 것입니다.

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

설명 :

여기서 우리의 주요 문제는 6 NaN char (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 바이트를 절약하고 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 #을 조금 사용하지만 $문자열 에서 선행 하는 것은 무엇 입니까?
NoOneIsHere6

3
@NoOneIsHere- "문자열 보간"이라고하며 C # 6.0의 새로운 기능입니다. https://msdn.microsoft.com/en-us/library/dn961160.aspx에서 자세한 내용을 확인할 수 있습니다 .
STLDev

3

자바 스크립트 (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 (2,012의 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

온라인으로 사용해보십시오!


1
121 자로 줄었다 : 온라인으로 시도
Ross Presser

@RossPresser 다시 한번 당신은 많이 여기 학습, 나를 도와
t-clausen.dk

2

펄 5, 58

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

2

자바 스크립트, 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

온라인으로 사용해보십시오!

입력하기 어려울 수 있으므로 다음은 뒤집을 수있는 16 진 덤프입니다.

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.

noncompeting 버전은 당신이 모두 발생 바꿀 경우이 짧은 바이트 하찮게이다 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 바이트

카루소 컴퓨팅 덕분에 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 미만으로 최적화 할 수 있는지 여부는 의문의 여지가 있습니다.
Magic Octopus Urn

23Ý24L<1 바이트 대신 . 그리고 얼마나 오래 ë존재 했습니까? 나는 지금까지 05AB1E의 다른 진술에 대해 너무 멍청하다고 느낍니다.
Magic Octopus Urn

@carusocomputing : 감사합니다! 다른 한동안 존재했지만 때때로 버그가있었습니다. 특히 if를 중첩 할 때.
Emigna 2012 년

1

PowerShell v2 +, 76 바이트

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

from 0..23및 각 루프는 -f연산자 로 문자열을 설정합니다 . 첫 번째 {0:D2}는 0을 앞에 붙이고 두 번째 {1,3}는 중간 열을위한 공간을 채 웁니다. {0}받는 한 대응 $_-f운영자, 동안 {1}의사 원에 해당하는 중에서 선택 $_%12또는 12여부에 따라 $_%12비 제로 여부 (우리가 있다면 즉,이다 $_=13, 이것은 선택합니다 1오후 1시에 대한). 그런 다음 적절한 am/ 를 선택하는 다른 의사 삼항과 연결합니다 pm.


하루 종일 30 시간 속도로 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

루비, 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 2016 년

당신은 대체 할 수 (i-1)~-i2 바이트.
Jordan

1

자바 스크립트 (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

자바 스크립트, 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')

당신은 다시 작성하여 2 바이트를 저장할 수 n < 109 < 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

코 틀린 , 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 2016 년

감사! 편집 !! 참고 : funcion 버전에서는 매개 변수없이 사용하면 자체적으로 0으로 초기화됩니다!
Giacomo Garabello

i%12==0?12:i%12->i%12?i%12:12
chux-복원 모니카

"funcion 버전에서는 매개 변수없이 사용하면 자체 초기화가 0으로됩니다!" 이것은 표준 C 인 것 같지 않습니다.이를 지원하는 참조가 있습니까?
chux-복원 Monica Monica

나는 리눅스와 내 친구가 자신의 PC에서 작업을하지 않습니다하지만 난 리눅스를 위해 그것을 해결하는 방법을 모르는 얘기 ... 단지 내 Windows 시스템에 설치 한 gcc가 작동 나타났습니다 ...
Giacomo Garabello 2016 년

0

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

자바 스크립트 (외부 라이브러리 사용-열거 가능) (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=30709. am/ 앞에 공백이 없어야합니다 pm. 물리적 인 줄 바꿈을 사용하여 인코딩되지 않은 버전에서 1 바이트를 저장하십시오.
Titus

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

데모

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.