गोल्फर साहसिक
यह पहली चुनौती है! बाद में और भी चुनौतियाँ होंगी जिन्हें पिछली चुनौती से डेटा की आवश्यकता होगी :)
अध्याय 1: फूलदान
आइए एक मिनट की कल्पना करें .. आप एक शक्तिशाली भगवान हैं, आपकी शक्तियां असीम हैं लेकिन एक चीज की आवश्यकता है: आत्माएं। यहां प्रत्येक आत्मा को एक बाइट द्वारा दर्शाया गया है, प्रत्येक बाइट का उपयोग आप एक आत्मा का त्याग करते हैं। तो लक्ष्य स्पष्ट रूप से आत्माओं की कम से कम राशि का त्याग करते हुए लोगों की सबसे बड़ी राशि को बचाने का है।
आपकी पहली चुनौती एक छोटे से गाँव को बचाना है, अगर आप उसकी चुनौती को हल कर लेते हैं तो शैतान पूरे गाँव को नष्ट नहीं करने को तैयार है।
चुनौती :
आपके पास एक वर्टीकल फूलदान है जिसमें 10 चीजें (वायु शामिल) हो सकती हैं। यदि आप उस फूलदान में कोई चीज़ डालते हैं, तो गुरुत्वाकर्षण उस चीज़ को नीचे की तरफ कर देगा। यदि फूलदान पहले से ही भरा हुआ है (और यह हमेशा भरा रहता है यदि आप इसे "हवा से भरा" मानते हैं), तो इनपुट फूलदान के शीर्ष पर मौजूद तत्व को बदल देगा।
यहाँ अनुमत चीजों का सेट है:
- वायु
0 / - एक चट्टान
1 / - - एक पत्ता
2 / ~ - एक विस्फोटक
3 / x
यदि "ए बम" के ऊपर कोई चट्टान या पत्ती है, तो यह ऊपर की चीज़ पर विस्फोट और नष्ट कर देगा।
इनपुट उन चीज़ों की सूची है जिन्हें आप फूलदान में रखेंगे।
उदाहरण: 11231: आप 2 चट्टानें डालेंगे, फिर एक पत्ता, फिर एक बम और अंत में एक अंतिम चट्टान।
जब फूलदान स्थिर होता है, तो आप निम्न नियम से गणना करना शुरू कर सकते हैं:
- रॉक संचायक को 1 यूनिट जोड़ता है
- पत्ता संचायक को 2 से गुणा करता है
- बम संचायक को 1 से घटाता है
- हवा कुछ नहीं करती
(आपको कलश के ऊपर से गिनती शुरू करने की आवश्यकता है)
इनपुट के रूप में हम "11231" का उपयोग कर रहे हैं:
|-| |-| |~| |x| |-| | | | | | | | | | | | |
| | |-| |-| |~| |x| |-| | | | | | | | | | |
| | | | |-| |-| |~| |x| |-| | | | | | | | |
| | | | | | |-| |-| |~| |x| |-| | | | | | |
| | | | | | | | |-| |-| |~| |x| |-| | | | |
| | | | | | | | | | |-| |-| |~| |x| |-| | |
| | | | | | | | | | | | |-| |-| |~| |x| | |
| | | | | | | | | | | | | | |-| |-| |~| |~|
| | | | | | | | | | | | | | | | |-| |-| |-|
| | | | | | | | | | | | | | | | | | |-| |-|
और आउटपुट 2 होगा (गणना के रूप में ((0 x 2) + 1) + 1) फूलदान के सभी राज्यों को मुद्रित करने की आवश्यकता नहीं है!
आधार कार्यक्रम (पायथन 3)
आप इसे समझ सकते हैं कि यह कैसे काम करता है।
def printVase(vase):
for i in vase:
if i == 1:
print("|-|")
elif i == 2:
print("|~|")
elif i == 3:
print("|x|")
else:
print("| |")
def updateVase(vase):
changed = False
for i in range(len(vase), -1, -1):
if i < len(vase) - 1:
if vase[i+1] == 3 and vase[i] in [1,2]:
vase[i], vase[i+1] = 0, 0
changed = True
if not vase[i+1] and vase[i] in [1, 2, 3]:
vase[i], vase[i+1] = vase[i+1], vase[i]
changed = True
return changed
userInput = input("Vase : ")
vase = [0 for i in range(0, 10)]
oldVase = vase
while updateVase(vase) or userInput != "":
if userInput != "":
vase[0] = int(userInput[0])
userInput = userInput[1::]
printVase(vase)
input()
accumulator = 0
for i in vase:
if i == 1:
accumulator += 1
if i == 2:
accumulator *= 2
if i == 3:
accumulator -= 1
print(accumulator)
गोल्फ संस्करण (पायथन 3, नो वासे डिस्प्ले): 360 बाइट्स = 360 अंक
def u(v):
c=0
for i in range(len(v),-1,-1):
if i<len(v)-1:
if v[i+1]==3 and v[i]in[1,2]:v[i],v[i+1],c=0,0,1
if not v[i+1]and v[i]in[1,2,3]:v[i],v[i+1],c=v[i+1],v[i],1
return c
l,v=input(),[0 for i in range(0, 10)]
while u(v)or l!="":
if l!="":v[0],l=int(l[0]),l[1::]
a=0
for i in v:
if i==1:a+=1
if i==2:a*=2
if i==3:a-=1
print(a)
यदि आप परीक्षण करना चाहते हैं कि क्या आपका प्रोग्राम सही तरीके से काम करता है, तो आप इस इनपुट का परीक्षण कर सकते हैं: 12122111131
सही उत्तर 43 है :) (धन्यवाद एमिग्ना)
अब अंक के लिए:
- (x) वह बिंदु जहाँ: x आपके प्रोग्राम को लिखने के लिए आवश्यक बाइट्स की मात्रा है। यदि आप अगली चुनौती पोस्ट करने के बाद जवाब देते हैं, तो इस चुनौती के अंक आपके कुल अंकों में नहीं जोड़े जाएंगे।
लक्ष्य पूरी चुनौती के दौरान कम से कम अंक रखने का है :) अगर आप चुनौती के किसी एक हिस्से को छोड़ देते हैं, तो आपके पास (wx + 1) अंक डिफ़ॉल्ट रूप से स्किप किए गए भाग के लिए होंगे (जहाँ wx सबसे खराब स्कोर है) उस चुनौती के लिए)।
अगली चुनौती के लिए आवश्यक डेटा:
आउटपुट जब इनपुट = 10100000200310310113030200221013111213110130332101
वर्तमान चैंपियन: एमिग्ना
भाग्य आप सभी का साथ दे !
333एक फूलदान का निर्माण [0, 0, 0, 0, 0, 0, 0, 3, 3, 3]करता है और इसलिए इसका एक स्कोर होता है -3, लेकिन क्या यह आपके विनिर्देश [0, 0, 0, 0, 0, 0, 0, 0, 0, 3]के -1अनुसार नहीं होना चाहिए ?