সংখ্যা সর্পিল সমস্যা


24

একটি সংখ্যা সর্পিল একটি অসীম গ্রিড যার উপরের-বাম বর্গক্ষেত্রটির নম্বর 1 রয়েছে Here এখানে সর্পিলের প্রথম পাঁচটি স্তর রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

আপনার কাজ হ'ল সারি y এবং কলাম x এর সংখ্যা খুঁজে পাওয়া।


উদাহরণ:

Input: 2 3
Out  : 8
Input: 1 1
Out  : 1
Input: 4 2
Out  : 15

বিঃদ্রঃ:

  1. যে কোনও প্রোগ্রামিং ভাষা অনুমোদিত।
  2. এটি একটি চ্যালেঞ্জ তাই সংক্ষিপ্ততম কোড জয়ী।
  3. ভাগ্য সুপ্রসন্ন হোক!

সূত্র: https://cses.fi/problemset/task/1071


@WW এর অর্থ কী?
চটপটি_ইগল

1
দেখে মনে হচ্ছে আপনার ইনপুটগুলি 1 টি সূচকযুক্ত (স্থানাঙ্কগুলি 1,1 থেকে শুরু হয়) (যদিও এটি পরীক্ষার কেসগুলি থেকে অনুধাবন করতে হবে) আমরা কি 0 টি সূচক ব্যবহার করতে পারি (স্থানাঙ্কগুলি 0,0 থেকে শুরু হয়)?
গম উইজার্ড

4
এ নিয়ে যুক্তি কী?
গম উইজার্ড

7
আমি মনে করি যে স্থানাঙ্কগুলি (1, 1) এ শুরু হওয়া একেবারে ঠিক আছে, বিশেষত যদি প্রোগ্রামটি সেভাবে সিএসইএসে পোস্ট করা হয়, এবং ওপিকে এটি সমর্থন করার দরকার নেই। আমি মনে করি এখানকার গল্ফাররা কিছুটা স্বেচ্ছাচারী স্বাধীনতার অভ্যস্ত হয়ে উঠছে।
লিন

2
@ লিন আমি দ্বিতীয়
সেটিকে

উত্তর:


19

সি (জিসিসি),  44  43 বাইট

f(x,y,z){z=x>y?x:y;z=z*z-~(z%2?y-x:x-y)-z;}

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

সর্পিলটির বেশ কয়েকটি "বাহু" রয়েছে:

12345
22345
33345
44445
55555

অবস্থান আর্ম সর্বাধিক ( x , y ) (ভেরিয়েবলের জন্য নির্ধারিত ) এ অবস্থিত । তারপরে, আর্ম এন এ সর্বাধিক সংখ্যা হ'ল এন 2(x,y)max(x,y)znn2 , বাহু থেকে নীচে বাঁদিকের এরপর উপরের ডান অবস্থানে হচ্ছে মধ্যে যা পরিবর্তন ঘটান। থেকে বিয়োগ করে ক্রমটি আর্ম সহ প্রবাহিত করে , সুতরাং আমরা এর ভিত্তিতে উপযুক্ত চিহ্নটি বেছে নিই এর সমতা, 0 থেকে শুরু করে অনুক্রম পেতে দ্বারা সামঞ্জস্য করুন এবং এ থেকে মানটি বিয়োগ করুনy - n + 1 , - n + 2 , , - 1 , 0 , 1 , , এন - 1 , এন - 2 এন এনxyn+1,n+2,,1,0,1,,n1,n2nnএন 2n1n2

বাইট সংরক্ষণের জন্য মিঃ এক্সকোডারকে ধন্যবাদ ।


f(x,y,z){z=x>y?x:y;z=z*z-~(z%2?x-y:y-x)-z;}1 বাইট সাশ্রয় করে।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার ঝরঝরে কৌশল, ধন্যবাদ!
ডুরকনব


3
@RobertS। হ্যাঁ, আমি নির্ধারিত ফাংশনটি এটিই করে ( টিআইও-তে কোড বিভাগে)। উদাহরণস্বরূপ, f(1, 1)মানটি প্রদান করে 1পাদলেখ বিভাগের মাধ্যমে loops এক্স = 1 5 এবং y = 1 থেকে 5 এর মাধ্যমে এমন সব মানের জন্য ফাংশন কল এবং প্রকট যে ফাংশন প্রশ্নে দেখানো সমস্ত ইনপুট জন্য সঠিক একটি গ্রিড তার আউটপুট ছাপে।
ডুরকনব

1
@ অগিল_এগল ফাংশনটি নম্বরটি ফিরিয়ে দেয় (এটি সর্পিল আউটপুট দিতে পারে না - এটিতে কোনও লুপও নেই!)।
ডুরকনব

7

পাইথন,  54   50  49 বাইট

def f(a,b):M=max(a,b);return(a-b)*(-1)**M+M*M-M+1

-চ্যাসব্রাউনকে -4 বাইট ধন্যবাদ

-১ বাইট @ শ্যাগি কে ধন্যবাদ

অনলাইনে চেষ্টা করে দেখুন!

প্রথমবার গল্ফিং! আমি সচেতন চেয়ে বেশি এটি সর্বোত্তম নয়, যাই হোক না কেন।

মূলত @ ডুরকনব সি কোডের মতো একই নীতিতে চলে।


2
পিপিসিজিতে আপনাকে স্বাগতম! এই ক্ষেত্রে আপনি ব্যবহার 4 বাইট সংরক্ষণ করতে পারবেন def f(a,b):পদ্ধতির দেখতে এখানে
চ্যাস ব্রাউন 21

@ চাসব্রাউন খুব আকর্ষণীয়, আপনাকে ধন্যবাদ!
ডন হাজার হাজার

@ শেগি আপনাকে ধন্যবাদ! আমি কয়েকটি চ্যালেঞ্জ পোস্ট করেছি, তবে গল্ফের পক্ষে কখনও ভাল হয়নি
ডন হাজার হাজার

সেক্ষেত্রে, গল্ফ স্বাগতম! :) আমি পাইথন লোক নই তবে আমি নিশ্চিত M**2যে প্রতিস্থাপন করা যায় M*M
শেগি

@ শেগি আপনাকে ধন্যবাদ! এখনই ঠিক হয়ে যাবে
ডন হাজার হাজার

7

এমএটিএল , 15 বাইট

X>ttq*QwoEqGd*+

এটি অনলাইন চেষ্টা করুন!
ম্যাট্রিক্স হিসাবে সংগ্রহ করুন এবং মুদ্রণ করুন

কিভাবে?

সম্পাদনা: @ ডুরকনব এর উত্তর হিসাবে একই কৌশলটি সবেমাত্র অন্যরকম এসেছিল।

সর্পিলের তির্যক উপাদানগুলির মধ্যে পার্থক্যটি পাটিগণিত ক্রম । এর n পদগুলির যোগফল হ'ল এন ( এন - 1 ) (সাধারণ এপি সূত্রে)। এই যোগফলটি 1 দ্বারা বর্ধিত, ত্রিভুজ উপাদানকে অবস্থান ( এন , এন ) দেয়0,2,4,6,8,nn(n1)(n,n)

প্রদত্ত , আমরা এই দুটিয়ের সর্বাধিক সন্ধান করি, যা এই বিন্দুটির সাথে সম্পর্কিত সর্পিলটির "স্তর"। তারপরে, আমরা সেই স্তরের তির্যক মানটি v = n ( n - 1 ) + 1 হিসাবে পাই । এমনকি স্তরগুলির জন্য, ( x , y ) এর মানটি তখন v + x - y , বিজোড় স্তরগুলির জন্য v - x + y হয়(x,y)v=n(n1)+1(x,y)v+xyvx+y

X>        % Get the maximum of the input coordinates, say n
ttq*      % Duplicate that and multiply by n-1
Q         % Add 1 to that. This is the diagonal value v at layer n
wo        % Bring the original n on top and check if it's odd (1 or 0)
Eq        % Change 1 or 0 to 1 or -1
Gd        % Push input (x, y) again, get y - x
*         % Multiply by 1 or -1
          % For odd layers, no change. For even layers, y-x becomes x-y
+         % Add that to the diagonal value v
          % Implicit output

বিকল্প 21 বাইট সমাধান:

Pdt|Gs+ttqq*4/QJb^b*+

এটি অনলাইন চেষ্টা করুন! উপরের থেকে
ম্যাট্রিক্স হিসাবে সংগ্রহ করুন এবং মুদ্রণ করুন
, আমরা জানি যে আমরা ফাংশনটি চাই

f=m(m1)+1+(1)m(xy)

যেখানে m=max(x,y)

কিছু প্রাথমিক গণনা দেখায় যে সর্বাধিক দুটি সংখ্যার জন্য একটি এক্সপ্রেশন

m=max(x,y)=x+y+abs(xy)2

f

f=(xy)ik+14((k2)k)+1

k=abs(xy)+x+y

এটি সমাধানটি কার্যকর করে ফাংশন।


5

Japt , 16 বাইট

কয়েক বিয়ারের উপরে ডুরকনব এর সমাধান থেকে গৃহীত।

wV
nU²ÒNr"n-"gUv

চেষ্টা করে দেখুন


ব্যাখ্যা

                  :Implicit input of integers U=x and V=y
wV                :Maximum of U & V
\n                :Reassign to U
 U²               :U squared
   Ò              :-~
      "n-"        :Literal string
           Uv     :Is U divisible by 2? Return 0 or 1
          g       :Get the character in the string at that index
    Nr            :Reduce the array of inputs by that, where n is inverse subtraction (XnY = Y-X)
n                 :Subtract U from the result of the above

3

পাইথ, 20 বাইট

A~Qh.MZQh-+*-GH^_1Q*

পরীক্ষা স্যুট

রুশভ মেহতার প্রায় আক্ষরিক অনুবাদ জবাবের

ব্যাখ্যা:
A~Qh.MZQh-+*-GH^_1Q*    | Full code
A~Qh.MZQh-+*-GH^_1Q*QQQ | Code with implicit variables filled
                        | Assign Q as the evaluated input (implicit)
A                       | Assign [G,H] as
 ~Q                     |  Q, then assign Q as
   h.MZQ                |   Q's maximal value.
                        | Print (implicit)
        h-+*-GH^_1Q*QQQ |  (G-H)*(-1)^Q+Q*Q-Q+1




2

05 এ বি 1 ই , 12 11 বাইট

ZÐ<*>ŠGR}¥+

-1 বাইট ধন্যবাদ @ এমিগানায় পরিবর্তন Èiকরার জন্য G

এর বন্দর @ সুন্দর এর এমএটিএল উত্তর, তাই তাকে upvote নিশ্চিত করুন!

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Z              # Get the maximum of the (implicit) input-coordinate
               #  i.e. [4,5] → 5
 Ð             # Triplicate this maximum
  <            # Decrease it by 1
               #  i.e. 5 - 1 → 4
   *           # Multiply it
               #  i.e. 5 * 4 → 20
    >          # Increase it by 1
               #  i.e. 20 + 1 → 21
     Š         # Triple swap the top threes values on the stack (a,b,c to c,a,b)
               #  i.e. [4,5], 5, 21 → 21, [4,5], 5
      G }      # Loop n amount of times
       R       #  Reverse the input-coordinate each iteration
               #   i.e. 5 and [4,5] → [5,4]→[4,5]→[5,4]→[4,5] → [5,4]
         ¥     # Calculate the delta of the coordinate
               #  [5,4] → [1]
          +    # And add it to the earlier calculate value (output the result implicitly)
               #  21 + [1] → [22]

1
Èiহতে পারে G
এমিগানা

ইমেনা ওহ স্মার্ট, ধন্যবাদ! : ডি
কেভিন ক্রুইজসেন

0

পাস্কাল (এফপিসি) , 90 বাইট

uses math;var x,y,z:word;begin read(x,y);z:=max(x,y);write(z*z-z+1+(1and z*2-1)*(y-x))end.

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

ডুরকনব এর উত্তর পোর্ট , তবে সূন্দর এর উত্তর আমাকে ধারণা দিয়েছে z mod 2*2-1যার জন্য আমি 1and z*2-1স্থান সরাতে রূপান্তরিত হয়েছি ।




0

জাভাস্ক্রিপ্ট (ES6), 46 বাইট

f=(r,c,x)=>r<c?f(c,r,1):r%2-!x?r*r-c+1:--r*r+c

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