हॉर्स रेस में एक दिन


10

पृष्ठभूमि

90 के दशक के पहले / 00 के दशक के अंत में जब फ्लैश वेब डिज़ाइन इतना ठंडा था कि कोई भी पूर्ण फ्लैश वेबसाइट, या कम से कम एक एनिमेटेड विजेट के बिना नहीं रह सकता था, मुझे फ्लैश / एक्टीस्क्रिप्ट में एक "घुड़दौड़ दर्शक" विकसित करने के लिए काम पर रखा गया था, 80 के वीडियोगेम शैली के एनीमेशन के आकार में, इसलिए साइट के आगंतुक न केवल रेस के परिणाम पढ़ सकते थे, बल्कि वे इसे एक चलते एनीमेशन में देख सकते थे! वाह! प्रभावशाली!

उन्होंने मुझे सभी दौड़ विवरणों के साथ एक सीएसवी फ़ाइल प्रदान की: प्रारंभ और आगमन के आदेश, घोड़े के नाम, ड्राइवर के नाम, पुरस्कार, आदि। मेरे फ्लैश ऐप ने प्रत्येक दौड़ के लिए उस फ़ाइल को पढ़ा और उपरोक्त एनीमेशन प्रदर्शित किया।

आजकल फ्लैश सपोर्ट में काफी गिरावट आई है, इसलिए हमें आस्की-आर्ट को वापस करना चाहिए !

कार्य

आपका कार्य एक पूर्ण कार्यक्रम या फ़ंक्शन बनाना है जो मानक इनपुट से सीएसवी प्रारूप में रेस डेटा को पढ़ता है और रेस के एक एएससीआई-कला प्रतिनिधित्व को आउटपुट करता है जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।

इनपुट

2 फ़ील्ड के साथ CSV डेटा: 1) ऑर्डर शुरू करें; 2) प्रारूप में फिनिश पर आगमन का समय 1.13.4(1 मिनट, 13 सेकंड, सेकंड के 4 दसवें)। अगर समय की रिपोर्ट का Rमतलब है कि घटना, गिरने या अन्य कारण से घोड़ा पीछे हट गया (दौड़ पूरी नहीं की)। नोट: आगमन का समय 2 या अधिक घोड़ों के लिए समान हो सकता है, इस मामले में वे आगमन स्थिति साझा करते हैं।

1,1.13.4
2,1.13.0
3,R
4,1.12.7
5,1.11.5
6,1.13.4
7,1.12.1
8,1.17.9

आउटपुट

प्रत्येक CSV पंक्ति के लिए, इस तरह एक रेसट्रैक का उत्पादन करें:

1_|______________4(1.13.0)___________________________

रेसट्रैक द्वारा रचित है:

  • 1 जो घोड़ों का आदेश है।
  • _|जहां _स्पेसर है और |फिनिश लाइन है।
  • 50 x _जो दूसरे के 50 दसवें भाग का प्रतिनिधित्व करता है।
  • 5(1.13.4)आगमन समय के बाद आगमन की स्थिति है। यह घोड़ों के बीच के समय के अंतर का सम्मान करते हुए होना चाहिए। उदाहरण के लिए: यदि आप समय पर फिनिश लाइन पर पहले पहुंचे 1.11.5, दूसरा समय पर आता है 1.12.1, तो अंतर 1.12.1 - 1.11.5 = 6दूसरे के दसवें स्थान पर है, इसलिए दूसरे घोड़े को 6 वें चरित्र पर तैनात किया जाना चाहिए, और इसी तरह। यदि समय का अंतर 50 सेकंड (या 5 सेकंड) से अधिक है, तो आपको घोड़े को अंत में स्थित करना होगा। वही अगर घोड़ा R(पीछे हटने वाला) है।

तो ऊपर CSV डेटा के लिए पूरा रेसट्रैक होना चाहिए:

  F=Finish line
1_|____________________________5(1.13.4)_____________
2_|______________4(1.13.0)___________________________
3_|__________________________________________________R
4_|___________3(1.12.7)______________________________
5_1(1.11.5)__________________________________________
6_|____________________________5(1.13.4)_____________
7_|_____2(1.12.1)____________________________________
8_|__________________________________________________6(1.17.9)
  012345678901234567890123456789012345678901234567890

जोड़ने की कोई आवश्यकता नहीं है F=Finish line, और अंतिम पंक्ति 0123456789...जो केवल व्याख्या करने के उद्देश्य से है।

परीक्षण के मामलों

RACE:
1,1.14.9
2,R
3,R
4,1.14.2
5,1.15.2
6,1.15.3
7,1.15.3

RACE:
1,1.13.6
2,1.13.8
3,R,
4,1.15.9
5,1.13.8
6,R,
7,1.14.4
8,1.15.6
9,1.14.1
10,1.13.9
11,1.13.2
12,1.14.3
13,1.15.0

RACE:
1,1.13.4
2,1.13.0
3,R
4,1.12.7
5,1.11.5
6,1.13.4
7,1.12.1
8,1.17.9

RACE:
1,1.17.3
2,1.20.4
3,1.17.0
4,1.18.8
5,1.18.5
6,1.18.4
7,1.18.4
8,1.17.8
9,1.18.3
10,1.18.7
11,R

RACE:
1,1.17.5
2,R
3,1.17.7
4,1.16.9
5,1.16.1
6,1.18.9

RACE:
1,1.12.8
2,1.13.0
3,1.13.2
4,1.12.7
5,1.11.5
6,1.13.0
7,1.12.1
8,1.12.8

नियम

  • सबसे छोटा कोड जीतता है।

उदाहरण में जहां 5 वें स्थान पर बंधे हैं, क्या घोड़ा 8 अभी भी 7 वें स्थान पर नहीं होगा?
जोनाथन एलन

क्या हम मान सकते हैं कि मिनट संख्या हमेशा रहेगी 1?
ETHproductions

@JonathanAllan यह नियमों पर निर्भर करता है, उदाहरण में मैंने माना कि यदि घोड़े 5 वें स्थान को साझा करते हैं, तो अगले को 6 वें माना जाएगा।
मारियो

@ETHproductions हाँ आप मान सकते हैं कि यह मिनट हमेशा 1. है
मारियो

2
इसके अलावा, क्या हम मान सकते हैं कि हमेशा एक गैर- Rघोड़ा होगा? (मुझे पता है कि यह वास्तविक जीवन में एक समझदार सवाल नहीं है, लेकिन यह कोड है।)
पुरकाकूदरी

जवाबों:


1

जावास्क्रिप्ट (ईएस 6), 261 बाइट्स

"1.ss.t"इनपुट के रूप में समय तार की एक सरणी लेता है । स्टार्ट ऑर्डर निहित है।

a=>a.map((t,i)=>(u='_',++i>9?'':' ')+i+u+u.repeat(x=(x=t>'9'?50:t.slice(2)*10-s[0].slice(2)*10)>50?50:x,p=s.indexOf(t)+1+`(${t})`).replace(u,'|')+(x<50?p:'')+u.repeat((x=50-p.length-x)>0?x:0)+(x>0?'':t>'9'?t:p),s=a.filter((v,i)=>a.indexOf(v)==i).sort()).join`
`

डेमो


1

पायथन 2, 282 272 246 बाइट्स

Arnauld के समान इनपुट माना जाता है कि पहले से ही आरंभिक संख्या से छीन लिया गया है क्योंकि यह निहित है।

H=input().split("\n")
T=[float(c[2:])if c[2:]else 99for c in H]
P=[min(int(10*(t-min(T))),50)for t in T]
S=sorted(list(set(T)))
i=0
u="_"
for h,p,t in zip(H,P,T):i+=1;s=S.index(t)+1;print`i`+u+"|"*(s>1)+u*p+[h,"%d(%s)"%(s,h)][t<99]+u*(41-p+(s<2))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.