हिडन पॉवर कैलकुलेटर


15

मेरे द्वारा हमेशा पोकेमॉन को पसंद करने के कारणों में से एक है क्योंकि इस तरह के एक सरल-प्रतीत होने वाले खेल के लिए, इसमें जटिलता की बहुत सारी परतें हैं। आइए चाल हिडन पावर पर विचार करें। खेल में, हिडन पावर का प्रकार और शक्ति (जनरेशन VI से पहले कम से कम) हर Pokemon के लिए अलग है जो इसका उपयोग करता है! यह बहुत अच्छा है, है ना? अब, क्या आप आश्चर्यचकित होंगे अगर मैंने आपको बताया कि हिडन पावर का प्रकार और शक्ति यादृच्छिक रूप से उत्पन्न नहीं हुई है?

सभी पोकेमॉन गेम्स में, सभी पोकेमॉन (आपकी पार्टी में सभी, सभी POKEMON नहीं) के पास छह आंतरिक रूप से संग्रहीत पूर्णांक हैं (एक एचपी स्टेट के लिए, एक अटैक स्टेट के लिए, एक डिफेंस स्टेट के लिए, एक विशेष हमले स्टेट के लिए,) विशेष रक्षा स्टेट के लिए एक और स्पीड स्टेट के लिए एक) को उनके व्यक्तिगत मूल्य या IVs कहा जाता है । ये मान 0 से 31 के बीच होते हैं, और वे अनिवार्य रूप से कुछ कारकों में से एक हैं जो पोकेमॉन के समग्र आंकड़ों को प्रभावित करते हैं। फिर भी, वे हिडन पावर के प्रकार और शक्ति का निर्धारण करते हैं!

जनरेशन III से V में (जिन पीढ़ियों का एल्गोरिथम हम कार्यान्वित करेंगे), हिडन पावर का प्रकार निम्न सूत्र द्वारा निर्धारित किया जाता है (फर्श कोष्ठक पर ध्यान दें, इसका मतलब है कि आपको परिणाम को गोल करने की आवश्यकता है):

जहां a, b, c, d, e और f HP के सबसे कम महत्वपूर्ण बिट्स हैं, अटैक, डिफेंस, स्पीड, स्प। हमला, और सपा। क्रमशः रक्षा IVs। (कम से कम महत्वपूर्ण बिट IV मॉड 2 है।) यहां उत्पादित संख्या को इस चार्ट का उपयोग करके वास्तविक प्रकार में परिवर्तित किया जा सकता है:

0 Fighting
1 Flying
2 Poison
3 Ground
4 Rock
5 Bug
6 Ghost
7 Steel
8 Fire
9 Water
10 Grass
11 Electric
12 Psychic
13 Ice
14 Dragon
15 Dark

शक्ति के लिए, एक समान सूत्र का उपयोग किया जाता है:

यहाँ, हालांकि, यू, वी, डब्ल्यू, एक्स, वाई और जेड एचपी के दूसरे सबसे कम महत्वपूर्ण बिट का प्रतिनिधित्व करते हैं, हमला, रक्षा, गति, सपा। हमला और सपा। रक्षा IVs (उस क्रम में फिर से)। (दूसरा कम से कम महत्वपूर्ण बिट अधिक जटिल है तो कम से कम महत्वपूर्ण बिट है। यदि IV मॉड 4 2 या 3 है, तो बिट 1 है, अन्यथा यह 0. है। यदि आपकी भाषा में किसी प्रकार का अंतर्निहित या कम से कम अधिक चतुर तरीका है ऐसा करने के लिए, आपको शायद इसका इस्तेमाल करना चाहिए।)


इसलिए, जैसा कि आप शायद पहले से ही समझ चुके हैं, यहां चुनौती एक प्रोग्राम लिखने की है जो कि STDIN के माध्यम से रिक्त स्थान द्वारा अलग किए गए छह पूर्णांकों में ले जाता है जो HP, Attack, Defence, Speed, Sp का प्रतिनिधित्व करते हैं। हमला और सपा। एक Pokemon की रक्षा IVs (उस क्रम में) और उस Pokemon की हिडन पावर के प्रकार और शक्ति का उत्पादन करता है।

नमूना इनपुट:

30 31 31 31 30 31

नमूना उत्पादन:

Grass 70

नमूना इनपुट:

16 18 25 13 30 22

नमूना उत्पादन:

Poison 61

यह कोड-गोल्फ है, इसलिए सबसे छोटा कोड जीतता है। सौभाग्य!

(और लोगों के पूछने से पहले, मैंने यहां जेनरेशन वी एल्गोरिथम का इस्तेमाल किया क्योंकि जेनरेशन VI पावर रेंडमाइजेशन से छुटकारा दिलाता है और इसे हमेशा 60 बनाता है। न केवल मुझे लगता है कि यह अविश्वसनीय रूप से लंगड़ा है, मुझे लगता है कि यह चुनौती बहुत कम इंटरेस्टिंग करता है। चुनौती के उद्देश्यों के लिए, हम एक जनरल वी गेम चला रहे हैं।)


क्षमा करें, मैंने गलती से नमूना इनपुट और आउटपुट छोड़ दिया। हेयर यू गो।
एक spaghetto

कुछ अतिरिक्त परीक्षण नमूने अच्छे होंगे :)।
ब्लैकहोल सेप

हां, मेरा बुरा। फिक्स्ड।
एक

3
मैं मिसिंगनो के बारे में एक चुनौती देखना चाहूंगा।
mbomb007 15

आगे ऐसा हो सकता है;)
एक

जवाबों:


3

अजगर, 110 बाइट्स

J+dGA.b/*iN2CY63Cm_+0jd2_Q"("r@cs@LJjC"!�W��Zm�����A�zB0i��ȏ\"���?wC�ǀ�-#ך
?ЫܦO@�J/m���#"26)G3+30H

इसमें अनपेक्षित वर्ण शामिल हैं। तो यहाँ एक हेक्सडम्प है:

00000000: 4a 2b 64 47 41 2e 62 2f 2a 69 4e 32 43 59 36 33  J+dGA.b/*iN2CY63
00000010: 43 6d 5f 2b 30 6a 64 32 5f 51 22 0f 28 22 72 40  Cm_+0jd2_Q".("r@
00000020: 63 73 40 4c 4a 6a 43 22 10 21 de 57 ad c8 5a 1c  cs@LJjC".!.W..Z.
00000030: 10 6d e0 d6 12 f6 80 bc 41 85 7a 42 30 69 ae 80  .m......A.zB0i..
00000040: c8 8f 5c 22 a0 84 ab 3f 77 43 01 ca c7 80 d0 1d  ..\"...?wC......
00000050: 2d 23 d7 9a 0a 3f d0 ab dc a6 4f 40 b9 4a 2f 6d  -#...?....O@.J/m
00000060: d2 ca c6 23 22 32 36 29 47 33 2b 33 30 48        ...#"26)G3+30H

आप फ़ाइल pokemon.py को डाउनलोड कर सकते हैं और इसे चला सकते हैंpython3 pyth.py pokemon.pyth

इनपुट 30, 31, 31, 31, 30, 31प्रिंट करता है

Grass
70

स्पष्टीकरण:

J+dGA.b/*iN2CY63Cm_+0jd2_Q".("
J+dG                            store the string " abc...xyz" in J
                 m      _Q      map each number d in reverse(input list) to:
                     jd2          convert d to base 2
                   +0             add a zero (list must have >= 2 items)
                  _               reverse the list
                C               zip
                          ".("  string with the ascii values 15 and 40
     .b                         map each N of ^^ and Y of ^ to:
         iN2                       convert N from base 2 to base 10
        *   CY                     multiply with the ascii value of Y
       /      63                   and divide by 63
    A                           G, H = ^

r@cs@LJjC"longstring"26)G3+30H
        C"longstring"           interpret the string as bytes and convert 
                                from base 256 to base 10
       j             26         convert to base 26
   s@LJ                         lookup their value in J and create a string
                                this gives "fighting flying ... dark"
  c                    )        split by spaces
 @                      G       take the Gth element
r                        3      make the first letter upper-case and print
                          +30H  print 30 + H

3
मुझे यह नहीं लगता कि यह मनोरंजक है कि अजगर फ़ाइलों के लिए आपकी फ़ाइल एक्सटेंशन अजगर की फ़ाइल एक्सटेंशन की तुलना में अधिक
क्रियाशील है

5

रूबी, 210

a=$*.map.with_index{|a,i|[a.to_i%2<<i,a.to_i[1]<<i]}.transpose.map{|a|a.inject &:+}
$><<"#{%w(Fighting
Flying
Poison
Ground
Rock
Bug
Ghost
Steel
Fire
Water
Grass
Electric
Psychic
Ice
Dragon
Dark)[a[0]*15/63]} #{a[1]*40/63+30}"

पहली बार गोल्फ, तो मुझे लगता है कि यह बहुत स्पष्ट समाधान है।


3

CJam, 140 115 बाइट्स

q~]W%_1f&2bF*63/"GMÿD>BÙl½}YÛöí6P¶;óKs¯¿/·dǯã®Å[YÑÌÞ%HJ9¹G4Àv"256b25b'af+'j/=(euooSo2f/1f&2b40*63/30+

ध्यान दें कि कोड में अनपेक्षित वर्ण हैं।

CJam दुभाषिया में इसे ऑनलाइन आज़माएँ: क्रोम | फ़ायरफ़ॉक्स


वाह, यह तेज़ था। अच्छी नौकरी!
एक

2

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

कम से कम, अब के लिए। प्रकार और जटिल गणित की सूची में लगभग समान स्थान होता है। मैं उन दोनों को छोटा करने के तरीकों की तलाश कर रहा हूं।

x=>([a,b,c,d,e,f]=x.split` `,`Fighting
Flying
Poison
Ground
Rock
Bug
Ghost
Steel
Fire
Water
Grass
Electric
Psychic
Ice
Dragon
Dark`.split`
`[(a%2+b%2*2+c%2*4+d%2*8+e%2*16+f%2*32)*5/21|0]+' '+((a/2%2+(b&2)+(c&2)*2+(d&2)*4+(e&2)*8+(f&2)*16)*40/63+30|0))

हमेशा की तरह, सुझावों का स्वागत है!


1

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

f=(...l)=>(q=(b,m)=>~~(l.reduce((p,c,x)=>p+(!!(c&b)<<x),0)*m/63),'Fighting0Flying0Poison0Ground0Rock0Bug0Ghost0Steel0Fire0Water0Grass0Electric0Psychic0Ice0Dragon0Dark'.split(0)[q(1,15)]+' '+(q(2,40)+30))

उदाहरण चलता है:

f(30,31,31,31,30,31)
> "Grass 70"

f(16,18,25,13,30,22)
> "Poison 61"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.