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

बैश + कोरुटिल्स, 43 30

  • सहेजे गए 7 बाइट्स @Yossarian के लिए धन्यवाद
  • 3 बाइट्स @AndersKaseorg की बदौलत सहेजे गए
seq 0 23|date -f- +%R\ %l:00%P
  • seq पूर्णांक 0-23 उत्पन्न करता है, प्रति पंक्ति एक।
  • dateप्रत्येक रेखा को डेटाइम के रूप में व्याख्या करता है। नंगे पूर्णांक दिन के घंटों के रूप में पहचाने जाने के लिए पर्याप्त हैं datedateफिर हर बार उपलब्ध समय प्रारूप विनिर्देशक का उपयोग करके आवश्यक स्वरूपण के साथ आउटपुट करता है

इस मेटा उत्तर केLANG=C अनुसार, स्थानीय मान लेता है ।

Ideone।


2
तुम भी बस कर सकते हैं seq 0 23और 7 बाइट्स बचा
Yossarian

1
और %H:00%Rएक और बचाता है 3.
एंडर्स केसरग

@AndersKaseorg, एनओपी, %Rएक प्रमुख शून्य सम्मिलित करता है, ओपी द्वारा नहीं चाहता था।
rexkogitans

@rexkogitans एक अग्रणी शून्य है चाहता था (प्रथम स्तंभ है, जो एक के बारे में मैं बात कर रहा हूँ है में)।
एंडर्स कासोर्ग

@AndersKaseorg, ओह, आप पहले एक के बारे में बात कर रहे थे ... तो आप सही हैं, बिल्कुल। ऊपर मेरी टिप्पणी सही।
रेक्सकोगिटंस

12

पायथन 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

सी, 73 बाइट्स

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

mIllIbyte ने इस उत्तर को फिर से लिखने के लिए एक विशेष रूप से स्वच्छ तरीका पाया। धन्यवाद!


कूल - मुझे इसके बारे में कभी पता नहीं था?:
डिजिटल ट्रामा

मुझे नहीं पता था! दिलचस्प। मैंने इसे ठीक कर लिया :)
लिन

आह, ठीक है, ?:वास्तव में पर्ल के सबसे करीब के बराबर है ||, मुझे विश्वास है। 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, 0000 पर 0.05 बजे, और 1.0 जनवरी 1, 0000, 00:00:00 से मेल खाती है। 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

यह मतलाब में काम करने के लिए, यहाँ एक स्क्रीनशॉट है

यहाँ छवि विवरण दर्ज करें


5

/// , 160 बाइट्स

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

इसे ऑनलाइन आज़माएं!

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 1:00 अपराह्न
14:00 2:00 अपराह्न
15:00 3:00 अपराह्न
16:00 4: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, इसलिए मैं इसे प्रतिस्थापित नहीं करूंगा।
आउटगॉल्फ

5

मारियोलेन, 965 834 बाइट्स

इसे ऑनलाइन आज़माएं

अच्छी तरह से यह हास्यास्पद जटिल था।

तकनीकी रूप से आउटपुट वैध है लेकिन मारियोएल आउटपुट के लिए टियो का अभ्यास करें "n" के बजाय "n" जब हम एक नंबर को ':' से प्रिंट करते हैं

अगर मुझे समय लगता है तो मुझे लगता है कि मैं उस कार्यक्रम का एक (शायद बहुत लंबा) संस्करण करने की कोशिश करूँगा जो कि Tio पर सही ढंग से आउटपुट करता है

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

स्पष्टीकरण:

यहाँ हमारी मुख्य समस्या यह है कि हमारे पास 6 NaN char (newLine, Space,:, a, p, m) है

marioLANG में, चरित्र को मुद्रित करने के लिए, हमें उनकी एससीआई मूल्य की आवश्यकता है:

  • newLine 10 है
  • अंतरिक्ष 32 है
  • : 58 है
  • a 97 है
  • पी 112 है
  • m 109 है

तो पहली बात यह है कि मेमोरी सेट करना है:

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

इसके साथ, स्मृति इस तरह दिखती है:

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

हम बदल सकते हैं एक में पी कार्यक्रम के बाकी के दौरान

तब हम वास्तविक उत्पादन करते हैं:

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

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

सी # फ़ंक्शन, 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");}}

Ungolfed संस्करण:

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

जावास्क्रिप्ट (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)

अनुगामी न्यूलाइन के साथ आउटपुट देता है। फ़ायरफ़ॉक्स स्क्रैचपैड में परीक्षण किया गया। यकीन नहीं है कि अगर 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 एक बार फिर आपने मेरी मदद की, यहाँ बहुत कुछ
सीखा


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

वी , 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/… ;)। अब प्रश्न ५० से नीचे अनुकूलित किया जा सकता है या नहीं।
मैजिक ऑक्टोपस Urn

23Ýइसके बजाय 24L<1 बाइट के लिए। और कब तक ëअस्तित्व में है? मुझे लगता है कि अब तक 05AB1E में अन्य विवरणों के बारे में पता नहीं है।
मैजिक ऑक्टोपस Urn

@carusocomputing: धन्यवाद! कुछ समय के लिए अस्तित्व में है, लेकिन यह कई बार छोटी गाड़ी है। खासकर जब घोंसले के शिकार।
एमिगा

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, इस का चयन करेंगे 11:00 बजे के लिए)। हम फिर एक और छद्म-त्रिगुट के साथ सहमति व्यक्त करते हैं जो उपयुक्त चुनता हैam /pm


आधे घंटे की दर पर दिन में हर समय सूची पर मेरे जवाब के विपरीत , यह वास्तव में संख्याओं को कम -से- कम करने के लिए मजबूर करने के लिए यहाँ कम है क्योंकि हमें काफी सस्ता गद्दी मिलता है। यहाँ 78 बाइट्स में दिनांक फ़ंक्शन का उपयोग करके उत्तर दिया गया है

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

1

सी ++, 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संरचना में परिवर्तित करता है और इसे प्रिंट करता है। प्रिंट प्रारूप %R24-घंटे और मिनट को आउटपुट करता है; प्रिंट प्रारूप %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
मैनटवर्क

आप 2 बाइट्स के (i-1)साथ बदल सकते हैं ~-i
जॉर्डन

1

जावास्क्रिप्ट (ईएस 6), 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 एन्कोडिंग मानती है।

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

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

लूप के प्रत्येक पुनरावृत्ति स्टैक पर बहुत सारे छोटे तार छोड़ते हैं; अंत में वे सभी स्वतः समाप्‍त हो जाते हैं।


1

जावास्क्रिप्ट, 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')

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

आप दोबारा लिख कर 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))}

यह काम नहीं करता है, कम से कम मेरे लिए स्विफ्ट 2.2 पर नहीं। आउटपुट
JAL

मुझे आपका प्रारूप स्ट्रिंग बदलना पड़ा:String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
JAL

0

सी फंक्शन, 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();
}

यह विंडोज पर काम करता है:

चेतावनी में आप पूरे कार्यक्रम को पा सकते हैं

सी प्रोग्राम, 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- वहां फ़ंक्शन को परिभाषित करने की कोई आवश्यकता नहीं है!
अनातोलीग

धन्यवाद! संपादित !! FYI करें: यदि आप इसे बिना परम के उपयोग करते हैं तो फंकीशन संस्करण में, यह 0 के लिए इनिशियलाइज़ है!
जियाकोमो गारबेलो

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

"यदि आप इसे परम के बिना उपयोग करते हैं, तो इसे मज़ाकिया संस्करण में 0 से शुरू किया जा सकता है!" यह मानक सी प्रतीत नहीं होता है। इसका समर्थन करने के लिए कोई संदर्भ?
चक्स -

मैंने देखा है कि यह केवल मेरे विंडोज़ सिस्टम पर स्थापित gcc पर काम करता है .. linux के साथ मेरे एक दोस्त ने मुझे बताया कि यह उसके पीसी पर काम नहीं करता है, लेकिन मुझे नहीं पता कि इसे linux के लिए कैसे ठीक किया जाए ...
गियाकोमो गारबेलो

0

फू, 163 बाइट्स

सुंदर जानवर बल दृष्टिकोण; यहाँ कुछ भी चतुर नहीं है (मैंने कुछ स्थानों में प्रयास किया लेकिन यह समाप्त नहीं हुआ), बस फू को एक शॉट देना चाहता था। फू स्वचालित रूप से उद्धरण के भीतर कुछ भी प्रिंट करता है। $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 तक पूर्णांक की सरणी बनाएं, प्रत्येक के लिए विधेय के अनुसार एक पंक्ति लिखें। यदि वर्तमान घाटी 10 से कम है, और इसे 0 के साथ पैड करता है, तो यह जांचें कि अन्य वर्तमान घाटी का उपयोग करता है। फिर मिनट स्ट्रिंग को इसमें जोड़ता है। फिर मूल रूप से मिलिटरी को एएम / पीएम टाइम में बदलने के लिए थोड़ी सी चालाकी करता है, और 10 से कम समय के लिए एएम / पीएम के लिए पैडिंग को संभालता है।

यहाँ छवि विवरण दर्ज करें


0

स्माइलबासिक, 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 बाइट्स बचाए
  • अनावश्यक स्थान से छुटकारा पाकर एक बाइट को बचाया (thx @Titus)

आप उपयोग कर सकते हैं -nके बजाय -d error_reporting=30709am/ से पहले कोई स्थान नहीं होना चाहिए pm। फिजिकल लाइनब्रेक के साथ अनएन्कोडेड संस्करण पर एक बाइट सहेजें।
टाइटस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.