मुझे कितना मैना चाहिए?


33

कालकोठरी मास्टर पहले वास्तविक समय में भूमिका निभाने वाले खेलों में से एक था, जिसे मूल रूप से 1987 में अटारी एसटी पर रिलीज़ किया गया था। समय के लिए अन्य रोमांचक चीजों के बीच, इसने रनों के आधार पर एक परिष्कृत परिष्कृत प्रणाली की पेशकश की।

आपका कार्य आज एक प्रोग्राम या फंक्शन लिखना है जो डंगऑन मास्टर में दिए गए वर्तनी को डालने के लिए आवश्यक मान बिंदुओं की संख्या का मूल्यांकन करता है।

कालकोठरी मास्टर स्क्रीनशॉट

उपरोक्त तस्वीर में 'स्पेल कास्ट' प्रणाली शीर्ष दायां सियान बॉक्स है।

मंत्र, रन और मन

कालकोठरी मास्टर मंत्र 2 से 4 रन से बना है, इस सटीक क्रम में निम्नलिखित श्रेणियों में से चुने गए हैं:

  1. शक्ति (अनिवार्य)
  2. मौलिक प्रभाव (अनिवार्य)
  3. फॉर्म (वैकल्पिक)
  4. कक्षा / संरेखण (वैकल्पिक)

इसका अर्थ है कि मान्य मंत्र या तो हैं:

  • पावर + एलिमेंटल इन्फ्लुएंस
  • पावर + एलिमेंटल इन्फ्लुएंस + फॉर्म
  • पावर + एलिमेंटल इन्फ्लुएंस + फॉर्म + क्लास / एलाइनमेंट

प्रत्येक श्रेणी में 6 रन होते हैं, और प्रत्येक रन में एक संबंधित आधार मान लागत होती है:

=============================================================================
| Power               | Rune      |   Lo |   Um |   On |   Ee |  Pal |  Mon |
|                     +-----------+------+------+------+------+------+------+
|                     | Base cost |    1 |    2 |    3 |    4 |    5 |    6 |
=============================================================================
| Elemental Influence | Rune      |   Ya |   Vi |   Oh |  Ful |  Des |   Zo |
|                     +-----------+------+------+------+------+------+------+
|                     | Base cost |    2 |    3 |    4 |    5 |    6 |    7 |
=============================================================================
| Form                | Rune      |  Ven |   Ew | Kath |   Ir |  Bro |  Gor |
|                     +-----------+------+------+------+------+------+------+
|                     | Base cost |    4 |    5 |    6 |    7 |    7 |    9 |
=============================================================================
| Class / Alignment   | Rune      |   Ku |  Ros | Dain | Neta |   Ra |  Sar |
|                     +-----------+------+------+------+------+------+------+
|                     | Base cost |    2 |    2 |    3 |    4 |    6 |    7 |
=============================================================================

मन लागत का मूल्यांकन

वर्तनी की मान लागत सभी रन की मन लागत का योग है:

  • पावर रन की लागत हमेशा इसकी आधार लागत (1 से 6 तक) के बराबर होती है।

  • अन्य रून्स के लिए, निम्न सूत्र लागू होता है:

    लागत = तल ((शक्ति + १) * आधार_कॉस्ट / २)

    जहां पावर पॉवर रन का बेस कॉस्ट है।

उदाहरण

Spell: Lo Ful
Cost : 1 + floor((1 + 1) * 5 / 2) = 1 + 5 = 6

Spell: Um Ful
Cost : 2 + floor((2 + 1) * 5 / 2) = 2 + 7 = 9

Spell: Pal Vi Bro
Cost : 5 + floor((5 + 1) * 3 / 2) + floor((5 + 1) * 7 / 2) = 5 + 9 + 21 = 35

स्पष्टीकरण और नियम

  • आपके इनपुट में 2 से 4 स्ट्रिंग्स शामिल होंगे जो स्पेल के रन को दर्शाते हैं। आप उन्हें किसी भी उचित प्रारूप में ले जा सकते हैं, जैसे कि 4 अलग-अलग पैरामीटर, स्ट्रिंग की एक सरणी (जैसे ['Lo', 'Ful']), या अपनी पसंद के एकल-वर्ण विभाजक (जैसे 'Lo Ful') के साथ सिर्फ एक स्ट्रिंग । कृपया अपने उत्तर में चयनित इनपुट प्रारूप को निर्दिष्ट करें।
  • रन मान्य होने की गारंटी है।
  • श्रेणियों के आदेश का सम्मान किया जाना चाहिए। अप्रयुक्त श्रेणियां या तो गायब हो सकती हैं या कुछ गलत मूल्य के साथ प्रतिस्थापित की जा सकती हैं।
  • आप इनमें से किसी भी प्रारूप में रन स्वीकार कर सकते हैं: 1. एक कैपिटल लेटर जिसके बाद लोअर केस ( 'Ful') 2. ऑल लोअर केस ( 'ful') 3. ऑल अपर केस ( 'FUL')। लेकिन आप विभिन्न स्वरूपों को नहीं मिला सकते हैं
  • स्पष्ट रूप से, हमें यह जानने की परवाह नहीं है कि क्या वास्तव में जादू का खेल में कुछ प्रभाव है (जिज्ञासु के लिए, उपयोगी मंत्र यहां सूचीबद्ध हैं )।
  • यह , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है।
  • और याद रखें: लॉर्ड कैओस आप देख रहे हैं!

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

Spell          | Output
---------------+-------
Lo Ful         | 6
Um Ful         | 9
On Ya          | 7
Lo Zo Ven      | 12
Pal Vi Bro     | 35
Ee Ya Bro Ros  | 31
On Ful Bro Ku  | 31
Lo Zo Kath Ra  | 20
On Oh Ew Sar   | 35
Ee Oh Gor Dain | 43
Mon Zo Ir Neta | 68
Mon Des Ir Sar | 75

1
स्पर्शरेखा - लेकिन ऐसे लोगों के लिए जो इस प्रणाली को पसंद करते हैं, द मैजिकल लैंड ऑफ वोज़्ज़ एक जापानी एसएनईएस गेम (अंग्रेजी अनुवाद उपलब्ध है) जो लगभग उसी प्रणाली को लागू करता है - जहां अक्षरों का कोई भी तार एक जादू बन जाता है। google.co.jp/webhp?ie=UTF-8#q=magical+land+of+wozz
Coty Johnathan Saxman

मुझे किसी को कालकोठरी मास्टर खेलते देखने की अस्पष्ट याद है (मुझे नहीं लगता कि यह एसटी पर था)। उन्होंने अपने एक फाइटर्स को मैजिक नेकलेस से लैस किया था, और हर बार वे यह जाँचते थे कि क्या यह रिचार्ज हुआ है और यदि ऐसा है तो मुझे लगता है कि किसी अन्य प्रकार का रनवे किसी तरह का हल्का स्पेलिंग है, ताकि फाइटर कास्ट कर सके यह हर दस मिनट में जादू करता है, और अंततः जादूगरनी में एक स्तर प्राप्त करता है।
नील

@ नील यह हार संभवत: मूनस्टोन (+3 मन) या लटकन फेरल (+1 विजार्ड स्किल) का था। सभी आइटम यहां सूचीबद्ध हैं
अरनुलद

इस स्क्रिप्ट को सभी संभावित इनपुट संयोजनों का उत्पादन करना चाहिए
NieDzejkob

जवाबों:


6

SOGL V0.12 , 110 78 बाइट्स

θKKι"LUOEPM”;W:A≤{B"⁶Μ↓§QΕņj“L─"¶Ζq«╝γDyΜ2¶S◄Μ$‘č¹I6nēwι{_Cb:ƧRA=┌*ΚKι=?aIc*»+

यह कोशिश करो!

शायद एक बाइट को गोल्फ कर सकता है या दो को सबकुछ दोबारा करने से

स्पष्टीकरण:

θ            split on spaces
 K           pop the 1st item
  K          pop from the string the 1st character
   ι         remove the original string from stack
    "”;W     get the chars index in "LUOEPM"
        :A   save a copy to variable A
          ≤  put the power (used as the mana) on the bottom of the stack (with the thing above being the input array)

{            for the leftover items in the input do
 B             save the current name on B
  "..“         push 456779223467234567
      L─       base-10 decode it (yes, silly, but it converts it to an array of digits)
        ".‘    push "VEKIBGKRDN-SYVOFDZ"

      č        chop to characters
       ¹       create an array of those two
        I      rotate clockwise
         6n    group to an array with sub-arrays of length 6 (so each array in the array contains 3 items, corresponding to the categories, each with 6 arrays with the runes 1st letter (or "-" in the case of Ra) and base cost)
           ē   push variable e (default = user input number, which errors and defaults to 0) and after that increase it (aka `e++`)
            w  get that item in the array (the array is 1-indexed and the variable is not, so the array was created shifted (which somehow saves 0.9 ≈ 1 byte in the compression))

 ι             remove the original array
  {            for each in that (current category) array
   _             dump all contents on stack (so pushing the runes name and then base cost)
    C            save pop (base cost) on variable B
     b:          duplicate the name
       ƧRA=      push if pop = "RA"
           ┌*    get that many (so 0 or 1) dashes
             Κ   prepend the "" or "-" to the name
              K  pop the 1st letter of the name
               ι remove the modified name, leaving the 1st letter on the stack

         =?      if top 2 are equal (one of the dumped items and the 1st letter of the current inputs)
           a       push variable A (the power)
            I      increase it
             c     push variable C (the current base cost)
              *    multiply
               »   floor-divide by 2
                +  add that to the power

2
यह वही है जो इसे और भी दिलचस्प
बनाता है

क्या आप एक स्पष्टीकरण जोड़ सकते हैं?
कैलक्यूलेटरफ्लीन

@CalculatorFeline Kinda इस जवाब को भूल गई। शायद गोल्फ और फिर एक स्पष्टीकरण जोड़
देंगे

17

पायथन 2 , 135 119 115 बाइट्स

b=[int('27169735 2  4567 435262'[int(x,36)%141%83%50%23])for x in input()]
print b[0]+sum(a*-~b[0]/2for a in b[1:])

इसे ऑनलाइन आज़माएं!

इनपुट स्टड से तार की सूची है


आउटगोल्फ्ड ...>। <
श्री एक्सकोडर

मैंने आपके TIO इनपुट मेथड को मेरे उत्तर के साथ ही कॉपी किया है, आशा है कि आप बुरा नहीं मानेंगे।
श्री Xcoder

@ Mr.Xcoder मैंने अब सभी परीक्षण मामलों को शामिल किया है। यदि आप चाहते हैं तो आप उन्हें कॉपी कर सकते हैं
Ov

अगर मैं इसे अपने जेएस समाधान के लिए उधार लेता हूं तो ओओ, अच्छी तरह से अनुक्रमण पर किया जाता है?
शगुन

11

05AB1E , 83 82 बाइट्स

.•Y<εΔ•¹нk©.•M₄P畲нkÌ.•Jrû •³нkD(i\ë4 3‡4+}.•A1Δ#•I4èkD(i\ë3LJ012‡Ì})ćsv®>y*;(î(+

इसे ऑनलाइन आज़माएं!

-1 Emigna को धन्यवाद ।

SOOOOOOO अपुष्ट :(

स्पष्टीकरण:

.•Y<εΔ•¹нk©.•M₄P畲нkÌ.•Jrû •³нkD(i\ë4 3‡4+}.•A1Δ#•I4èkD(i\ë3LJ012‡Ì})ćsv®>y*;(î(+ Accepts four runes as separate lines, lowercase. Use Ø for missing runes.
.•Y<εΔ•¹нk©                                                                        Index first letter of first rune into "aluoepm" ("a" makes 1-indexed)
           .•M₄P畲нkÌ                                                             Index first letter of second rune into "yvofdz", 2-indexed.
                      .•Jrû •³нkD(i\ë4 3‡4+}                                       Index first letter of third rune into "vekibg", 0-indexed, if it's not there pop, else, if index is 4 replace with 3, else keep as-is, then increment by 4.
                                            .•A1Δ#•I4èkD(i\ë3LJ012‡Ì}              Index fourth letter (modular wrapping) of fourth rune into "kodnra", if it's not there pop, else, if index is one of 1, 2 or 3, replace with 0, 1 or 2 respectively, else keep as-is, then increment by 2.
                                                                     )ćs           Wrap all numbers into a list, keeping the power rune behind.
                                                                        v          For each
                                                                         ®>y*;(î(   Apply the formula
                                                                                 +  Add to total sum

एक छोटा सा गोल्फ यह होगा कि यदि आप .•Y<εΔ•शुरुआत में सूचकांक करते हैं , तो आपको सूचकांक को बढ़ाने की आवश्यकता नहीं है।
एमिग्ना

@Eigna Ooh के पास अभी तक प्रयास करने का समय नहीं है ...
Eg the Outgolfer

11

जावास्क्रिप्ट (ईएस 6), 157 156 116 112 100 99 97 बाइट्स

स्ट्रिंग के एक सरणी के रूप में इनपुट लेता है।

a=>a.map(c=>t+=(v=+`27169735020045670435262`[parseInt(c,36)%141%83%50%23],+a?a*v+v>>1:a=v),t=0)|t
  • ओव्स पायथन सॉल्यूशन से इंडेक्सिंग ट्रिक को उधार लेकर एक बड़े 44 बाइट्स को बचाया - यदि आप इस उत्तर को बढ़ा रहे हैं, तो कृपया इसे भी बढ़ाएं
  • 13 बाइट्स का धन्यवाद अरनौल को धन्यवाद दिया गया कि टर्नरी का उपयोग करने का एक स्पष्ट अवसर होना चाहिए।

इसे ऑनलाइन आज़माएं!


व्याख्या

हू, लड़का, यह मजेदार होने वाला है - तुच्छ समाधान के लिए मेरी व्याख्या सबसे अच्छे समय पर चूसना है! आइए इसे जाने दें ...

a=>

एक अनाम फ़ंक्शन पैरामीटर के माध्यम से एक तर्क के रूप में सरणी लेता है a

a.reduce((t,c)=>,0)

फ़ंक्शन के माध्यम से प्रत्येक को पास करके सरणी में तत्वों को कम करें; tपैरामीटर, चल कुल है cपैरामीटर वर्तमान स्ट्रिंग है और 0का प्रारंभिक मूल्य है t

parseInt(c,36)

वर्तमान तत्व को बेस 36 स्ट्रिंग से दशमलव पूर्णांक में परिवर्तित करें।

%141%83%50%23

उस पर कुछ मोडुलो ऑपरेशन करें।

+`27169735 2  4567 435262`[]

उस सूचकांक में स्ट्रिंग से चरित्र को पकड़ो और इसे एक संख्या में परिवर्तित करें।

v=

उस नंबर को वेरिएबल पर असाइन करें v

+a?

जांचें कि क्या चर aएक संख्या है। पहले तत्व aके लिए स्ट्रिंग्स की सरणी होगी NaN, जो इसे एक संख्या में बदलने की कोशिश करेगी , जो कि गलत है। प्रत्येक बाद के पास पर, aएक सकारात्मक पूर्णांक होगा, जो सत्य है।

a*v+v>>1

यदि aएक संख्या है, तो हम इसे के मूल्य से गुणा करते हैं, के मूल्य को vजोड़ते हैं vऔर परिणाम के बिट्स को दाईं ओर 1 बिट स्थानांतरित करते हैं, जो 2 और फर्श से विभाजित होने के समान परिणाम देता है।

:a=v

यदि aकोई संख्या नहीं है, तो हम इसके मूल्य को निर्दिष्ट करते हैं v, जो हमें 0पहले पास पर हमारे कुल में जोड़ने के लिए भी देगा ।

t+

अंत में, हम अपने चलने वाले कुल के लिए परिणाम को ऊपर की ओर से जोड़ते हैं।


मूल, 156 बाइट्स

a=>a.reduce((t,c)=>t+(p+1)*g(c)/2|0,p=(g=e=>+`123456234567456779223467`["LoUmOnEePaMoYaViOhFuDeZoVeEwKaIrBrGoKuRoDaNeRaSa".search(e[0]+e[1])/2])(a.shift()))

आप पुन: उपयोग करके एक और बाइट बचा सकते हैं: a=>a.reduce((t,c)=>t+(v=+'27169735020045670435262'[parseInt(c,36)%141%83%50%23],+a?a*v+v>>1:a=v),0)(EDIT: इनपुट में पास किए गए पूर्णांकों के बारे में एक अप्रासंगिक टिप्पणी को हटा दिया गया - ऐसा लगता है कि मुझे अपनी चुनौती बहुत अच्छी तरह से समझ नहीं आई ^ ^)
अरनौल्ड

नीट ट्रिक, धन्यवाद, @ अर्नुलड। एक गणना के साथ आने की कोशिश कर रहा है जो मुझे उस समय कम बाइट्स में अनुक्रमित करने वाली संख्या देगा, लेकिन बहुत अधिक भाग्य नहीं है।
झबरा

6

जावास्क्रिप्ट, 212 210 207 206 बाइट्स

सीधे-आगे खोज एल्गोरिथ्म, खोज के तार कुल बाइट्स में योगदान दे रहे हैं।

कोड

s=>eval('p=q=+(e=s.map(r=>"1 2 3 4 5  6  2 3 4 5  6  7 4  5 6   7 7  9  2 2  3   4   6 7"["LoUmOnEePalMonYaViOhFulDesZoVenEwKathIrBroGorKuRosDainNetaRaSar".search(r)])).shift();e.map(c=>p+=((q+1)*c)>>1);p')

इनपुट प्रारूप

स्ट्रिंग सरणी, प्रत्येक आइटम एक पहला अक्षर-कैपिटलाइज़्ड स्ट्रिंग है। उदाहरण: ["सोम", "ज़ो", "इर", "नेता"]

व्याख्या

e=s.map(r=>"1 2 3 4 5  6  2 3 4 5  6  7 4  5 6   7 7  9  2 2  3   4   6 7"["LoUmOnEePalMonYaViOhFulDesZoVenEwKathIrBroGorKuRosDainNetaRaSar".search(r)])

यह मूल लागतों के लिए पूछताछ करता है।

p=q=+(/*blah*/).shift() 

ऊपर दिए गए सरणी परिणाम से पहले आइटम के साथ 2 चर को प्रारंभ करता है, और उस आइटम को हटा देता है। पहले नंबर पर डाला जाना चाहिए, अन्यथा इसे अगले भाग में स्ट्रिंग कॉन्फैनेटेशन माना जाएगा।

e.map(c=>p+=((q+1)*c)>>1);

गैर-पावर रन की लागत को आधार पावर में जोड़ता है। फर्श (ब्लाह) / 2 के बजाय शिफ्टिंग का उपयोग किया जाता है।

eval(/*blah*/;p)

अंतिम परिणाम का मूल्यांकन करें। (क्रेडिट: स्टेप हेन)

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

Lo Ful | 6
Um Ful | 9
On Ya | 7
Lo Zo Ven | 12
Pal Vi Bro | 35
Ee Ya Bro Ros | 31
On Ful Bro Ku | 31
Lo Zo Kath Ra | 20
On Oh Ew Sar | 35
Ee Oh Gor Dain | 43
Mon Zo Ir Neta | 68
Mon Des Ir Sar | 75

संपादन 1: 212> 210 - ब्रेसिज़ की एक जोड़ी को हटाया

संपादित करें 2: 210> 207 - जेएस नियमों पर अनुस्मारक के लिए धन्यवाद स्टेप हेन और eval () फ़ंक्शन का उपयोग करने पर कुछ संकेत। चूंकि AS3 ने निष्कासन () का उपयोग करने से मना किया था, इसलिए मैंने लंबे समय तक इसका उपयोग नहीं किया

Edit 3: 207> 206 - खोज के साथ indexOf () की जगह विचार के लिए धन्यवाद झबरा ()


1
जब तक आप gअंदर नहीं बुलाते g, हम जेएस जवाब को हटाने की अनुमति देते हैं g=। इसके अलावा, आप एक युगल बाइट्स को एक eval पर स्विच करके और उसे निकालकर बचा सकते हैं return: Fiddle
स्टीफन

@StepHen eval () विचार और JS नियमों के लिए धन्यवाद, क्योंकि AS3 ने evalade () मना किया था, मुझे लगा कि मैं अब और उपयोग नहीं कर सकता
Shieru Asakoto

खैर, यह अभी भी काम करता है, और हम कार्यान्वयन द्वारा भाषा को परिभाषित करते हैं: पी
स्टीफन

1
searchआपको बाइट्स से बचाएगा indexOf
शैगी

@ शिग्गी यह काम किया, खोज विचार के लिए धन्यवाद;)
शायरु असाकोटो


3

पायथन 2 , 320 318 314 311 307 बाइट्स

इनपुट प्रारूप - स्ट्रिंग्स की सूची। पूरा कार्यक्रम:

i=input()
t=[x.split()for x in"Lo Um On Ee Pal Mon|Ya Vi Oh Ful Des Zo|Ven Ew Kath Ir Bro Gor|Ku Ros Dain Neta Ra Sar".split('|')]
c=t[0].index(i[0])+1;r=c+1;s=c+r*(t[1].index(i[1])+2)/2
if len(i)>2:s+=r*(t[2].index(i[2])+4-(i[2]=='Bro'))/2
if len(i)>3:s+=r*(t[3].index(i[3])+1+(i[3]in'KuRaSar'))/2
print(s)

इसे ऑनलाइन आज़माएं!


1
मैंने इस तरह की गोल्फ को छोड़ दिया है, इसलिए जो कोई भी गोल्फिंग विचार रखता है वह अपने आप में संपादित करने के लिए स्वागत है
श्री एक्सकोडर

3

एक्सेल, 339 बाइट्स

के A1माध्यम से इनपुट दर्ज किए गए D1। किसी अन्य सेल में सूत्र।

=CHOOSE(MOD(CODE(A1),12),2,,,1,6,,3,5,4)+INT((CHOOSE(MOD(CODE(A1),12),2,,,1,6,,3,5,4)+1)*CHOOSE(MOD(CODE(B1),12),,3,,,2,7,4,6,,5)/2)+INT((CHOOSE(MOD(CODE(A1),12),2,,,1,6,,3,5,4)+1)*CHOOSE(MOD(CODE(C1),12),7,4,6,,,7,,,5,,9)/2)+INT((CHOOSE(MOD(CODE(A1),12),2,,,1,6,,3,5,4)+1)*CHOOSE(MOD(CODE(SUBSTITUTE(D1,"Ra","E")),11),4,3,6,,2,7,,,2,0)/2)

वैकल्पिक रूप से, CSV के रूप में आयात किया जा रहा है:

एक्सेल और सीएसवी, 228 बाइट्स

,,,
=CHOOSE(MOD(CODE(A1),12),2,,,1,6,,3,5,4)+1
=A2-1+INT(A2*CHOOSE(MOD(CODE(B1),12),,3,,,2,7,4,6,,5)/2)+INT(A2*CHOOSE(MOD(CODE(C1),12),7,4,6,,,7,,,5,,9)/2)+INT(A2*CHOOSE(MOD(CODE(SUBSTITUTE(D1,"Ra","E")),11),4,3,6,,2,7,,,2,0)/2)

SPACEनल के लिए पहली पंक्ति में इनपुट दर्ज किया गया । परिणाम A3 में प्रदर्शित होते हैं।


2

SCALA, 1106 chars, 1106 बाइट्स

यह काफी लंबा है, शायद अनुकूलन योग्य है, लेकिन यह करने के लिए मजेदार था :)

इनपुट प्रारूप : एक स्ट्रिंग में अंतरिक्ष-पृथक रन। यदि केवल 2 इनपुट हैं (जैसे "लो फुल") तो मेरा कोड इसे पूरा करता है while(k.length<4)k:+=""(इसलिए मैं मापदंडों को बदलकर 24 बाइट बचा सकता हूं , अगर मुझे "एबीसी डी" होने की आवश्यकता है)।

def n(i:Int,p:String):Int={Math.floor(i*((""+p(0)).toInt+1)/2).toInt}
def m(s:String):Int={var k=s.split(' ')

while(k.length<4)k:+=""

k match{case Array(p,i,f,a)=>{p match{case "Lo"=>1+m(1+"/ "+i+" "+f+" "+a)
case "Um"=>2+m(2+"/ "+i+" "+f+" "+a)
case "On"=>3+m(3+"/ "+i+" "+f+" "+a)
case "Ee"=>4+m(4+"/ "+i+" "+f+" "+a)
case "Pal"=>5+m(5+"/ "+i+" "+f+" "+a)
case "Mon"=>6+m(6+"/ "+i+" "+f+" "+a)
case _ if p.contains("/")=>i match{case "Ya"=>n(2,p)+m(p+" / "+f+" "+a)
case "Vi"=>n(3,p)+m(p+" / "+f+" "+a)
case "Oh"=>n(4,p)+m(p+" / "+f+" "+a)
case "Ful"=>n(5,p)+m(p+" / "+f+" "+a)
case "Des"=>n(6,p)+m(p+" / "+f+" "+a)
case "Zo"=>n(7,p)+m(p+" / "+f+" "+a)
case _ if p.contains("/")=>f match{case "Ven"=>n(4,p)+m(p+" / "+"/ "+a)
case "Ew"=>n(5,p)+m(p+" / "+"/ "+a)
case "Kath"=>n(6,p)+m(p+" / "+"/ "+a)
case "Ir"=>n(7,p)+m(p+" / "+"/ "+a)
case "Bro"=>n(7,p)+m(p+" / "+"/ "+a)
case "Gor"=>n(9,p)+m(p+" / "+"/ "+a)
case _ if p.contains("/")=>a match{case "Ku"=>n(2,p)
case "Ros"=>n(2,p)
case "Dain"=>n(3,p)
case "Neta"=>n(4,p)
case "Ra"=>n(6,p)
case "Sar"=>n(7,p)
case _=>0}
case _=>0}
case _=>0}
case _=>0}}}}

इस शानदार चुनौती के लिए धन्यवाद। इसे ऑनलाइन आज़माएं!


@Arnauld मैंने सिर्फ अपने कोड के बारे में कुछ देखा: यह वास्तव में जाँच नहीं करता है कि क्या चीज मौजूद है! मेरा मतलब है, अगर मैं "लो हू गोर" इनपुट करता हूं तो यह 5 आउटपुट देता है! क्या यह सही है? या मुझे इसे ठीक करना चाहिए?
वी। कोर्टोइस

यह ठीक है क्योंकि "रून्स वैध होने की गारंटी है" (दूसरा नियम)।
अरनुलद

ओह सच :) मैंने यह बिना सोचे समझे किया इसलिए मैं यह नियम भूल गया। एक बार फिर धन्यवाद।
वी। कोर्टोइस

2

शेक्सपियर प्रोग्रामिंग लैंग्वेज , 4420 बाइट्स

,.Ajax,.Ford,.Page,.Puck,.Romeo,.Act I:.Scene I:.[Enter Romeo and Page]Page:You big big big big big big cat.[Exit Romeo][Enter Ajax]Page:Open thy mind!Ajax:Open thy mind!Open thy mind!You is the sum of Romeo and the sum of a big big cat and a cat.Am I as big as you?If not,let us return to Scene V.Page:You is the sum of a big big cat and a cat.Let us return to Act V.Scene V:.Ajax:You is the sum of you and the sum of a big big big cat and a pig.Am I as big as you?If not,let us return to Scene X.Page:You big cat.Let us return to Act V.Scene X:.Ajax:You is the sum of you and the sum of a big cat and a cat.Am I as big as you?If not,let us return to Scene L.Page:You big big cat.Let us return to Act V.Scene L:.Ajax:You is the sum of you and the sum of a big big cat and a big cat.Am I as big as you?If not,let us return to Scene C.Page:You is the sum of a big cat and a cat.Let us return to Act V.Scene C:.Ajax:Am I as big as the sum of you and a big big big pig?Page:You is the sum of a big big cat and a big cat.If so,you is the sum of you and a cat.Ajax:Open thy mind!Act V:.Scene I:.[Exit Ajax][Enter Ford]Page:Open thy mind!Ford:Open thy mind!Open thy mind!You is the sum of Romeo and the sum of a big big big big cat and a pig.Am I as big as you?If not,let us return to Scene V.Page:You big big cat.Let us return to Act X.Scene V:.Ford:You is the sum of you and the sum of a big big big cat and a pig.Am I as big as you?If not,let us return to Scene X.Page:You is the sum of a big cat and a cat.Let us return to Act X.Scene X:.Ford:You is the sum of you and a big big cat.Am I as big as you?If not,let us return to Scene L.Page:You is the sum of a big big big cat and a pig.Let us return to Act X.Scene L:.Ford:Am I as big as the sum of you and a pig?If not,let us return to Scene C.Page:You big cat.Let us return to Act X.Scene C:.Ford:Am I as big as the sum of Romeo and a big big cat?Page:You is the sum of a big big cat and a cat.If so,you is the sum of you and a cat.Ford:Open thy mind!Act X:.Scene I:.[Exit Page][Enter Puck]Ford:You is the sum of the sum of Ajax and a pig and the quotient between the product of Ajax and I and a big cat.Puck:Open thy mind!Is you as big as a pig?If so,let us return to Act D.[Exit Puck][Enter Page]Ford:Open thy mind!Open thy mind!You is the sum of Romeo and the sum of a big big cat and a cat.Am I as big as you?If not,let us return to Scene V.Page:You is the sum of a big big cat and a cat.Let us return to Act L.Scene V:.Ford:Am I as big as the sum of you and a big big cat?If not,let us return to Scene X.Page:You is the sum of a big big big cat and a pig.Let us return to Act L.Scene X:.Ford:Open thy mind!Am I as big as the sum of Romeo and a big cat?If not,let us return to Scene L.Page:You is the sum of a big big big cat and a pig.Let us return to Act L.Scene L:.Ford:You is the sum of Romeo and the sum of a big big big cat and a pig.Am I as big as you?If not,let us return to Scene C.Page:You is the sum of a big big big cat and a cat.Let us return to Act L.Scene C:.Ford:Am I as big as the sum of you and a big big cat?If so,let us return to Scene D.Page:You big big cat.Let us return to Act L.Scene D:.Page:Open thy mind!You is the sum of a big big cat and a big cat.Act L:.Scene I:.[Exit Page][Enter Puck]Ford:You is the sum of you and the quotient between the product of Ajax and I and a big cat.Puck:Open thy mind!Is you as big as a pig?If so,let us return to Act D.[Exit Puck][Enter Page]Ford:You is the sum of Romeo and a big big cat.Am I as big as you?If not,let us return to Scene V.Page:You is the sum of a big cat and a cat.Let us return to Act C.Scene V:.Ford:You is the sum of you and the sum of a big big big cat and a pig.Am I as big as you?If not,let us return to Scene X.Page:You big cat.Let us return to Act C.Scene X:.Ford:Am I as big as the sum of you and the sum of a big cat and a cat?If not,let us return to Scene L.Page:You big big cat.Let us return to Act C.Scene L:.Ford:Am I as big as the sum of you and a big big big cat?If not,let us return to Scene C.Page:You is the sum of a big big big cat and a pig.Let us return to Act C.Scene C:.Page:Open thy mind!Is you as big as the sum of Romeo and a cat?You big cat.If so,you is the sum of you and a big big cat.Act C:.Scene I:.[Exit Page][Enter Puck]Ford:You is the sum of you and the quotient between the product of Ajax and I and a big cat.Act D:.Scene I:.Ford:Open thy heart![Exeunt]

इनपुट को अपरकेस स्ट्रिंग के रूप में लेता है।

स्पष्टीकरण जल्द ही आ रहा है ... अभी के लिए, मजेदार तथ्य: Microsoft एसपीएल में एक नकारात्मक संज्ञा है। अन्य सभी स्वीकृत शब्द शेक्सपियर की रचनाओं में दिखाई दिए।

इसे ऑनलाइन आज़माएं!


1

जावा (ओपनजेडके 8) , 252 बाइट्स

r->{int c[][]={{2,3,4,5,6,7},{4,5,6,7,7,9},{2,2,3,4,6,7}},l=r.length,p="LUOEPM".indexOf(r[0].charAt(0))+1,a=p,i=0;String[]s={"YVOFDZ","VEKIBG","KRDNXS"};for(;i<l-1;)a+=(p+1)*c[i][s[i++].indexOf((l>3?r[i].replace("Ra","X"):r[i]).charAt(0))]/2;return a;}

इसे ऑनलाइन आज़माएं!

रन केस इनपुट हैं String[](सरणी String), पहले मामले के रूप में (पहला अक्षर एक अपरकेस है, बाकी लोअरकेस है)।

यह मानक "एन-वें पत्र लगता है" विधि है, ट्विस्ट के साथ है कि दोनों Rosऔर Ra4 खंड में मौजूद हैं। मुझे लगता है कि इलाज किया एक इनलाइन और की स्पष्ट प्रतिस्थापन के साथ Raकरने के लिए X


1

रेटिना , 124 123 बाइट्स

Gor
9
[ZIBS]\w+
7
Mon|Des|Kath|Ra
6
..l|Ew
5
Ee|Oh|Ven|Neta
4
[OVD]\w+
3
[UYKR]\w+
2
Lo
1
\d
$*
(?<=^(1+) .*1)
$1
\G1
11
11

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण के मामले शामिल हैं। अंतरिक्ष-पृथक रन बनाता है। स्पष्टीकरण: प्रारंभिक चरण बस प्रत्येक रन को एक अंक में बदल देते हैं, जिसे बाद में यूरीरी में बदल दिया जाता है। पहली संख्या के बाद की संख्या को पहले संख्या से एक से अधिक गुणा किया जाता है, जिसके बाद पहली संख्या दोगुनी हो जाती है। अंतिम चरण पूर्णांक 2 से सभी परिणाम को विभाजित करता है और योग लेता है।


1

सी, 274

#define c(p,r,x)(p+1)*b(r[x+1],x*17)/2
i;char*a="& ; $ # 4 %        ; B * 6 $ 8          6 5 - >3  +  A@( .   6 5    ";b(r,s)char*r;{for(i=0;i<17;i++)if(a[i+s]-3==(r[0]^r[1]))return i/2+1;return 0;}main(n,r)char**r;{n=b(r[1],0);printf("%d\n",n+c(n,r,1)+c(n,r,2)+c(n,r,3));}

अधिक असंगठित:

#include<stdio.h>
char*a="& ; $ # 4 %      "
       "  ; B * 6 $ 8    "
       "      6 5 - >3  +"
       "  A@( .   6 5    ";
int b(char*r,int s){
  for(int i=0;i<17;i++)
    if(a[i+s]-3==(r[0]^r[1]))
      return i/2+1;
  return 0;
}
#define c(p,r,i)(p+1)*b(r[i+1],i*17)/2
int main(int n,char**r){
  int x=b(r[1],0);
  printf("%d\n",x+c(x,r,1)+c(x,r,2)+c(x,r,3));
}

आपको चार कमांड लाइन तर्क की आपूर्ति करने की आवश्यकता है - इसलिए पहले परीक्षण मामले के लिए जिसे आपको चलाने की आवश्यकता है ./a.out Lo Ful "" ""



1

जाओ, 205 बाइट्स

func c(s []string)int{f,l:=strings.IndexByte,len(s)
p:=f("UOEPM",s[0][0])+3
r:=p-1+p*(f("VOFDZ",s[1][0])+3)/2
if l>2{r+=p*(f("war o",s[2][1])+5)/2}
if l>3{r+=p*(f("it Ra",s[3][len(s[3])-2])+3)/2}
return r}

यह एक कॉल करने योग्य कार्य है, स्ट्रिंग्स के एक स्लाइस के रूप में रन लेता है, जैसे []string{"Um", "Ful"}

इसे गो प्लेग्राउंड पर आज़माएं ।


0

हास्केल, 623 बाइट्स

संख्यात्मक वूडू के बजाय ADTs का उपयोग करना।

नोट: के लिए 36 जोड़ें {-# LANGUAGE GADTs,ViewPatterns #-}

  • स्कोर की गणना यह मानकर की जाती है कि इसे संकलित / चलाया जाता है -XGADTs -XViewPatterns
data P=Lo|Um|On|Ee|Pal|Mon deriving(Enum,Read,Eq)
data E=Ya|Vi|Oh|Ful|Des|Zo deriving(Enum,Read,Eq)
data F=Ven|Ew|Kath|Ir|Bro|Gor deriving(Enum,Read,Eq)
data C=Ku|Ros|Dain|Neta|Ra|Sar deriving(Enum,Read,Eq)
data S where
  S::P->E->S
  Q::P->E->F->S
  R::P->E->F->C->S
k(a:b:x)=let{p=read a;e=read b}in case x of{[]->S p e;[c]->Q p e(read c);[c,d]->R p e(read c)(read d)}
c,d::Enum a=>a->Int
c=succ.fromEnum
d=(+2).fromEnum
e Bro=7
e x=(+2).d$x
f x|c x`elem`[1,5,6]=d x|2>1=c x
g p f x =(`div`2).(*f x).succ$c p
h(S x y)=c x+g x d y
h(Q x y z)=h(S x y)+g x e z
h(R x y z t)=h(Q x y z)+g x f t
main=print.h.k.words=<<getLine

इनपुट: एकल स्ट्रिंग सामान्य स्ट्रिंग के रूप में

Lo Ful

Um Ful

अंतिम पंक्ति को बदलकर बहुपरत किया जा सकता है

main=interact$unlines.map(show.h.k.words).lines

लेकिन यह बाइट्स को गिनती में जोड़ देगा

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