ए मेरे बागतले


13

चुनौती

एक नीचे दिए गए बैगेटेल बोर्ड को देखते हुए:

|                    |
|    /\            / |
|      \            /|
|  \      \ /\    \  |
|   \   /       \    |
|\     /   /  \      |
|   \            / \ |
|    \               |
|  \    / \ /\    \  |
|\     /   /  \     /|
|                /   |
|    /\         /  / |
|              /     |
|\     /   /  /      |
|                    |
----------------------

आपका कार्य 'थ्रो' की सूची को स्कोर में बदलना है।

बोर्ड हमेशा 20 अक्षर (प्लस 2 किनारों) चौड़ा होगा, लेकिन परिवर्तनीय ऊंचाई का। प्रत्येक 'थ्रो' एक संख्या होती है, जिसमें यह दर्शाया जाता है कि गेंद बोर्ड में गिरती है, जो 0 से शुरू होती है और सबसे दाईं ओर 19 के लिए छोड़ दी जाती है। प्रत्येक गेंद सीधे नीचे गिर जाएगी जब तक कि यह एक /या एक का सामना न करे \/गेंद को एक कॉलम बाईं ओर एक शिफ्ट करने के लिए एनकाउंटर करना , और \गेंद को एक कॉलम दाईं ओर स्थानांतरित करना। स्थानांतरित होने के बाद, गेंद पहले की तरह सीधे नीचे जारी रहती है। एक थ्रो का स्कोर इस बात पर निर्भर करता है कि गेंद बोर्ड के निचले हिस्से पर कहां से टकराती है।

प्रत्येक परिष्करण की स्थिति के स्कोर इस प्रकार हैं:

|                    |
----------------------
 01234567899876543210

और सभी बोर्डों के लिए समान हैं। पहली और आखिरी पंक्तियाँ हमेशा खाली रहेंगी। गेंद कहाँ से गिरा दिया जाता है की परवाह किए बिना नीचे तक पहुंचने के लिए गारंटी है, इसलिए कोई बोर्डों जहां यह फंस प्राप्त कर सकते हैं हो सकता है \/, \|या |/संयोजन।

इनपुट

इनपुट एसटीडीआईएन पर होगा, और बोर्ड से मिलकर एक रिक्त रेखा का अनुसरण करेगा, जिसके बाद थ्रो का प्रतिनिधित्व करने वाली संख्याओं की एक अंतरिक्ष से अलग सूची होगी।

उत्पादन

Ouput दिए गए खेल के लिए कुल स्कोर होना चाहिए।

उदाहरण के एक जोड़े

इनपुट

|                    |
| \                  |
|  \                 |
|   \                |
|    \               |
|     \              |
|      \             |
|       \            |
|        \           |
|         \          |
|          \         |
|           \        |
|            \       |
|             \      |
|              \     |
|               \    |
|                \   |
|                 \  |
|                    |
|                    |
----------------------

1 4 2 19 0 2 4 3 17 13 16

उत्पादन

9

इनपुट

|                    |
| \                / |
|  \              /  |
|   \            /   |
|    \          /    |
|     \        /     |
|      \      /      |
|       \    /       |
|        \  /        |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
----------------------

15 10 3 8 18 19 0 6 7 10

उत्पादन

72

इनपुट

|                    |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
|                    |
----------------------

1 4 18 17 14 2 0 19 15

उत्पादन

18

टेस्ट स्क्रिप्ट

मैंने जॉय और वेंटरो द्वारा लिखित कुछ परीक्षण स्क्रिप्ट का उपयोग किया है (मुझे आशा है कि वे बुरा नहीं मानते ...) इस कार्य के लिए कुछ परीक्षण बनाने के लिए: -

उपयोग: ./test [your program and its arguments]

यह कोडगोल्फ है - सबसे छोटा समाधान जीतता है।


आप मेरे लिए उनके लिए भी स्क्रिप्ट तैयार कर सकते हैं :-)। मैं अंततः उस सार्वजनिक को बनाना चाहता था, लेकिन जब तक मुझे अभी भी कई कार्यों के लिए ट्विकिंग की आवश्यकता नहीं है, जो मैं नहीं चाहता था।
जॉय

@ जॉय एक स्क्रिप्टिंग उपलब्ध होने के लिए एक उपयोगी उपकरण होगा।
गारेथ

परीक्षण के दोनों सेट अब तय किए जाने चाहिए।
गारेथ

जवाबों:


3

गोल्फस्क्रिप्ट, 60 59 चार्ट

n/{},)\);{1>:x,,{.x=31%4%(+}%}%[10,.-1%+]+0@[~]{2${=}/+}/\;

मैं तो एक समाधान है जो प्रतीकों को पुनर्परिभाषित कर काम करता है लिखने के लिए परीक्षा की गई थी /, \और spaceहै, लेकिन यह वास्तव में काफी महंगा है (विशेष रूप से एक बार आप नहीं रह मूल उपयोग कर सकते हैं \)।

31%4%(कीथ रंडाल्स समाधान से nicked और नक्शे प्रिंट ASCII कोड है space, /और \करने के लिए 0, -1, 1क्रमशः। (देखें इतिहास संपादित करें)।


1
GolfScript के लिए आश्चर्यजनक रूप से लंबा है। :-) हालांकि आपको टेस्ट स्क्रिप्ट के साथ काम करने के लिए यह कैसे मिला? जब मैंने कोशिश की तो मुझे सभी त्रुटियां मिलीं ./test ruby golfscript.rb peter.gs? मैं इसके बजाय पाइप किए गए इनपुट के रूप में कुछ परीक्षण फेंक दिया।
गारेथ

./test-bagatelle.sh `which golfscript.rb` bagatelle2.gs
पीटर टेलर

4

पायथन 2, 147 132 130 चार्ट

आयात sys
रों = 0
एल = सूची (sys.stdin)
t में l के लिए [-1]। split ():
 पी = पूर्णांक (टी) +1
 l में r के लिए [: - 3]: p- = "/".find(r.pp])
 रों + = मिनट (पी 1,20-पी)
प्रिंट एस

2
हो सकता है s+=min(p,19-p)?
कीथ रान्डेल

2
for r in l[:-3]:p-=" /".find(r[p])कुछ वर्णों को बचाना चाहिए
gnibbler

1
धन्यवाद दो। विशेष रूप से gnibbler की चाल वास्तव में बहुत बढ़िया है - लेकिन यह एक छोटे त्रि-फ़ंक्शन को भी जानने के लिए चोट नहीं पहुँचा सकती है;)
cemper93

1
@gnibbler यह एक प्रतिभाशाली चाल है।
गेरेथ

1
19-p+1 == 20-p
लोजैकर

3

अजगर, 165 159 चर

import sys
A=list(sys.stdin)
C=range(10)
C+=C[::-1]
for L in A[-4::-1]:C=[C[i+ord(L[i+1])%31%4-1]for i in range(20)]
print sum(C[int(x)]for x in A[-1].split())

यह स्कोर की एक पंक्ति के साथ शुरू होता है और नीचे से ऊपर की ओर अपना काम करता है, यह गणना करते हुए कि प्रत्येक पंक्ति में शुरू होने वाली गेंदों के लिए स्कोर क्या होगा।


list(sys.stdin)इसके बजायreadlines()
gnibbler

3

रूबी, 123 117 115 107 107 99 98 97

*b,_,_,n=*$<
p eval n.split.map{|k|i=k.to_i+1
b.map{|l|i-='\ /'.index(l[i])-1}
[i-1,20-i].min}*?+

1
बचाव क्यों करें? क्या आप प्रारंभिक असाइनमेंट में b से दो लाइनों को काट नहीं सकते हैं?
मिग्मारू

@ मइगीमारु: वास्तव में। लेकिन मुझे दो नहीं बल्कि तीन लाइनों को काटना है।
22

सही। मेरा मतलब दो और लाइनों से था। माफ़ करना।
मिग्मारू

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