Tôi cần bao nhiêu Mana?


33

Dungeon Master là một trong những game nhập vai thời gian thực đầu tiên, được phát hành lần đầu vào năm 1987 trên Atari ST. Trong số những điều thú vị khác vào thời điểm đó, nó cung cấp một hệ thống chính tả khá tinh vi dựa trên rune.

Nhiệm vụ của bạn hôm nay là viết một chương trình hoặc chức năng đánh giá số điểm Mana cần có để sử dụng một câu thần chú nhất định trong Dungeon Master.

Ảnh chụp màn hình Dungeon Master

Hệ thống 'cast cast' là hộp màu lục bên phải trên cùng trong hình trên.

Phép thuật, rune và Mana

Các phép thuật của Dungeon Master bao gồm từ 2 đến 4 rune, được chọn trong số các loại sau, theo thứ tự chính xác này:

  1. Quyền lực (bắt buộc)
  2. Ảnh hưởng nguyên tố (bắt buộc)
  3. Mẫu (tùy chọn)
  4. Lớp / Sắp xếp (tùy chọn)

Nó có nghĩa là các phép thuật hợp lệ là:

  • Sức mạnh + Ảnh hưởng nguyên tố
  • Sức mạnh + Ảnh hưởng nguyên tố + Hình thức
  • Sức mạnh + Ảnh hưởng nguyên tố + Hình thức + Lớp / Sắp xếp

Mỗi danh mục chứa 6 rune và mỗi rune có chi phí Mana cơ sở liên quan:

=============================================================================
| 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 |
=============================================================================

Đánh giá chi phí Mana

Chi phí Mana của câu thần chú là tổng chi phí Mana của tất cả các rune:

  • Chi phí của rune Power luôn bằng chi phí cơ bản của nó (từ 1 đến 6).

  • Đối với các rune khác, công thức sau đây được áp dụng:

    chi phí = sàn ((sức mạnh + 1) * cơ sở / 2)

    trong đó năng lượng là chi phí cơ bản của rune Power.

Ví dụ

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

Làm rõ và quy tắc

  • Đầu vào của bạn sẽ bao gồm 2 đến 4 chuỗi chỉ định các rune của chính tả. Bạn có thể lấy chúng ở bất kỳ định dạng hợp lý nào, chẳng hạn như 4 tham số riêng biệt, một chuỗi các chuỗi (ví dụ ['Lo', 'Ful']) hoặc chỉ một chuỗi với dấu phân cách một ký tự bạn chọn (ví dụ 'Lo Ful'). Vui lòng chỉ định định dạng đầu vào được chọn trong câu trả lời của bạn.
  • Các rune được đảm bảo là hợp lệ.
  • Thứ tự của các thể loại phải được tôn trọng. Các danh mục không được sử dụng có thể bị thiếu hoặc được thay thế bằng một số giá trị giả.
  • Bạn có thể chấp nhận các rune ở bất kỳ định dạng nào sau đây: 1. Một chữ in hoa theo sau là chữ thường ( 'Ful') 2. Tất cả chữ thường ( 'ful') 3. Tất cả chữ hoa ( 'FUL'). Nhưng bạn không thể trộn các định dạng khác nhau.
  • Rõ ràng, chúng tôi không quan tâm đến việc liệu phép thuật này có thực sự có tác dụng trong trò chơi hay không (đối với các phép thuật gây tò mò, hữu ích được liệt kê ở đây .)
  • Đây là , vì vậy mã ngắn nhất tính bằng byte sẽ thắng.
  • Và hãy nhớ rằng: Lord Chaos đang theo dõi bạn!

Các trường hợp thử nghiệm

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
Tiếp tuyến - nhưng đối với những người thích hệ thống này, The Magical Land of Wozz là một trò chơi SNES của Nhật Bản (có sẵn bản dịch tiếng Anh) thực hiện gần như cùng một hệ thống - nơi bất kỳ chuỗi chữ cái nào cũng trở thành một câu thần chú. google.co.jp/webhp?ie=UTF-8#q=magical+land+of+wozz
Coty Johnathan Saxman

Tôi có một ký ức mơ hồ khi xem ai đó chơi Dungeon Master (tôi không nghĩ đó là trên ST). Họ đã trang bị cho một trong những chiến binh của mình một sợi dây chuyền ma thuật, và thường thì họ sẽ kiểm tra xem nó có được sạc lại không và liệu có nên sử dụng một loại ma thuật khác mà tôi nghĩ là một loại phép thuật tạo ra ánh sáng, để máy bay chiến đấu có thể sử dụng câu thần chú này cứ sau mười phút hoặc lâu hơn, và cuối cùng đã đạt được một cấp độ trong pháp thuật.
Neil

@Neil Vòng cổ này có lẽ là Đá mặt trăng (+3 Mana) hoặc Mặt dây chuyền Feral (Kỹ năng thuật sĩ +1). Tất cả các mục được liệt kê ở đây .
Arnauld

tập lệnh này sẽ xuất tất cả các kết hợp đầu vào có thể
NieDzejkob

Câu trả lời:


6

SOGL V0.12 , 110 78 byte

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

Hãy thử nó ở đây!

Có thể chơi golf một hoặc hai byte để làm lại mọi thứ

Giải trình:

θ            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
đó là những gì làm cho nó thậm chí còn thú vị hơn
Walfrat

Bạn có thể thêm một lời giải thích?
Máy

@CalculatorFeline Kinda quên câu trả lời này. Có thể sẽ chơi golf và sau đó thêm một lời giải thích
dzaima

17

Python 2 , 135 119 115 byte

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

Hãy thử trực tuyến!

Đầu vào là danh sách các chuỗi từ stdin


Hết hồn ...>. <
Ông Xcoder

Tôi cũng đã sao chép phương thức nhập TIO của bạn vào câu trả lời của tôi, hy vọng bạn không phiền.
Ông Xcoder

@ Mr.Xcoder Bây giờ tôi đã bao gồm tất cả các trường hợp thử nghiệm. Bạn có thể sao chép chúng nếu bạn muốn
ovs

Oo, thực hiện tốt việc lập chỉ mục - tâm trí nếu tôi mượn nó cho giải pháp JS của tôi?
Xù xì

11

05AB1E , 83 82 byte

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

Hãy thử trực tuyến!

-1 cảm ơn Emigna .

SOOOOOOO vô dụng :(

Giải trình:

.•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

Một sân golf nhỏ sẽ là nếu bạn lập chỉ mục .•Y<εΔ•ngay từ đầu, bạn không cần phải tăng chỉ số.
Emigna

@Emigna Ooh chưa có thời gian để thử điều đó ...
Erik the Outgolfer

11

JavaScript (ES6), 157 156 116 112 100 99 97 byte

Đưa đầu vào như một mảng của chuỗi.

a=>a.map(c=>t+=(v=+`27169735020045670435262`[parseInt(c,36)%141%83%50%23],+a?a*v+v>>1:a=v),t=0)|t
  • Đã tiết kiệm được 44 byte bằng cách mượn thủ thuật lập chỉ mục từ giải pháp Python của ovs - nếu bạn nâng cao câu trả lời này, vui lòng nâng cấp câu hỏi đó.
  • Đã lưu 13 byte nhờ Arnauld chỉ ra những gì đáng lẽ phải là một cơ hội rõ ràng để sử dụng một con chim nhạn.

Hãy thử trực tuyến!


Giải trình

Hoo, cậu bé, điều này sẽ rất vui - những lời giải thích của tôi về những giải pháp tầm thường hút vào những lúc tốt nhất! Hãy thử đi ...

a=>

Một hàm ẩn danh lấy mảng làm đối số thông qua tham số a.

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

Giảm các phần tử trong mảng bằng cách chuyển từng phần qua một hàm; các ttham số là tổng chạy, ctham số là chuỗi hiện tại và 0là giá trị ban đầu của t.

parseInt(c,36)

Chuyển đổi phần tử hiện tại từ chuỗi 36 cơ sở sang số nguyên thập phân.

%141%83%50%23

Thực hiện một vài thao tác modulo trên nó.

+`27169735 2  4567 435262`[]

Lấy ký tự từ chuỗi ở chỉ mục đó và chuyển đổi nó thành một số.

v=

Gán số đó cho biến v.

+a?

Kiểm tra nếu biến alà một số. Đối với phần tử đầu tiên asẽ là mảng các chuỗi, cố gắng chuyển đổi nó thành một số sẽ trả về NaN, đó là falsey. Trên mỗi lần vượt qua tiếp theo, asẽ là một số nguyên dương, đó là sự thật.

a*v+v>>1

Nếu alà một số thì chúng ta nhân nó với giá trị của v, thêm giá trị của vvà dịch chuyển các bit của kết quả 1 bit sang bên phải, điều này cho kết quả tương tự như chia cho 2 và sàn.

:a=v

Nếu akhông phải là một số, chúng ta gán giá trị của vnó, nó cũng sẽ cho chúng ta 0thêm vào tổng số của chúng ta trong lần đầu tiên.

t+

Cuối cùng, chúng tôi thêm kết quả từ ternary ở trên vào tổng số đang chạy của chúng tôi.


Bản gốc, 156 byte

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

Bạn có thể lưu thêm một byte bằng cách sử dụng lại: a=>a.reduce((t,c)=>t+(v=+'27169735020045670435262'[parseInt(c,36)%141%83%50%23],+a?a*v+v>>1:a=v),0)(EDIT: đã xóa một nhận xét không liên quan về số nguyên được truyền vào đầu vào - có vẻ như tôi không hiểu rõ thách thức của mình lắm ^^)
Arnauld

Thủ thuật gọn gàng, cảm ơn, @Arnauld. Cố gắng đưa ra một phép tính sẽ cho tôi số lượng chúng tôi lập chỉ mục theo ít byte hơn vào lúc này nhưng không gặp nhiều may mắn.
Xù xì

6

JavaScript, 212 210 207 206 byte

Thuật toán tìm kiếm đơn giản, các chuỗi tìm kiếm chỉ đóng góp vào tổng số byte.

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

Định dạng đầu vào

Mảng chuỗi, mỗi mục là một chuỗi viết hoa đầu tiên. Ví dụ: ["Mon", "Zo", "Ir", "Neta"]

Giải trình

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

Truy vấn này cho các chi phí cơ bản.

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

Khởi tạo 2 biến với mục đầu tiên từ kết quả mảng ở trên và xóa mục đó. Phải được chọn thành số đầu tiên, nếu không nó sẽ được coi là nối chuỗi trong phần tiếp theo.

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

Thêm chi phí của rune không điện vào nguồn điện cơ sở. Dịch chuyển được sử dụng thay vì sàn (blah) / 2.

eval(/*blah*/;p)

Đánh giá kết quả cuối cùng. (Tín dụng: Bước Hen)

Các trường hợp thử nghiệm

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

Chỉnh sửa 1: 212> 210 - Đã xóa một cặp dấu ngoặc

Chỉnh sửa 2: 210> 207 - Cảm ơn Bước Hen đã nhắc nhở về các quy tắc JS và một số gợi ý về cách sử dụng hàm eval (). Vì AS3 cấm sử dụng eval () nên tôi đã không sử dụng nó trong thời gian dài

Chỉnh sửa 3: 207> 206 - Cảm ơn Shaggy vì ý tưởng thay thế indexOf () bằng search ()


1
Trừ khi bạn gọi gbên trong g, chúng tôi cho phép các câu trả lời của JS loại bỏ g=. Ngoài ra, bạn có thể lưu một vài byte bằng cách chuyển nó thành một eval và xóa return: Fiddle
Stephen

@StepHen Cảm ơn ý tưởng eval () và các quy tắc JS, vì AS3 đã cấm eval () Tôi nghĩ rằng tôi không thể sử dụng nó nữa
Shieru Asakoto

Chà, nó vẫn hoạt động và chúng tôi xác định ngôn ngữ bằng cách triển khai: P
Stephen

1
searchsẽ tiết kiệm cho bạn một byte hơn indexOf.
Xù xì

@Shaggy Nó hoạt động, cảm ơn vì ý tưởng tìm kiếm;)
Shieru Asakoto


3

Python 2 , 320 318 314 311 307 byte

Định dạng đầu vào - Danh sách các chuỗi. Chương trình đầy đủ:

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)

Hãy thử trực tuyến!


1
Tôi đã từ bỏ việc chơi golf này, vì vậy bất cứ ai có ý tưởng chơi golf đều được chào đón để tự chỉnh sửa .
Ông Xcoder

3

Excel, 339 byte

Đầu vào được nhập vào A1thông qua D1. Công thức trong bất kỳ tế bào khác.

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

Ngoài ra, nhập dưới dạng CSV:

Excel & CSV, 228 byte

,,,
=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)

Đầu vào được nhập vào hàng đầu tiên, SPACEcho null. Kết quả hiển thị trong A3.


2

SCALA, ký tự 1106, 1106 byte

Điều này khá dài, có thể tối ưu hóa, nhưng thật vui khi làm :)

Định dạng đầu vào : runes phân tách không gian trong một chuỗi. Nếu chỉ có 2 đầu vào (như "Lo Ful"), mã của tôi sẽ hoàn thành nó while(k.length<4)k:+=""(vì vậy tôi có thể lưu 24 byte bằng cách thay đổi các tham số, nếu tôi yêu cầu nó phải là "ABC D").

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}}}}

Cảm ơn vì thử thách tuyệt vời này. Hãy thử trực tuyến!


@Arnauld Tôi chỉ nhận thấy một cái gì đó về mã của tôi: nó không thực sự kiểm tra nếu thứ đó tồn tại! Ý tôi là, nếu tôi nhập "Lo Whoo Gor" thì nó xuất ra 5! Như thế có ổn không? Hay tôi nên sửa cái này?
V. Courtois

Điều đó tốt bởi vì "các rune được đảm bảo là hợp lệ" (quy tắc thứ 2).
Arnauld

Oh đúng :) Tôi đã làm nó mà không suy nghĩ nên tôi quên quy tắc này. Cảm ơn một lần nữa.
V. Courtois

2

Ngôn ngữ lập trình Shakespeare , 4420 byte

,.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]

Lấy đầu vào là một chuỗi chữ hoa.

Sắp có giải thích ... Bây giờ, sự thật thú vị: Microsoft là một danh từ phủ định trong SPL. Tất cả các từ được chấp nhận khác xuất hiện trong các tác phẩm của Shakespeare.

Hãy thử trực tuyến!


1

Java (OpenJDK 8) , 252 byte

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

Hãy thử trực tuyến!

Các rune được nhập dưới dạng String[](mảng String), ở dạng trường hợp đầu tiên (chữ cái đầu tiên là chữ hoa, phần còn lại là chữ thường).

Đó là phương pháp "tìm chữ cái thứ n" tiêu chuẩn, với sự thay đổi cả hai RosRatồn tại trong phân khúc thứ 4. Tôi điều trị rằng với một nội tuyến và thay thế rõ ràng của Rađể X.


1

Võng mạc , 124 123 byte

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

Hãy thử trực tuyến! Liên kết bao gồm các trường hợp thử nghiệm. Mất runes phân tách không gian. Giải thích: Các giai đoạn ban đầu chỉ đơn giản là chuyển đổi mỗi rune thành một chữ số, sau đó được chuyển đổi thành unary. Các số sau số đầu tiên được nhân với một số nhiều hơn số đầu tiên, theo đó số thứ nhất được nhân đôi. Số nguyên giai đoạn cuối chia tất cả kết quả cho 2 và lấy tổng.


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

Vô duyên hơn:

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

Bạn cần cung cấp bốn đối số dòng lệnh - vì vậy đối với trường hợp thử nghiệm đầu tiên, bạn cần chạy ./a.out Lo Ful "" ""



1

Đi, 205 byte

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}

Đây là một hàm có thể gọi được, lấy rune như một lát chuỗi, vd []string{"Um", "Ful"}.

Hãy thử nó trên Sân chơi Go .


0

Haskell, 623 byte

Sử dụng ADT thay vì voodoo số.

LƯU Ý: Thêm 36 cho {-# LANGUAGE GADTs,ViewPatterns #-}

  • Điểm được tính toán giả định rằng nó được biên dịch / chạy với -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

Input: một lỗi chính tả như một chuỗi bình thường, vd

Lo Ful

Um Ful

Đa lớp có thể được thực hiện bằng cách thay thế dòng cuối cùng bằng

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

Nhưng điều này sẽ thêm byte vào số đếm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.