마나가 얼마나 필요합니까?


33

Dungeon Master 는 최초의 1987 년 Atari ST에서 출시 된 최초의 실시간 롤 플레잉 게임 중 하나였습니다. 당분간 다른 흥미로운 것들 중에서 룬을 기반으로 한 다소 정교한 주문 시스템을 제공했습니다.

오늘의 임무는 Dungeon Master에서 주어진 주문을 시전하는 데 필요한 Mana 포인트의 수를 평가하는 프로그램이나 함수를 작성하는 것입니다.

던전 마스터

'주문 캐스트'시스템은 위 그림에서 오른쪽 상단 시안 상자입니다.

주문, 룬 및 마나

던전 마스터 스펠은 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까지).

  • 다른 룬의 경우 다음 공식이 적용됩니다.

    비용 = 바닥 ((힘 + 1) * 기본 비용 / 2)

    여기서 전력 은 전력 룬의 기본 비용입니다.

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'), 모두 소문자 ( '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
접선-그러나이 시스템을 좋아하는 사람들을 위해 Wozz의 Magical Land는 거의 같은 시스템을 구현하는 일본어 SNES 게임입니다 (영어 번역 가능). google.co.jp/webhp?ie=UTF-8#q=magical+land+of+wozz
Coty Johnathan Saxman 2016 년

누군가 던전 마스터를 플레이하는 것을 막연히 기억합니다 (ST에있는 것 같지 않습니다). 그들은 전투기 중 하나에 마법의 목걸이를 장착했으며, 종종 충전 여부를 확인하고, 그렇다면 다른 종류의 룬을 던져서 일종의 가벼운 생산 주문이라고 생각하여 전투기가 캐스팅 할 수있었습니다. 이 주문은 약 10 분마다 끝나고 결국에는 마법사의 레벨에 도달했습니다.
Neil

@Neil이 목걸이는 아마도 Moonstone (+3 Mana) 또는 Pendant Feral (+1 Wizard Skill) 일 것입니다. 모든 항목이 여기 에 나열 됩니다 .
Arnauld

이 스크립트 는 가능한 모든 입력 조합을 출력해야합니다
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*»+

여기 사용해보십시오!

아마도 모든 것을 다시 실행하여 1 ~ 2 바이트를 골프 칠 수 있습니다.

설명:

θ            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

@CalculatorFeline Kinda는이 답변에 대해 잊어 버렸습니다. 아마도 골프를 치고 설명을 추가 할 것입니다
dzaima

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:])

온라인으로 사용해보십시오!

입력은 stdin의 문자열 목록입니다


Outgolfed ...>. <
Mr. Xcoder

TIO 입력 방법을 내 답변에 복사했습니다. 걱정하지 않기를 바랍니다.
Mr. Xcoder 2016 년

@ Mr.Xcoder 이제 모든 테스트 사례가 포함되었습니다. 원하는 경우 복사 할 수 있습니다
ovs

Oo, 색인 작업을 훌륭하게 마쳤습니다. JS 솔루션으로 빌려 주시겠습니까?
얽히고 설킨

11

05AB1E , 83 82 바이트

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

온라인으로 사용해보십시오!

Emigna 에게 -1 감사합니다 .

SOOOOOOO ungolfed :(

설명:

.•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<εΔ•는 처음에 색인을 작성하면 색인 을 증가시킬 필요가 없다는 것입니다.
Emigna 2016 년

@Emigna Ooh는 아직 그것을 시도 할 시간이 없었습니다 ...
Outgolfer Erik

11

자바 스크립트 (ES6) 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
  • ovs의 Python 솔루션 에서 인덱싱 트릭을 빌려서 대량의 44 바이트를 절약했습니다 .
  • Arnauld 가 3 진법을 사용할 수있는 분명한 기회를 지적함으로써 13 바이트를 절약했습니다 .

온라인으로 사용해보십시오!


설명

야, 이봐, 이건 재미있을거야- 사소한 해결책에 대한 나의 설명 은 최고의 시간을 빨아! 한번 해보자 ...

a=>

파라미터를 통해 인수로 배열 복용 익명 함수 a.

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

각각의 함수를 통해 배열의 요소를 줄입니다. t파라미터는 상기 누계 인 c파라미터는 현재의 문자열과 0의 초기 값이다 t.

parseInt(c,36)

현재 요소를 기본 36 문자열에서 10 진 정수로 변환하십시오.

%141%83%50%23

그것에 대한 몇 가지 모듈로 작업을 수행하십시오.

+`27169735 2  4567 435262`[]

해당 색인의 문자열에서 문자를 잡고 숫자로 변환하십시오.

v=

해당 번호를 variable에 지정하십시오 v.

+a?

변수 a가 숫자 인지 확인하십시오 . 첫 번째 요소 a는 문자열 배열이 될 것이므로 숫자로 변환하려고하면 NaNfalse 가 반환됩니다 . 이후의 각 패스에서 a양의 정수가됩니다.

a*v+v>>1

a숫자 인 경우 에는 값에 곱하고, 값을 v더하고 v결과의 비트를 오른쪽으로 1 비트 이동하면 2로 나눈 값과 같은 결과가 나옵니다.

:a=v

경우 a숫자가하지 않은 우리의 가치 부여 v도 우리를 줄 것이다 그것에, 0첫 번째 패스에 우리의 총에 추가합니다.

t+

마지막으로 위의 3 항 결과를 누적 합계에 추가합니다.


원본, 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)(편집 : 제거 입력에 전달 정수에 대한 관련없는 의견을 - 나는 아주 잘 내 자신의 문제를 이해하지 않은 것 같다 ^^)
Arnauld

깔끔한 트릭, @Arnauld. 현재 적은 바이트 수로 색인을 생성하지만 운이 좋지 않은 계산을 제공하려고합니다.
얽히고 설킨

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')

입력 형식

문자열 배열, 각 항목은 첫 글자 대문자 문자열입니다. 예 : [ "Mon", "Zo", "Ir", "Neta"]

설명

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);

비 전력 룬의 비용을 기본 전력에 추가합니다. floor (blah) / 2 대신 shifting이 사용됩니다.

eval(/*blah*/;p)

마지막 결과를 평가하십시오. (크레딧 : Step Hen)

테스트 사례

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 - 감사 단계 편 JS 규칙에 플랜 평가 () 함수를 사용하여 일부 힌트. AS3은 eval () 사용을 금지하므로 오랫동안 사용하지 않았습니다.

편집 3 : 207> 206 - 감사 얽히고 설킨 검색과 같이 IndexOf ()를 대체하는 아이디어에 대한 ()


1
g내부 를 호출하지 않으면 gJS 답변에서를 제거 할 수 g=있습니다. 또한 몇 바이트를 eval로 바꾸고 다음을 제거하여 몇 바이트를 절약 할 수 있습니다 return: Fiddle
Stephen

AS3)을 (평가 후면을 금지 이후 평가 () 아이디어와 JS 규칙에 대한 @StepHen 덕분에, 나는 더 이상 그것을 사용할 수 없습니다 생각
Shieru Asakoto

글쎄, 그것은 여전히 ​​작동하고, 우리는 구현에 의해 언어를 정의한다 : P
Stephen

1
search바이트를 절약 할 수 있습니다 indexOf.
얽히고 설킨

@Shaggy 검색 아이디어 덕분에 효과가있었습니다.)
Shieru Asakoto


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
나는 골프를 포기했다. 그래서 골프 아이디어를 가진 사람은 누구나 스스로 편집 할 수있다 .
Mr. Xcoder 2016 년

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로 가져 오기 :

엑셀 및 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널 (null)의 경우 첫 번째 행에 입력 된 입력 . A3에 결과가 표시됩니다.


2

SCALA, 1106 자, 1106 바이트

이것은 꽤 길고 아마도 최적화 가능하지만 재미있었습니다. :)

입력 형식 : 문자열로 공백으로 구분 된 룬. "Lo Ful"과 같이 2 개의 입력 만있는 경우 내 코드로이를 완료합니다 while(k.length<4)k:+=""(따라서 "ABC D"가 필요한 경우 매개 변수를 변경하여 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 방금 내 코드에 대해 알아 냈습니다. 실제로 존재하는지 확인하지는 않습니다! "Lo Whoo Gor"를 입력하면 5가 출력됩니다. 괜찮아? 아니면 이것을 고쳐야합니까?
V. Courtois 2016 년

"룬은 유효하다" (두 번째 규칙) 이기 때문에 괜찮습니다 .
Arnauld

오 사실 :) 나는 생각하지 않고 그것을 했으므로이 규칙을 잊어 버렸습니다. 다시 감사합니다.
V. Courtois 2016 년

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 SPL의 부정적인 명사입니다. 다른 모든 허용 된 단어는 셰익스피어의 작품에 나타났습니다.

온라인으로 사용해보십시오!


1

자바 (OpenJDK 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) 로 입력됩니다 (첫 번째 문자는 대문자, 나머지는 소문자).

그것은 모두 그 트위스트와 함께, 표준 "n 번째 편지를 찾아"방법의 RosRa제 4 세그먼트에 존재합니다. 나는를 인라인으로 명시 적으로 대체하여 처리 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

C, 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"}.

Go Playground 에서 사용해보십시오 .


0

하스켈, 623 바이트

숫자 부두 대신 ADT 사용

참고 :에 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

그러나 이것은 카운트에 바이트를 추가 할 것입니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.