ভূখণ্ডের পুনঃব্যবস্থা


12

অ্যাডভান্স ওয়ারস, ওয়ারগ্রোভ এবং ফায়ার প্রতীকের মতো টার্ন-ভিত্তিক কৌশল গেমগুলি বিভিন্ন ভূখণ্ডের বর্গ গ্রিডের সমন্বয়ে বিভক্ত আন্দোলনের শ্রেণির ইউনিটগুলির সাথে রয়েছে প্রতিটি অঞ্চলের প্রকারের জন্য বিভিন্ন ব্যয়ের প্রয়োজন হয়। আমরা সেই সমস্যার একটি সাবসেট তদন্ত করব।

চ্যালেঞ্জ

আপনার কাজটি নির্ধারণ করা হয় যে ভূখণ্ডের ব্যয়ের গ্রিড এবং চলাফেরার গতি দিয়ে কোনও অবস্থান অন্য স্থান থেকে পৌঁছানো যায় কিনা।

ইউনিটগুলি কেবলমাত্র orthogonally স্থানান্তর করতে পারে যেখানে একটি বর্গক্ষেত্রের দিকে যাওয়ার ব্যয়টি গ্রিডের সংশ্লিষ্ট কক্ষের মূল্য (সরানো বন্ধ হয় বিনামূল্যে)) উদাহরণস্বরূপ, 3 মূল্যের একটি ঘর থেকে 1 মূল্যবান একটি কক্ষে চলে যাওয়ার জন্য 1 চলাচল করতে হয়, তবে অন্য পথে যেতে হয় 3.. কিছু স্কোয়ার অ্যাক্সেসযোগ্য হতে পারে।

উদাহরণ

1 [1] 1  1  1
1  2  2  3  1
2  3  3  3  4
1  3 <1> 3  4

থেকে মুভিং [1]করতে <1>নেমে তিন সঠিক বর্গ এবং তারপর চলন্ত 7 আন্দোলন পয়েন্ট ন্যূনতম প্রয়োজন। সুতরাং, যদি গতিবেগের গতি হিসাবে 6 বা তার কম দেওয়া হয় তবে আপনার একটি মিথ্যা উত্তর আউটপুট করা উচিত।

উদাহরণ পরীক্ষার ক্ষেত্রে

পার্সিংকে আরও সহজ করার জন্য এগুলি শুরু এবং শেষের জন্য বন্ধনীযুক্ত কক্ষগুলির পরিবর্তে শীর্ষ-বাম-উত্স শূন্য-সূচকযুক্ত (সারি, কলাম) স্থানাঙ্ক ব্যবহার করবে। অ্যাক্সেসযোগ্য কোষগুলির সাথে প্রতিনিধিত্ব করা হবেX

কেস 1 এ

1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (2, 3) to (0, 1)

Output: True

কেস 1 বি

1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 4
From (2, 3) to (0, 1)

Output: False

কেস 1 সি

1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (0, 1) to (2, 3)

Output: False

কেস 2 এ

3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (3, 4) to (2, 1)

Output: True

কেস 2 বি

3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 4
From (3, 4) to (2, 1)

Output: False

কেস 2 সি

3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (1, 8) to (2, 7)

Output: True

কেস 3 এ

2 1 1 2
2 3 3 1
Speed: 3
From (0, 0) to (1, 1)

Output: False

কেস 3 বি

2 1 1 2
2 3 3 1
Speed: 3
From (1, 1) to (0, 0)

Output: True

বিধি, অনুমান এবং নোট

  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয়েছে, আই / ও যে কোনও সুবিধাজনক বিন্যাসে থাকতে পারে
  • আপনি ধরে নিতে পারেন স্থানাঙ্কগুলি গ্রিডে রয়েছে
  • চলাফেরার গতি কখনই 100 এর বেশি হবে না
  • অ্যাক্সেসযোগ্য কক্ষগুলি খুব বড় সংখ্যক (যেমন 420, 9001, 1 মিলিয়ন) বা 0 বা নাল, যা আপনার জন্য সবচেয়ে সুবিধাজনক তা দিয়ে প্রতিনিধিত্ব করা যেতে পারে।
  • সমস্ত ইনপুটগুলি ইতিবাচক পূর্ণসংখ্যার সমন্বয়ে গঠিত হবে (অ্যাক্সেসযোগ্য কক্ষগুলি উপস্থাপন করতে নাল বা 0 ব্যবহার না করা)

1
@ লুইসফেলিপডিজেসুস মুনোজ "এগুলি শীর্ষ-বাম-উত্সের শূন্য-
সূচকযুক্ত

আপনি বলেছেন I / O যে কোনও সুবিধাজনক বিন্যাসে থাকতে পারে। এর মধ্যে কি উদাহরণস্বরূপ, মাত্রার সাথে একটি তালিকা / অ্যারে অন্তর্ভুক্ত রয়েছে? আমি বিশ্বাস করি যে এটি সাধারণত অনুমোদিত, তবে এটি একটি স্ট্রিং পার্সিংয়ের মাধ্যমে অবশ্যই অনেকগুলি বাইট সংরক্ষণ করে।
ডিফিউয়ার

@ ডিফিউয়ার, হ্যাঁ অবশ্যই
গরুর মাংসে 27'19

আমি আমার ফোনের এমুলেটরটিতে উন্নত যুদ্ধগুলি ডাউনলোড করেছি ... আমি অত্যন্ত দুঃখিত যে এটি আপনাকে 13 টি টিউটোরিয়াল স্তর করতে বাধ্য করে ... আমি এটি খুব খারাপভাবে পুনরায় খেলতে চেয়েছিলাম তবে আমার ধৈর্যটি পুরানো সিস্টেমগুলিতে টিউটোরিয়াল পাণ্ডার করার জন্য কাগজ পাতলা।
ম্যাজিক অক্টোপাস উরান

উত্তর:


2

টিএসকিউএল কোয়েরি, 205 191 বাইট

ইনপুটটি টেবিলের পরিবর্তনশীল @t

@ x = শুরু xpos, @ y = শুরু ypos @ i = শেষ xpos, @ জে = শেষ ypos @ = গতি

DECLARE @t table(x int,y int,v int)
INSERT @t
values
(0,0,1),(0,1,1),(0,2,2),(0,3,1),(0,4,null),
(1,0,1),(1,1,2),(1,2,2),(1,3,1),(1,4,1),
(2,0,2),(2,1,1),(2,2,1),(2,3,2),(2,4,1),
(3,0,null),(2,1,null),(2,2,null),(2,3,1),(2,4,2)

DECLARE @x INT=2,@y INT=3,@i INT=0,@j INT=1,@ INT=5;

WITH C as(SELECT @y f,@x r,@ s
UNION ALL
SELECT f+a,r+b,s-v FROM C
JOIN(values(1,0),(0,1),(-1,0),(0,-1))x(a,b)ON
s>0JOIN @t
ON f+a=x and r+b=y)SELECT
max(iif(S>=0and f=@j and r=@i,1,0))FROM c

এটি অনাবলিত সংস্করণ অনলাইনে চেষ্টা করে দেখুন


0

পাইথন 2 , 220 বাইট

def f(m,a,w,h,r,c,R,C):
 T=[w*[999]for _ in' '*h];T[r][c]=0;P=[(r,c)];j,k=1,0
 for u,v in P:exec"U,V=u+j,v+k;j,k=-k,j\nif h>U>-1<V<w:q=T[U][V];T[U][V]=min(T[u][v]+m[U][V],q);P+=[(U,V)]*(q>T[U][V])\n"*4
 return a>=T[R][C]

এটি অনলাইন চেষ্টা করুন!

100-এরও বেশি মান হিসাবে একটি mপূর্ণসংখ্যার অ্যারে নেয় 'X'; একটি গতি a, mপ্রস্থ wএবং উচ্চতা h; এবং যেটি আমরা শূন্য-সূচকযুক্ত সারি / কলাম কক্ষে শুরু (r,c)করতে এবং চূড়ান্ত কক্ষে যেতে পারি তার সাথে ফিরে আসে (R,C)

অ্যালগরিদম হ'ল একটি পরিবর্তিত বন্যা ভরাট। কিছুটা অবারিত কোড:

def f(m,a,w,h,r,c,R,C):
 T = [w*[999]for _ in ' '*h] # make an array same size as m, with all 
                             #   values 999, whose values will represent
                             #   the cost of getting to each cell.
 T[r][c] = 0                 # set the starting location to a cost of 0
 P = [(r,c)]                 # initialize a set of cells whose neighbors'
                             #   cost might need to be be updated
 j,k = 1,0                   # and also j,k which will take on values:
                             #  (1,0), (0,1), (-1,0), (0,1), used to 
                             #  probe orthogonal neighbors
 for u,v in P:               # scan the cells in P
    for _ in '1234':         # look at each of 4 orthogonal positions
        U,V = u+j,v+k        # U and V get the indexes of a neighbor 
                             #   of the current cell.
        j,k = -k,j           # this 'rotates' the j,k pairing.
        if h>U>-1<V<w:       # if the coordinates are in bounds...
            q = T[U][V]      # save the current 'cost' of getting to cell (U,V)
                             # see if we can reduce that cost, which is calculated 
                             #   by taking the cost of the currently scanned cell 
                             #   + the value from m for the neighbor cell. 
            T[U][V] = min(T[u][v]+m[U][V] ,q)
                             # if we can reduce the cost, add the neighbor
                             #   to P because **it's** neighbors might,
                             #   in turn, need updating.
            P += [(U,V)]*(q>T[U][V])
 return a>=T[R][C]           # return if speed is enough for the cost.

0

জাভাস্ক্রিপ্ট (ES7),  116  113 বাইট

(matrix)([endRow, endCol])(speed, startRow, startCol)01

m=>e=>o=g=(s,y,x)=>m.map((r,Y)=>r.map((v,X)=>r[s<v|(x-X)**2+(y-Y)**2-1||g(s-v,Y,X,r[X]=1/0),X]=v),o|=y+[,x]==e)|o

এটি অনলাইন চেষ্টা করুন!

মন্তব্য

m =>                        // m[] = matrix
e =>                        // e[] = target coordinates
  o =                       // o   = success flag, initialized to a non-numeric value
  g = (                     // g   = recursive depth-first search function taking:
    s,                      //   s    = speed
    y, x                    //   y, x = starting coordinates
  ) =>                      //
    m.map((r, Y) =>         // for each row r[] at position Y in m[]:
      r.map((v, X) =>       //   for each value v at position X in r[]:
        r[                  //     this statement ultimately updates r[X]:
          s < v |           //       abort if s is less than v
          (x - X) ** 2 +    //       or the quadrance between (x, y)
          (y - Y) ** 2 - 1  //       and (X, Y) is not equal to 1
          || g(             //       otherwise, do a recursive call to g:
               s - v,       //         subtract v from s
               Y, X,        //         pass (Y, X) as the new coordinates
               r[X] = 1 / 0 //         temporarily make this cell unreachable
             ),             //       end of recursive call 
          X                 //       restore r[X] ...
        ] = v               //     ... to its original value
      ),                    //   end of inner map()
      o |= y + [, x] == e   //   set the flag o if (y + ',' + x) matches (e + '')
    ) | o                   // end of outer map(); return o

0

জেলি , 59 বাইট

+2¦µ_2ịæ.ؽœị$Ʋ+5ịƲ$4¦01Ñḣ3Ḋ⁼/Ɗ?ḣ2=/ẸƊoF<0ẸƊƊ?
çⱮØ.,U$;N$¤Ẹ

এটি অনলাইন চেষ্টা করুন!

ভয়াবহভাবে দ্রুত নয়; গতি ইউনিটগুলি ক্লান্ত না হওয়া পর্যন্ত সমস্ত পাথ চেষ্টা করে এমনকি এর পদক্ষেপগুলি প্রত্যাহার করে। যাইহোক, এটি স্থানগুলি পরিদর্শন করা হয়েছে কিনা তা যাচাই করার প্রয়োজনকে এড়িয়ে চলে। ইনপুট হিসাবে সরবরাহ করা হয়[nrows, ncols],[start_row, start_col],[end_row, end_col],speed,flattened matrix column-major

ব্যাখ্যা

সহায়ক লিঙ্ক

+2¦                                       | add the right argument to the second item in the left argument (current location)
   µ                                      | start a new monadic chain with the modified left argument
                    4¦                    | for the fourth item (speed)...
    _                                     |   subtract...
                 ịƲ$                      |     the item located at...
     2ịæ.ؽœị$Ʋ                           |       the dot product of the current position and (number of columns,
                                          |       right-padded with 1)
               +5                         |       plus five
                                        ? | Now, if...
                                       Ɗ  |   next three as a monad
                           ḣ2=/ẸƊ         |   either current row or current column are equal to nrows/ncolumns respectively
                                 o        | or
                                  F<0ẸƊ   |   any value is negative
                 0                        | return zero
                          ?               | else if...
                   ḣ3Ḋ⁼/Ɗ                 | the second and third items (current and end pos) are equal
                  1                       | return 1
                   Ñ                      | else pass the current list back to the main link

প্রধান লিঙ্ক

ç             | call the helper link with the current list...
 Ɱ            |   and each of
  Ø.,U$;N$¤   |   [0,1],[1,0],[0,-1],[-1,0]
           Ẹ  | Check if any are true

0

জেলি , 38 বাইট

ạƝṢ€Ḅ’¬Ạ
ŒṪ’ḟŒPŒ!€ẎW€j¥@€ÇƇḊ€‘œị⁸§Ṃ’<⁵

ভূখণ্ডটি গ্রহণের জন্য একটি অত্যন্ত অখাদ্য পূর্ণ প্রোগ্রাম (101 হিসাবে অযাচিত সাথে) তারপরে শুরু এবং শেষের সমন্বয় হয় তারপরে গতি।

এটি অনলাইন চেষ্টা করুন! (বেশিরভাগ পরীক্ষার মামলায় চেষ্টা করা খুব একটা পয়েন্ট নয়!)

কিভাবে?

"শুরু এবং শেষ ব্যতীত সমস্ত ভূখণ্ডের অবস্থানগুলি" এর প্রতিটি পাওয়ার-সেটগুলির সমস্ত অনুমতিগুলির একটি তালিকা তৈরি করে, এগুলির প্রতিটিকে শুরু এবং শেষের সাথে ঘিরে রাখে, তাদের জন্য ফিল্টারগুলি যা কেবলমাত্র দূরত্বের একক অর্থেগোনাল পদক্ষেপ তৈরি করে, শুরুটি ড্রপ করে প্রতিটি থেকে, ভূখণ্ডে ফিরে সূচকগুলি, প্রত্যেকের যোগফল হয়, সর্বনিম্ন নেয়, একটিকে বিয়োগ করে এবং পরীক্ষা করে যে এটি গতির চেয়ে কম।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.