समय सारणी के लिए लिस्टिंग ट्रैक करें


25

परिचय

जब आप किसी ऐसे एल्बम को अपलोड करते हैं जिसे आप YouTube पर पसंद करते हैं, तो क्या आप उससे घृणा नहीं करते हैं, लेकिन वर्णन में केवल ट्रैक लिस्टिंग है ? ऐशे ही:

1. Everything in Its Right Place - 4:11
2. Kid A - 4:44
3. The National Anthem - 5:50
4. How to Disappear Completely - 5:55
5. Treefingers - 3:42
6. Optimistic - 5:16
7. In Limbo - 3:31
8. Idioteque - 5:09
9. Morning Bell - 4:29
10. Motion Picture Soundtrack - 6:59

अब आप नहीं जानते कि मॉर्निंग बेल तब तक शुरू होती है जब तक कि आप अपने सिर में कई बार योग नहीं करते हैं! आमतौर पर, कुछ अच्छी आत्मा द्वारा (खूंखार) टिप्पणी अनुभाग में एक आसान समय सारणी को छोड़ दिया जाएगा , जो कुछ इस तरह दिखता है:

(0:00:00) Everything in Its Right Place
(0:04:11) Kid A
(0:08:55) The National Anthem
(0:14:45) How to Disappear Completely
(0:20:40) Treefingers
(0:24:22) Optimistic
(0:29:38) In Limbo
(0:33:09) Idioteque
(0:38:18) Morning Bell
(0:42:47) Motion Picture Soundtrack

विशिष्टता

  • आपका कार्य एक प्रोग्राम या फ़ंक्शन लिखना है जो ट्रैक लिस्टिंग को इनपुट के रूप में और आउटपुट के रूप में एक टाइम टेबल लेता है।

    • आप STDIN, या एक तर्क स्ट्रिंग, या लाइनों की एक तर्क सूची से इनपुट पढ़ना चुन सकते हैं। इसी तरह, आप आउटपुट को STDOUT में प्रिंट करने के लिए चुन सकते हैं, या एक स्ट्रिंग लौटा सकते हैं, या लाइनों की सूची वापस कर सकते हैं। इनका असफल होना, आपकी भाषा के लिए कुछ भी करता है।
  • आप मान सकते हैं कि प्रत्येक इनपुट लाइन का प्रारूप है (\d+)\. [A-Za-z0-9 ]{1,100} - (\d+):(\d\d)। Regex-impaired के लिए, इसका अनिवार्य रूप से मतलब है कि आप मान सकते हैं कि प्रत्येक पंक्ति अच्छी तरह से स्वरूपित है (ऊपर के रूप में) और गीत के शीर्षक में केवल अल्फ़ान्यूमेरिक ASCII वर्ण और स्थान होते हैं , और 100 बाइट्स से अधिक लंबे नहीं होते हैं।

  • एक ट्रैक की लंबाई हमेशा कम से कम 0:01और इससे अधिक नहीं होती है 59:59
  • ट्रैक नंबर बढ़ते हुए क्रम से शुरू हो रहे हैं 1, और गिनती से अधिक नहीं है 99
  • एक एल्बम की कुल लंबाई से अधिक नहीं है 9:59:59

यह , इसलिए सबसे छोटा कोड (बाइट्स में) जीतता है।

परीक्षण का मामला

आपका कार्यक्रम सही ढंग से परिचय (रेडियोहेड्स किड ए ) में प्रस्तुत रूपांतरण का प्रदर्शन करना चाहिए । यहां एक बड़ा परीक्षण मामला है (सूफजान स्टीवंस इलिनोइस 1 ) लंबे स्ट्रिंग्स के साथ आपके कार्यक्रम पर भी काम करना चाहिए:

1. Concerning the UFO Sighting Near Highland Illinois - 2:08
2. The Black Hawk War - 2:14
3. Come On Feel the Illinoise - 6:45
4. John Wayne Gacy Jr - 3:19
5. Jacksonville - 5:24
6. A Short Reprise for Mary Todd Who Went Insane but for Very Good Reasons - 0:47
7. Decatur or Round of Applause for Your Stepmother - 3:03
8. One Last Whoo Hoo for the Pullman - 0:06
9. Chicago - 6:04
10. Casimir Pulaski Day - 5:53
11. To the Workers of the Rock River Valley Region - 1:40
12. The Man of Metropolis Steals Our Hearts - 6:17
13. Prairie Fire That Wanders About - 2:11
14. A Conjunction of Drones Simulating the Way - 0:19
15. The Predatory Wasp of the Palisades Is Out to Get Us - 5:23
16. They Are Night Zombies They Are Neighbors They Have Come Back from the Dead Ahhhh - 5:09
17. Lets Hear That String Part Again Because I Dont Think They Heard It All the Way Out in Bushnell - 0:40
18. In This Temple as in the Hearts of Man for Whom He Saved the Earth - 0:35
19. The Seers Tower - 3:53
20. The Tallest Man the Broadest Shoulders - 7:02
21. Riffs and Variations on a Single Note - 0:46
22. Out of Egypt into the Great Laugh of Mankind and I Shake the Dirt from My Sandals as I Run - 4:21

सही आउटपुट है:

(0:00:00) Concerning the UFO Sighting Near Highland Illinois
(0:02:08) The Black Hawk War
(0:04:22) Come On Feel the Illinoise
(0:11:07) John Wayne Gacy Jr
(0:14:26) Jacksonville
(0:19:50) A Short Reprise for Mary Todd Who Went Insane but for Very Good Reasons
(0:20:37) Decatur or Round of Applause for Your Stepmother
(0:23:40) One Last Whoo Hoo for the Pullman
(0:23:46) Chicago
(0:29:50) Casimir Pulaski Day
(0:35:43) To the Workers of the Rock River Valley Region
(0:37:23) The Man of Metropolis Steals Our Hearts
(0:43:40) Prairie Fire That Wanders About
(0:45:51) A Conjunction of Drones Simulating the Way
(0:46:10) The Predatory Wasp of the Palisades Is Out to Get Us
(0:51:33) They Are Night Zombies They Are Neighbors They Have Come Back from the Dead Ahhhh
(0:56:42) Lets Hear That String Part Again Because I Dont Think They Heard It All the Way Out in Bushnell
(0:57:22) In This Temple as in the Hearts of Man for Whom He Saved the Earth
(0:57:57) The Seers Tower
(1:01:50) The Tallest Man the Broadest Shoulders
(1:08:52) Riffs and Variations on a Single Note
(1:09:38) Out of Egypt into the Great Laugh of Mankind and I Shake the Dirt from My Sandals as I Run

लीडरबोर्ड

आपके स्कोर बोर्ड पर दिखाई देने के लिए, यह इस प्रारूप में होना चाहिए:

# Language, Bytes

1. सूफान के लिए क्षमायाचना, जिनके अद्भुत ट्रैक नामों के लिए मुझे थोड़ा सा उधेड़ना पड़ा ताकि उन्हें सरल प्रारूप में फिट किया जा सके जिससे यह समस्या सीमित हो।


आउटपुट में अनुगामी स्थान हो सकते हैं?
मार्टिन एंडर

1
रेडियोहेड और सूफ़ज़न स्टीवंस? मेह :
लुइस मेंडो सेप

नहीं; प्रत्येक पंक्ति के लिए प्रारूप (h:mm:ss) Track Name, एक नई पंक्ति के तुरंत बाद है।
लिन

@LuisMendo अपने उत्तर में अपने बेहतर संगीत स्वाद का प्रदर्शन करने के लिए स्वतंत्र महसूस करें ...?
लिन

Hahaha। यह जवाब देने के लिए एक अच्छी अतिरिक्त प्रेरणा है। BTW मुझे चुनौती पसंद आई और मैंने इसे बढ़ा दिया है
लुइस मेंडो सेप

जवाबों:


12

CJam, 60 57 55 बाइट्स

2 बाइट बचाने के लिए Sp3000 के लिए धन्यवाद।

qN/{T60bZ0e["(%d:%02d:%02d) "e%\S/1>)':/60bT+:T;W<S*N}/

इसका परीक्षण यहां करें।

व्याख्या

qN/{      e# Read input and split into lines.
  T60b    e# Push T (initially zero, we use this to keep track of the total time in
          e# seconds), and convert it to base 60.
  Z0e[    e# Pad it with zeroes to 3 digits to get hours, minutes, seconds.
  "(%d:%02d:%02d) "e%
          e# Get the (h:mm:ss) part using a format string.
  \S/     e# Pull up the current line, split on spaces.
  1>      e# Discard the first segment, i.e. the track number.
  )':/    e# Pull off the last segment, i.e. the time, and split on colons.
  60b     e# Interpret the two parts as base-60 digits to get the amount of seconds
          e# for the track.
  T+:T;   e# Add this to T and discard it.
  W<      e# Discard the last segment of the remaining string (the hyphen).
  S*N     e# Join the song name back together with spaces and push a line feed.
}/

16
Goddammit मार्टिन
cjfaure

6

पर्ल, (93 वर्ण प्लस -p) 94 बाइट्स

s!\d+\. (.+) - (\d+:(\d+))!sprintf"(%d:%02d:%02d) $1",$n/3600,$n%3600/60,$n%60,$n+=$3+60*$2!e

चलाने के लिए:

perl -pe 's!\d+\. (.+) - (\d+:(\d+))!sprintf"(%d:%02d:%02d) $1",$n/3600,$n%3600/60,$n%60,$n+=$3+60*$2!e' <<< '<input>'

5

सी ++, 212 209 202 189 बाइट्स

C ++ क्योंकि .. क्यों नहीं?

#include<iostream>
long d,t,u;main(){std::string a,b(8,0);while(getline(std::cin>>t>>a[0],a,'-')>>t>>b[0]>>u){strftime(&b[0],9,"%T",gmtime(&d));b[0]='(';std::cout<<b+")"+a+'\n';d+=t*60+u;}}

जीना: 212 209 202 189


5

पायथन 2, 170 160 बाइट्स

थोड़ी देर के बाद से मैंने एक गोल्फ किया है, उम्मीद है कि यह बहुत बुरा नहीं है: पी

t=0
for i in input().split('\n'):i=i.split(' - ');print'(%d:%02d:%02d)'%(t/3600,t%3600/60,t%60),i[0].split('. ')[1];k=i[-1].split(':');t+=int(k[0])*60+int(k[1])

इनपुट को उद्धरणों से घिरा होना चाहिए, और नए सिरे से विभाजित करना चाहिए, जैसे:

"1. Concerning the UFO Sighting Near Highland Illinois - 2:08\n2. The Black Hawk War - 2:14\n3. Come On Feel the Illinoise - 6:45\n4. John Wayne Gacy Jr - 3:19\n5. Jacksonville - 5:24\n6. A Short Reprise for Mary Todd Who Went Insane but for Very Good Reasons - 0:47\n7. Decatur or Round of Applause for Your Stepmother - 3:03\n8. One Last Whoo Hoo for the Pullman - 0:06\n9. Chicago - 6:04\n10. Casimir Pulaski Day - 5:53\n11. To the Workers of the Rock River Valley Region - 1:40\n12. The Man of Metropolis Steals Our Hearts - 6:17\n13. Prairie Fire That Wanders About - 2:11\n14. A Conjunction of Drones Simulating the Way - 0:19\n15. The Predatory Wasp of the Palisades Is Out to Get Us - 5:23\n16. They Are Night Zombies They Are Neighbors They Have Come Back from the Dead Ahhhh - 5:09\n17. Lets Hear That String Part Again Because I Dont Think They Heard It All the Way Out in Bushnell - 0:40\n18. In This Temple as in the Hearts of Man for Whom He Saved the Earth - 0:35\n19. The Seers Tower - 3:53\n20. The Tallest Man the Broadest Shoulders - 7:02\n21. Riffs and Variations on a Single Note  - 0:46\n22. Out of Egypt into the Great Laugh of Mankind and I Shake the Dirt from My Sandals as I Run - 4:21"

4
मुझे लगता है कि आप सिर्फ %dघंटों के काउंटर के लिए हो सकते हैं (यदि मैं नियमों को सही ढंग से समझता हूं!) के लिए -2
डोम हेस्टिंग्स

सटीक प्रारूप को स्वीकार करने के inputलिए 4 वर्ण ( से raw_input) जोड़ें ; अन्यथा मेरा मानना ​​है कि यह अमान्य है क्योंकि यह एक अलग प्रारूप में लाइनों को मानता है।
आर.के.

3

गामा, 151 वर्ण

\B=@set{t;}
<D>. * - <D>\:<D>=(@div{$t;3600}:@fill-right{00;@div{@mod{$t;3600};60}}:@fill-right{00;@mod{$t;60}}) *@set{t;@add{@add{$t;$4};@mul{$3;60}}}

नमूना रन:

bash-4.3$ gema '\B=@set{t;};<D>. * - <D>\:<D>=(@div{$t;3600}:@fill-right{00;@div{@mod{$t;3600};60}}:@fill-right{00;@mod{$t;60}}) *@set{t;@add{@add{$t;$4};@mul{$3;60}}}' tracklist.txt
(0:00:00) Concerning the UFO Sighting Near Highland Illinois
(0:02:08) The Black Hawk War
(0:04:22) Come On Feel the Illinoise
(0:11:07) John Wayne Gacy Jr
(0:14:26) Jacksonville
(0:19:50) A Short Reprise for Mary Todd Who Went Insane but for Very Good Reasons
(0:20:37) Decatur or Round of Applause for Your Stepmother
(0:23:40) One Last Whoo Hoo for the Pullman
(0:23:46) Chicago
(0:29:50) Casimir Pulaski Day

3

पायथन 2, 207 206 बाइट्स

h=m=s=0
for i in raw_input().splitlines():
 print("(%d:%.2d:%.2d) "%(h,m,s),i.split('-')[0].split('. ')[1])
 t=i.split('-')[1].split(':')
 m+=int(t[0]);s+=int(t[1]);r=s//60;s-=r*60;m+=r;r=m//60;m-=r*60;h+=r

प्रयोग

$ python test.py
'1. Concerning the UFO Sighting Near Highland Illinois - 2:08\n2. The Black Hawk War - 2:14\n3. Come On Feel the Illinoise - 6:45'
(0:00:00) Concerning the UFO Sighting Near Highland Illinois 
(0:02:08) The Black Hawk War 
(0:04:22) Come On Feel the Illinoise 

आप पायथन 3 के किस संस्करण का उपयोग कर रहे हैं? मैंने सोचा था कि raw_inputकेवल पायथन 2 में मौजूद था
लिन

फिक्स्ड। मुझे लगता है कि मैं सिर्फ "3" टाइप करने के लिए उपयोग कर रहा हूं। @ मौरिस
जैच गेट्स

1

awk, 119 101 बाइट्स

{split($NF,t,":");$1=$(--NF)="";--NF;print"("substr(strftime("%H:%M:%S",s,1),2)")"$0;s+=t[1]*60+t[2]}

यह वह जगह है जिस तरह से अधिक समय तक मैं इसे बनना चाहता था। समस्या यह है कि %Hअनुरोध किए गए घंटों को प्रारूपित नहीं करता है, इसलिए मुझे स्वयं घंटों की गणना करने की आवश्यकता है।

ऐक, मैं बेवकूफ हूं। परिणाम strftimeगलत थे क्योंकि मुझे यूटीसी समय का उपयोग करने के लिए यह बताने की आवश्यकता थी। कि 18 बाइट्स कट गए!

119-बाइट संस्करण

{split($NF,t,":");$1=$(--NF)="";--NF;print"("(h||0)":"strftime("%M:%S",s)")"$0;s=(r=s+t[1]*60+t[2])%3600;h=int(r/3600)}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.